Appearance
非功能需求
NFR-01 可用性与易用性
- Dashboard 操作不超过 3 次点击完成核心流程(选择场景/策略 -> Start -> 查看曲线)
- 运行状态清晰可见(Running/Stopped/Failed),失败有明确原因与重试提示
NFR-02 响应性与实时性
- 关键操作(Start/Stop)1s 内有可见反馈
- 指标刷新周期建议 ≤ 1s(WS 推送或轮询)
NFR-03 可视化能力
- 至少 4 条实时曲线:吞吐、时延 p95、丢包率、sync_error
- 至少 1 个拓扑/节点状态视图(可先用 2D 简化)
NFR-04 可复现性
- 同一场景 + 同一 seed + 同一策略参数,重复运行结果一致(或方差可解释)
- 每次 run 必须落盘
versions.json,记录可复现所需信息
NFR-05 可维护性与扩展性
- UNET 相关逻辑隔离在
UnetAdapter;调度策略以插件化接口扩展 - 数据落盘格式稳定(CSV/JSON),便于后续接入数据库或替换前端
NFR-06 环境与依赖
- 开发环境:Windows 10/11;Python 3.10+;Node.js 18+;Git
- 部署环境(建议):Linux(Ubuntu 20.04+);CPU >= 2 核;内存 >= 4GB;磁盘 >= 50GB
NFR-07 日志与可观测性
- 关键阶段必须有结构化日志:run 创建/启动/停止、step 进度、调度决策、异常
- traces/metrics 生成失败时需给出原因与最小诊断信息
NFR-08 可观测性与健康检查
- 提供
GET /health综合健康检查端点,返回数据库连接、适配器状态、逐节点健康信息 - 提供
GET /health/nodes专用节点健康检查端点,执行深度检查(gateway 连接 → probe → check_phy → query_node_address) - 健康状态三级分类:
healthy(全部正常)、degraded(部分节点异常)、unhealthy(核心组件不可用) - 每个节点健康报告包含:ok、phy_ok、agents 数量、services 列表、unet_addr
NFR-09 容错与降级策略
- Gateway 模式启动前执行 PHY Preflight;健康节点不足时阻断启动并提供明确错误信息
- 适配器自动探测顺序:
arlpy → fjagepy → LogOnly,优先使用高精度后端,不可用时自动降级 - 数据库写入失败不阻断 run 执行;文件落盘作为最小保障
- WebSocket 断线支持自动重连,前端轮询作为 WS 不可用时的降级方案
NFR-10 配置管理
- 运行时配置集中于
RuntimeSettings,支持环境变量注入(UNET_DT_*前缀) - 数据库表名可通过配置映射,支持同一数据库实例部署多套环境
- 场景配置支持 YAML 文件与数据库双来源,API 合并展示
GET /config端点暴露当前配置摘要(脱敏),便于运维诊断