#!/usr/bin/env python3 """本地启动协议模拟网关,默认仅监听 127.0.0.1。""" import argparse from pathlib import Path import sys sys.path.insert(0, str(Path(__file__).resolve().parents[1])) def main(): parser = argparse.ArgumentParser() parser.add_argument("--data-dir", type=Path, required=True) parser.add_argument("--port", type=int, default=8766) parser.add_argument("--raw-files", action="store_true", help="直接提供测试目录原件,不加载人工转录夹具") parser.add_argument("--agent-code", default="mock-main-fan", help="预先授权的取数身份,无需运行时注册") parser.add_argument('--operating-data-dir',type=Path,default=Path(__file__).resolve().parents[1]/'examples/main_fan', help='显式合成的整机开停和风量JSON所在目录') args = parser.parse_args() import uvicorn from mock_gateway.main_fan import MockState, create_app from mock_gateway.operating_data import load_operating_data state = MockState.from_raw_files(args.data_dir) if args.raw_files else MockState(args.data_dir.resolve()) state.data_agents = {args.agent_code} state.operating_data = load_operating_data(args.operating_data_dir,base_url=f'http://127.0.0.1:{args.port}') state.file_index() uvicorn.run(create_app(state), host="127.0.0.1", port=args.port) if __name__ == "__main__": main()