feat: establish facade-first runtime boundary
This commit is contained in:
@@ -147,6 +147,8 @@ BitBybit Web CAD Facade(唯一入口)
|
||||
|
||||
建议以当前正式版 FreeCAD 1.1.1 的官方发布标签为初始基线,并在 POC 启动时记录精确源码提交;后续升级作为独立兼容迁移。项目不把“有 FreeCAD 风格外观”或“能调用几个 OCCT 操作”视为完成。完整性必须按固定 FreeCAD 基线版本建立可追踪矩阵,至少覆盖以下四层:
|
||||
|
||||
最终产品目标是对标锁定版本 FreeCAD 的完整功能语义,而不是只完成当前的 PartDesign 静态页面。任何暂未实现的工作台、命令、对象、属性、任务生命周期、撤销/重计算、文件互操作或脚本能力,都必须在兼容矩阵中保持可见状态,不能用“后续支持”替代完成定义。
|
||||
|
||||
1. **界面层**:菜单、工具栏、工作台、Combo View、Model/Tasks、Property Editor、Data/View 属性、报告视图、选择视图、任务确认/取消、快捷键、导航预设、首选项和文档标签。
|
||||
2. **应用业务层**:Document、DocumentObject、Property、PropertyLink、Expression、事务、撤销/重做、依赖 DAG、状态机、重计算、错误恢复、对象生命周期和视图状态分离。
|
||||
3. **工作台层**:官方核心工作台的命令、参数、选择前置条件、结果类型、失败行为和对象映射。第一批覆盖 Part、PartDesign、Sketcher、Draft、TechDraw、Spreadsheet、Mesh、Assembly;随后覆盖 Path、FEM、Arch/BIM、Robot、Raytracing/Rendering 和其他官方核心模块。
|
||||
@@ -1400,12 +1402,14 @@ SQLite 是运行时的主存储,不要求项目包直接暴露数据库内部
|
||||
| FreeCAD UI 区域、工作台和核心术语盘点 | `DONE` | 官方文档依据已纳入第 15 节;界面 manifest 已落地 |
|
||||
| 全量静态页面和 CAD Workspace | `DONE` | `src/App.tsx`、`src/styles.css`;桌面/移动截图验收通过 |
|
||||
| 工作台/菜单/命令机器可读 manifest | `DONE` | `src/freecadManifest.ts`,13 个工作台和命令分组 |
|
||||
| BitBybit Web CAD Facade 真实合同 | `PLANNED` | 由 P1 工作包冻结;当前只有页面层静态替身 |
|
||||
| FreeCAD/OCCT 几何 WASM | `PLANNED` | 由 P3 工作包实施;当前 viewport 是静态示意 |
|
||||
| Three.js 真实视口适配器 | `PLANNED` | 由 P5 工作包实施;当前不保存 Three.js 对象作为领域真值 |
|
||||
| BitBybit Web CAD Facade 最小合同 | `DONE` | `src/facade/types.ts`、`src/facade/mockFacade.ts`;真实内核适配仍待 P3/P4 |
|
||||
| FreeCAD/OCCT 几何 WASM | `PLANNED` | 由 P3 工作包实施;当前只有确定性 Mock 几何结果 |
|
||||
| Three.js 真实视口适配器 | `IN PROGRESS` | `src/facade/threeViewport.ts`,锁定当前最新 `three@0.185.1`,WebGL2 适配器已挂入 Facade |
|
||||
| React Facade 投影和静态替身 | `DONE` | 工作台、选择、文档树、通知已由 Facade 事件驱动 |
|
||||
| SQLite WASM + OPFS 持久化 | `PLANNED` | 由 P2 工作包实施;当前页面仅展示存储状态 |
|
||||
| 标准格式与 FCStd 兼容 | `PLANNED` | 由 P7 工作包实施 |
|
||||
| 自动化测试、性能门禁和发布流水线 | `PLANNED` | 由 P8 工作包实施 |
|
||||
| Facade 单元测试和入口依赖守卫 | `DONE` | `tests/facade.test.ts`、`scripts/check-facade-boundary.mjs` |
|
||||
| 自动化测试、性能门禁和发布流水线 | `IN PROGRESS` | P8-01 第一批 Facade 测试已通过;跨浏览器和黄金几何仍待后续 |
|
||||
|
||||
### 16.3 阶段门和交付节奏
|
||||
|
||||
@@ -1569,3 +1573,20 @@ P0 基线/治理
|
||||
6. 阶段门证据可由其他成员在干净环境复现。
|
||||
|
||||
阶段门未通过时,任务只能保持 `IN PROGRESS` 或 `BLOCKED`,不得为了排期标记完成。
|
||||
|
||||
### 16.9 迭代 1 执行记录
|
||||
|
||||
本次开发已完成第一批合同和入口任务,状态如下:
|
||||
|
||||
| 任务 | 状态 | 实际证据 |
|
||||
|---|---|---|
|
||||
| P0-01 FreeCAD 基线文件 | `IN PROGRESS` | `config/freecad-baseline.json` 已建立;精确源码提交和构建参数仍需 POC 验证 |
|
||||
| P0-02 运行时版本基线 | `IN PROGRESS` | `config/runtime-baseline.json` 已建立;Three.js 锁定为当前 npm 最新 `0.185.1`,其他内核版本待锁定 |
|
||||
| P0-03 兼容矩阵 | `DONE` | `config/compatibility-matrix.json` 覆盖 13 个工作台和命令状态 |
|
||||
| P1-01 Facade 最小合同 | `DONE` | `src/facade/types.ts` 定义 App/Gui/Command/Selection/Task/Viewport 合同 |
|
||||
| P1-05 MockFacadeAdapter | `DONE` | `src/facade/mockFacade.ts`,React 工作区已通过事件投影工作台、选择、文档树和通知 |
|
||||
| P1-06 Facade-only 依赖守卫 | `DONE` | `scripts/check-facade-boundary.mjs`,禁止 UI 绕过入口导入 Three.js/SQLite/OPFS/Worker |
|
||||
| P5-01 Three.js 视口适配器 | `IN PROGRESS` | `src/facade/threeViewport.ts` 使用 `three@0.185.1`,已挂载 WebGL2 场景和资源释放 |
|
||||
| P8-01 第一批自动化场景 | `IN PROGRESS` | `tests/facade.test.ts` 已覆盖初始化、事件、任务生命周期和禁用命令;E2E/黄金几何待补齐 |
|
||||
|
||||
本迭代验证命令:`npm run check:facade-boundary`、`npm run test:facade`、`npm run build`。构建产物将 Three.js 拆为独立 chunk,避免把全部渲染库重复打入应用主 chunk。下一迭代继续完成 P0-01/P0-02 的精确锁定和 P1-02/P1-03 的命令状态、事件及诊断协议。
|
||||
|
||||
Reference in New Issue
Block a user