Appearance
仓库结构
以下为当前仓库实际目录结构:
unet-dt-scheduler/
├── docs/ # VitePress 文档站
│ ├── .vitepress/ # 站点配置
│ ├── architecture/ # 架构文档(本分区)
│ ├── dev/ # 开发文档
│ ├── frontend/ # 前端文档
│ ├── srs/ # 需求规格文档
│ └── tech/ # 关键技术分析
├── scenarios/ # 场景 YAML 定义文件
├── runs/ # 运行产物自动生成(不入库)
├── scripts/ # 辅助脚本(测试/修复/诊断)
├── tests/ # 测试代码
├── src/unet_dt/ # Python 源码根
│ ├── __init__.py
│ ├── logging_config.py # 日志配置(文件 + 控制台)
│ ├── api/ # FastAPI 服务
│ │ ├── __init__.py
│ │ ├── main.py # 应用工厂 create_app()
│ │ ├── deps.py # FastAPI 依赖注入函数
│ │ ├── middleware.py # 请求日志中间件
│ │ ├── schemas.py # Pydantic v2 请求/响应模型
│ │ ├── catalog.py # 场景目录解析
│ │ ├── artifact_reader.py # CSV/报告产物读取
│ │ ├── ws.py # WebSocket 广播器 + 路由
│ │ └── routes/ # 路由模块
│ │ ├── __init__.py
│ │ ├── health.py # 四层健康检查
│ │ ├── runs.py # 运行 CRUD + 控制
│ │ ├── scenarios.py # 场景 CRUD + 导入导出
│ │ ├── strategies.py # 策略自动发现
│ │ └── config.py # 系统配置查询 + 位置初始化
│ ├── config/ # 配置模块
│ │ ├── load.py # 场景 YAML 加载
│ │ ├── schema.py # 场景 Pydantic schema
│ │ └── settings.py # RuntimeSettings 环境配置
│ ├── metrics/ # 指标模块
│ │ ├── trace.py # trace 采集
│ │ ├── compute.py # 指标计算
│ │ └── export.py # CSV/报告导出
│ ├── orchestrator/ # 编排器
│ │ ├── runner.py # run_demo() 主循环
│ │ ├── clock.py # 仿真时钟
│ │ ├── barrier.py # 步间同步屏障
│ │ ├── trace_collector.py # trace 收集器
│ │ └── gateway_preflight.py # PHY 预检流程
│ ├── persistence/ # 持久层
│ │ ├── __init__.py
│ │ ├── db.py # Database 引擎 + auto-migrate
│ │ ├── models.py # SQLAlchemy ORM 6表模型
│ │ ├── repo.py # RunRepository(run/summary/events)
│ │ ├── trace_repo.py # TraceRepository(traces/metrics)
│ │ └── scenario_repo.py # ScenarioRepository(CRUD + YAML 同步)
│ ├── protocol/ # 协议层
│ │ ├── __init__.py
│ │ └── payload_header.py # 帧头定义与解析
│ ├── scheduler/ # 调度策略
│ │ ├── __init__.py
│ │ ├── base.py # Strategy 抽象基类
│ │ ├── round_robin.py # 轮询调度
│ │ └── adaptive_qos.py # 自适应 QoS 调度
│ ├── service/ # 业务服务层
│ │ ├── __init__.py
│ │ ├── run_service.py # RunService 业务编排
│ │ ├── execution_worker.py # ExecutionWorker 后台线程
│ │ └── location_initializer.py # LocationInitializer 位置初始化
│ ├── unet_adapter/ # UNET 适配层
│ │ ├── base.py # UnetAdapter 抽象基类 + UnetInstance
│ │ ├── factory.py # detect_backend() + get_adapter()
│ │ ├── fjagepy_impl.py # fjagepy 网关适配器
│ │ ├── fjagepy_helpers.py # fjagepy 辅助函数
│ │ ├── arlpy_impl.py # arlpy 日志适配器
│ │ ├── logonly_impl.py # 纯日志 mock 适配器
│ │ ├── rx_parse.py # 接收帧解析
│ │ └── utils.py # 适配器工具函数
│ └── ui/ # React SPA 前端
│ ├── package.json
│ ├── vite.config.ts # Vite 配置(proxy → 后端)
│ ├── tsconfig.json
│ └── src/
│ ├── main.tsx # 入口
│ ├── App.tsx # 路由定义(10 条)
│ ├── api/
│ │ └── client.ts # API 客户端封装
│ ├── hooks/
│ │ ├── usePolling.ts # 通用轮询 hook
│ │ ├── useRunPolling.ts # 运行状态轮询
│ │ └── useWebSocket.ts # WebSocket hook
│ ├── components/ # 共享组件(11 个)
│ │ ├── Layout.tsx
│ │ ├── Sidebar.tsx
│ │ ├── PageHeader.tsx
│ │ ├── Card.tsx
│ │ ├── MetaCard.tsx
│ │ ├── StatusBadge.tsx
│ │ ├── RunsTable.tsx
│ │ ├── BarChart.tsx
│ │ ├── Pagination.tsx
│ │ ├── TabGroup.tsx
│ │ └── HealthStrip.tsx
│ ├── pages/ # 页面组件(10 个)
│ │ ├── Dashboard.tsx
│ │ ├── CreateRun.tsx
│ │ ├── RunDetail.tsx
│ │ ├── LiveMonitor.tsx
│ │ ├── ABCompare.tsx
│ │ ├── SystemConfig.tsx
│ │ ├── HealthCheck.tsx
│ │ ├── ScenarioList.tsx
│ │ └── ScenarioEditor.tsx
│ └── types/
│ ├── run.ts
│ └── scenario.ts说明
docs/用于持续维护版本;提交版report.md可视为阶段性快照。runs/目录为运行产物,应在.gitignore中忽略。ui/为独立的 React SPA 项目,通过 Vite proxy 将/api请求转发至后端。