状态:已批准,实施中 依据:
docs/PLATFORM_DESIGN_V2.md§4 第四批 /docs/P3_IMPLEMENTATION_PLAN.md§8 遗留 /README.mdP5 平台化表第四批 原则:沿用工程规范(禁止臆测 / 测试完备 / ASCII / 自查清单 / 文档同步 / commit 规范)
把平台化推进到"可交付、可扩展、文档不漂移"的收口状态:
src/plan_schema.py(dataclass)与 web/backend/app/schemas/schema_v2.py(Pydantic)两套并行方案定义的漂移,让 src/plan_schema.py 成为唯一结构权威,web 端转为薄兼容层。L0PreScreeningEngine 从 web 移到 src/afmcore,消除 web 依赖。| 项 | 现状 | 问题 |
|---|---|---|
| 方案结构 | src/plan_schema.py 393 行 6 个 dataclass(ScanVariable/ScanCase/FixedParam/SearchStrategy/AcceptanceCriteria/SimulationPlan),已接入 afmcore.topology/strategies;无顶层校验入口 |
与 web schema_v2.py 双份定义,语义漂移 |
| web 方案模型 | web/backend/app/schemas/schema_v2.py Pydantic V2(StrategyMode/FidelityLevel/SearchMethod/…策略子模型) |
独立于 src/plan_schema,AI 输出与存储格式不一致风险 |
| 数据流 | ai_plan 生成 unified v2 dict(fixed_params + variables with value lists)→ 存 SimulationPlan.plan_data → plans.py download 给本地 EXE | 格式转换点分散(plan_generator/rule_engine/plans.py),缺统一入口 |
| 文档 | 《PCB轴向磁通电机自动化仿真系统设计方案介绍》= V1.1 | 与 P1~P3 平台化实现漂移 |
| 打包 | 无 PyInstaller 产物(PyInstaller 6.22.2 已装) | 无系统二交付物 |
| 前端 | adaptive 闭环只有 API,UI 仍是全因子展示 | 语义错位 |
| L0 | web/backend/app/services/l0_prescreening.py |
web 依赖,本地执行器/策略层无法复用 |
| 批次 | 内容 | 验证 |
|---|---|---|
| P4-M1 | 方案 Schema 统一:src/plan_schema.py 补顶层校验/归一化入口(parse/validate);web 端结构权威收敛到 src/plan_schema;schema_v2.py 转薄兼容层(字段语义对齐,不重复定义) |
TEST-013:新 test_p4_schema.py(parse/validate 正常+异常+空值、web dict 归一化、schema_v2 兼容层 round-trip、回归现有 plan 用例) |
| P4-M2 | 文档同步 V1.1→V2:升级《设计方案介绍》,回填平台化架构/接口/算法选择/已知限制 | 文档评审 + 与实现对照清单 |
| P4-M3 | EXE 打包:PyInstaller 打包 scripts/task_executor.py + robust_motorcad(执行器,headless 模式优先);spec/产物不入库 |
TEST-014:构建脚本可复现,产物启动冒烟(--help / 心跳 mock) |
| P4-M4 | 前端 adaptive 视图:批次可视化(当前 batch/点状态)+ 收敛曲线(objective vs batch) | 前端组件单测 + 手工验收截图 |
| P4-M5 | L0 上提共享核心层:L0PreScreeningEngine 迁至 src/afmcore/l0/,web 改引用 |
TEST-015:迁移后导入回归 + 功能等价单测 |
目标架构:
src/plan_schema.py # 唯一权威:dataclass 结构 + 顶层 parse/validate/归一化
web/.../schemas/schema_v2.py # 薄兼容层:Pydantic 仅做 HTTP 层类型包装,结构语义委托 src/plan_schema
web/.../services/plan_generator.py / rule_engine.py / routers/plans.py # 统一走 src.plan_schema 入口
步骤:
src/plan_schema.py 新增顶层入口:
parse_plan(data: dict) -> SimulationPlan:dict → dataclass,缺省字段用默认值(容错 + 归一化)validate_plan(plan) -> ValidationReport:结构合法 + 拓扑参数合法(调 afmcore.topology)+ 策略方法已注册(调 afmcore.strategies)+ 扫描变量范围/步长/values 一致性 + 固定参数类型plan_to_dict(plan) -> dict:统一序列化(兼容现有 to_dict)plan_generator.py:生成流程末尾统一调用 parse_plan 归一化 + 校验,失败返回结构化错误routers/plans.py:POST /plans 创建时用 src.plan_schema 校验 plan_data(替代/补充 Pydantic 校验)rule_engine.py:输出与 src.plan_schema 契约对齐(已声明兼容)schema_v2.py 薄化:保留枚举与 API 模型(HTTP 入参校验),字段与 src.plan_schema 语义对齐;删除重复的结构推导逻辑(如有)涉及文件:src/plan_schema.py、web/backend/app/schemas/schema_v2.py、web/backend/app/services/plan_generator.py、web/backend/app/routers/plans.py、web/backend/app/services/rule_engine.py(如涉及)、scripts/test_p4_schema.py(新)
src/afmcore 共享核心层、双系统解耦(Web 智能层 + 本地执行层)/api/adaptive/*、/api/executor/*、task_contract 状态机、plan_schema 单一权威涉及文件:PCB轴向磁通电机自动化仿真系统设计方案介绍.md(V1.1 → V2)、README.md
scripts/task_executor.py + scripts/robust_motorcad + src/afmcore)scripts/build_executable.ps1(构建脚本,ASCII):
--onefile(或 --onedir,视依赖)打包执行器入口 scripts/run_task_executor.pydist/ 下 EXE 启动冒烟(--help / 短任务 mock 心跳)build/、dist/、*.spec 不入库(AGENTS.md 生成物纪律)涉及文件:scripts/build_executable.ps1(新)、scripts/run_task_executor.py(入口确认)
/api/adaptive/loops/*),UI 仍全因子展示GET /api/adaptive/loops/{id}/status 现有响应涉及文件:web 前端 Vue 组件(LoopMonitor.vue 或并入现有页面)、API 层确认
L0PreScreeningEngine(web/backend/app/services/l0_prescreening.py)迁至 src/afmcore/l0/prescreening.pyl0_prescreening.py 改引用 src(薄 re-export,保持现有 import 兼容)涉及文件:src/afmcore/l0/prescreening.py(新)、web/backend/app/services/l0_prescreening.py(薄化)、引用点
| 风险 | 应对 |
|---|---|
| Schema 统一破坏现有闭环 | M1 先加 parse/validate 入口(纯新增),再逐步收敛调用点;每步跑现有 plan 用例回归 |
| EXE 打包依赖复杂(pymotorcad COM/license) | 打包 headless 执行器优先;真实 Motor-CAD 连接不做打包内自检(依赖 license server),标注环境依赖 |
| L0 上提引入循环依赖 | 先做依赖扫描(grep L0 的 import),确认无 web 专属依赖再迁移 |
| 前端 adaptive 视图工作量不确定 | 先做最小可视图(状态面板 + 收敛曲线),批次点可视化列后续 |
| ASCII 纪律 | 新 .py/.ps1 全 ASCII,中文进 .md |
| 文档 V2 篇幅大 | 对照清单驱动,逐节回填,不重写原文 |
本文档为 P4 实施计划,实施进度按批次回填。P4 五件套(M1~M5)已于 2026-08-29 全部完成。