PCB轴向磁通电机自动化仿真系统 — 平台化升级设计方案 V2.0
| 项 |
内容 |
| 文档版本 |
V2.0 |
| 作者 |
Car.Lin / AI 协助 |
| 日期 |
2026-08-29 |
| 状态 |
评审稿 + 第一批已落地(2026-08-29:afmcore 共享核心层 + 指标单一事实源 + 适配器抽象) |
| 关联 |
原《设计方案介绍》V1.1 + 《P3-评审响应与更新计划》 |
1. 为什么要平台化
1.1 现状能力(已实现且扎实的部分)
- 双系统解耦(Web 方案端 + 本地执行端)REST 通信已跑通
- 方案生成三源融合(规则引擎 + Kimi k3 AI + 经验库检索)已落地
- 本地执行器真实驱动 Motor-CAD,全链路(Web 下发 → 本地认领 → 真实磁计算 → 回传)已实测通过
- 工程纪律(回读校验/基线重载/弹窗抑制/逐点落盘/纯 ASCII)执行到位
- 第三方评审 P0/P1 已修复,测试留痕规范
1.2 平台性短板(本次系统性深潜发现)
| # |
短板 |
现状 |
平台性影响 |
| S1 |
指标定义三处漂移 |
src/solver_core.py(15项) / scripts/robust_motorcad.py(18项) / web/.../metrics_constants.py(25项) 三份不统一 |
新增指标要改三处,必然漂移 |
| S2 |
解析器两套实现 |
solver_core 带字段归一化(全角括号/空白/大小写),robust_motorcad 是无归一化精确匹配 |
robust_motorcad 解析不到 tavg_nm/ripple_pct(实测) |
| S3 |
求解核心两套重叠 |
MotorCADSolver(src) 与 RobustMotorCADSolver(scripts) 职责重叠,无统一抽象 |
维护成本翻倍,行为易分叉 |
| S4 |
无工具适配器抽象 |
方案要求的 SimulationAdapter ABC 未落地,Motor-CAD 硬编码 |
无法插拔 Maxwell/JMAG |
| S5 |
拓扑是裸字符串 |
topology 字段无配置化注册表 |
无法扩展 DRSS/SDSR 参数体系 |
| S6 |
方案 Schema 两套 |
src/plan_schema.py 与 web/backend/app/schemas/* 并行 |
契约漂移风险 |
| S7 |
执行策略硬编码全因子 |
feasibility_search 未接入执行器,自适应闭环未通 |
P3 优化能力未真正生效 |
| S8 |
调度逻辑分裂 |
Web 端 BatchScheduler(内存)与本地执行器(轮询)两套 |
平台化调度难扩展 |
1.3 平台化目标
把系统从"单工具、单拓扑、单策略"的专用工具,升级为:
可插拔工具、可配置拓扑、可扩展策略、契约统一、单一事实源的电机仿真自动化平台。
新增一个工具/拓扑/策略时,只做"注册"和"实现适配器",不改平台核心。
2. 目标架构
┌──────────────────────────────────────────────────────────────────┐
│ 共享核心层 src/afmcore/ │
│ (单一事实源,纯 Python,无 GUI/无 Web 依赖,三方共同引用) │
│ │
│ metrics.py 指标定义 + 归一化解析器(唯一权威) │
│ plan_schema.py 方案契约 V2(唯一权威) │
│ topology.py 拓扑注册表(SSSR/DRSS/SDSR 参数体系+模板+规则) │
│ adapters/ 仿真工具适配器(接口+注册表+实现) │
│ strategies/ 执行策略(full_factorial / adaptive) │
│ validation.py 结果校验规则集(可插拔判据) │
└───────────────┬────────────────────┬────────────────┬──────────────┘
│ │ │
┌───────▼───────┐ ┌───────▼───────┐ ┌─────▼──────────┐
│ 系统一 Web 端 │ │ 系统二 本地端 │ │ GUI / 其他 │
│ backend 引用 │ │ executor 引用 │ │ 工具脚本引用 │
│ src/afmcore │ │ src/afmcore │ │ src/afmcore │
└────────────────┘ └───────────────┘ └────────────────┘
2.1 分层职责
| 层 |
职责 |
不许做 |
| 共享核心层 src/afmcore/ |
指标、契约、拓扑、适配器接口、策略接口、校验规则 |
不依赖 Motor-CAD/Web/GUI 具体实现 |
| 系统一(Web) |
方案生成、AI、分析、知识库、任务调度 |
不直接调 Motor-CAD |
| 系统二(本地) |
执行任务、驱动工具、落盘、回传 |
不依赖 AI(可离线) |
| GUI |
加载方案、监控、展示 |
不跑仿真(子线程例外) |
2.2 扩展点一览(平台性的落点)
| 扩展点 |
新增方式 |
不改动 |
| 新仿真工具(Maxwell/JMAG/Flux) |
实现 SimulationAdapter + 注册 tool_name |
执行器/任务层/解析层 |
| 新拓扑(DRSS/SDSR) |
topology.py 注册参数体系 + 模型模板 + 默认规则 |
引擎核心 |
| 新执行策略(adaptive) |
strategies/ 实现策略接口 |
任务下发层 |
| 新指标 |
metrics.py 加一项(key/label/alias/direction) |
所有消费端自动生效 |
| 新校验判据 |
validation.py 加一个可插拔 rule |
执行器/方案端 |
| 新物理场 |
适配器实现多物理场提取 + 指标扩展 |
架构 |
3. 第一批落地:共享核心层(本轮实施)
优先解决 S1/S2/S3/S4,这是平台性的地基,也是数据正确性的根因。
3.1 src/afmcore/metrics.py(单一事实源)
- 合并三处指标定义,形成唯一
METRIC_DEFINITIONS(key/label/aliases/direction/required/unit)
- 归一化解析器:全角括号→半角、去空白、小写,三段匹配(section 优先级→全 section 精确→前缀模糊)
- 提供
parse_export() / extract_all_metrics() / pick_metric() 统一入口
- 兼容导出:保留
solver_core / robust_motorcad / metrics_constants 的旧符号名(薄兼容层),避免一次性大改调用点
3.2 src/afmcore/adapters/(工具适配器)
base.py SimulationAdapter(ABC): connect/load_model/set_parameter/run_simulation/extract/disconnect
registry.py ADAPTER_REGISTRY: {tool_name: adapter_class},get_adapter(tool)
motorcad.py MotorCADAdapter: 包装 RobustMotorCADSolver,实现统一接口
- 执行器通过
get_adapter("motorcad") 获取,不再硬编码
- 未来
get_adapter("maxwell") 只需注册新类
3.3 消费端接入
| 消费端 |
接入方式 |
src/solver_core.py |
改为 from .afmcore.metrics import *,保留旧名导出 |
scripts/robust_motorcad.py |
删除自带 METRIC_DEFINITIONS/_parse_export,改用共享解析器(修复 tavg_nm/ripple) |
web/backend/app/metrics_constants.py |
从共享层派生(或保留 key 常量,标注权威源在共享层) |
4. 后续批次(待本批验证后启动)
| 批次 |
内容 |
解决 |
| P2 |
拓扑注册表落地:topology.py 注册 SSSR 参数体系,DRSS/SDSR 预留 |
S5 |
| P2 |
方案 Schema 统一:以 src/afmcore/plan_schema.py 为权威,web schemas 转薄兼容层 |
S6 |
| P3 |
执行策略接入:strategies/adaptive 包装 feasibility_search,task_executor 支持 adaptive 模式 |
S7 |
| P3 |
调度统一:本地执行器支持多实例并行 + 与 BatchScheduler 对齐契约 |
S8 |
| P4 |
文档同步:原《设计方案介绍》升级 V2,消除与实现漂移 |
— |
| P4 |
本地 EXE 打包:PyInstaller 打包执行器 + GUI |
系统二交付物 |
5. 风险与约束
| 风险 |
应对 |
| 重构破坏现有可用闭环 |
本批只做"共享层 + 接入",不改行为语义;接入后跑指标解析单元验证 + 回归导入测试 |
| 三处接入遗漏 |
用 Grep 确认所有 METRIC_DEFINITIONS/_parse_export 引用点,逐一替换 |
| web 端部署路径引用 src |
Dockerfile/requirements 增加 src 路径映射(本批先保证本地运行,部署调整列入 P4) |
| 纯 ASCII 纪律 |
新代码全 ASCII,中文用 \uXXXX |
本文档为设计决策稿,代码实现按 3.x 批次逐步落地并回填进度。
6. 实施进度回填
| 批次 |
内容 |
状态 |
验证 |
| 第一批(2026-08-29) |
src/afmcore/metrics.py(25项指标+归一化解析器);adapters/(SimulationAdapter+注册表+MotorCADAdapter);solver_core/robust_motorcad/metrics_constants 三端接入;修复 tavg_nm/ripple_pct 解析缺口 |
✅ 完成 |
TEST-004:单元验证全 PASS、78文件编译0失败、三端+7本地+4Web 导入回归、纯ASCII |
| 第二批(2026-08-29) |
拓扑注册表 topology.py(SSSR 参数体系 8组37项注册,DRSS/SDSR 预留)+ plan_schema 拓扑校验 + task_executor 切换 get_adapter + _compute_metrics 缺口修复 |
✅ 完成 |
TEST-005:36 项断言全 PASS、79文件编译 0 失败、三端导入回归、纯ASCII、回归测试脚本 test_platform_registry.py 固化 |
| 第三批 |
执行策略 strategies(full_factorial/lhs/adaptive)+ task 模型扩展 + AdaptiveOrchestrator + 执行器批次/多实例 + 调度契约统一 + Web 端执行桥(submit-batch) |
✅ 完成 |
TEST-006~011,回归脚本 testp3*.py 全 PASS |
| 第四批 |
方案 Schema 统一(plan_schema 单一权威)+ 文档同步(原方案 V1.1 → V2)+ EXE 打包 |
🔲 规划中 |
— |