feat: advance FreeCAD parity and native OCCT history
This commit is contained in:
@@ -1364,7 +1364,7 @@ SQLite 是运行时的主存储,不要求项目包直接暴露数据库内部
|
||||
| CAD Workspace zones | FreeCAD 风格的菜单、全局工具栏、Workbench Navigation Bar、Document Tabs、Combo View、Viewport、Task Dock、Function Rail、Report View | Dock 状态、命令 enabled/disabled、任务生命周期由 Facade 事件驱动 |
|
||||
| Model/Property/Task mock | 按 Document/Object/Body/Feature、Data/View、Apply/OK/Cancel 和警告状态组织 | 接入真实对象投影、Property metadata、TaskSession 和 Selection service |
|
||||
| `src/styles.css` | 桌面 300px Combo View、360px Task Dock、44px 命令轨道,并有窄屏内部滚动布局 | 对照锁定 FreeCAD 版本做视觉回归,不改变业务语义 |
|
||||
| 构建验收 | `npm run build` 通过;核心路由返回 200;已验收 1440x900 和 390x844 截图 | 增加 Playwright/视觉回归与键盘无障碍自动化 |
|
||||
| 构建验收 | `./npmw run build` 通过;核心路由返回 200;已验收 1440x900 和 390x844 截图 | 增加 Playwright/视觉回归与键盘无障碍自动化 |
|
||||
|
||||
页面阶段的 viewport 仍是可交互的静态几何示意,不能宣称已完成 Three.js、FreeCAD 几何或存储能力。业务接入必须从 manifest 和冻结 DOM 结构开始,并通过 BitBybit 唯一入口完成。
|
||||
|
||||
@@ -1554,7 +1554,7 @@ P0 基线/治理
|
||||
6. `P4-01/P4-04`:验证最小 Document/Object 投影、特征追加、事务版本和撤销/重做边界。
|
||||
7. `P8-01`:为新建文档、工作台切换、选择 Pad、打开 Task Dock、特征提交和属性编辑建立第一批自动化场景。
|
||||
|
||||
迭代退出条件:`npm run build`、类型检查、Facade-only 架构检查和桌面/移动页面截图全部通过;提交信息必须包含任务 ID,例如 `P1-01: define facade contract`。
|
||||
迭代退出条件:`./npmw run build`、类型检查、Facade-only 架构检查和桌面/移动页面截图全部通过;提交信息必须包含任务 ID,例如 `P1-01: define facade contract`。
|
||||
|
||||
### 16.7 任务执行和变更控制
|
||||
|
||||
@@ -1611,7 +1611,7 @@ P0 基线/治理
|
||||
| P5-02 网格增量接入 | `IN PROGRESS` | Three Adapter 可用 `BufferGeometry` 接收 Facade `MeshAsset`,替换时释放旧 GPU geometry;视口优先使用重计算缓存的对象 Shape,失败时保留最近有效结果,无缓存时才创建并释放 Pad/Pocket 临时预览链;对象级增量缓存与选择映射尚未实现 |
|
||||
| P8-01 第一批自动化场景 | `IN PROGRESS` | `tests/facade.test.ts` 已覆盖 67 个场景,包括 Part/PartDesign Mirrored/MultiTransform/Pattern/Hole、TopoRef generation/候选替换、Sketch provider、几何重算、诊断修复、FCStd 安全、schema migration、1000 次写队列、检查点和资源治理;E2E/黄金几何待补齐 |
|
||||
|
||||
本迭代验证命令:`npm run check:facade-boundary`、`npm run test:facade`、`npm run build`。构建产物将 Three.js 拆为独立 chunk,避免把全部渲染库重复打入应用主 chunk。当前 npm registry 的 `three` 最新版本为 `0.185.1`,已在 `package.json` 和运行时基线中锁定。下一迭代继续完成 P0-01/P0-02 的精确锁定、P2-01/P2-02 的 SQLite/OPFS schema 与 Worker 单写者实验,以及 P3-01 的 FreeCAD/OCCT WASM 构建验证。
|
||||
本迭代验证命令:`./npmw run check:facade-boundary`、`./npmw run test:facade`、`./npmw run build`。构建产物将 Three.js 拆为独立 chunk,避免把全部渲染库重复打入应用主 chunk。当前 npm registry 的 `three` 最新版本为 `0.185.1`,已在 `package.json` 和运行时基线中锁定。下一迭代继续完成 P0-01/P0-02 的精确锁定、P2-01/P2-02 的 SQLite/OPFS schema 与 Worker 单写者实验,以及 P3-01 的 FreeCAD/OCCT WASM 构建验证。
|
||||
|
||||
### 16.10 P2 持久化/视口验证记录
|
||||
|
||||
@@ -1738,3 +1738,13 @@ Sketcher 当前边界:领域模型可往返保存点、线、圆、弧、椭
|
||||
本项目原先以系统 Node `v20.19.2` 执行 npm,而依赖要求 Node 22,因而出现 `EBADENGINE`。现已增加项目内、SHA-256 校验的 Node `22.23.2`/npm `10.9.8` 运行时;日常命令统一使用 `./npmw` 或 `./nodew`,系统解释器不被修改。详见 [项目运行时基线](project-runtime.zh-CN.md)。
|
||||
|
||||
“完整 FreeCAD 对标”不等于已有页面或少量 OCCT 特征。稳定子形状命名、Sketcher 求解器、Expression/单位、依赖 DAG/重计算、剩余工作台和 FCStd/交换格式兼容已拆成独立的可验收任务包、阶段门和黄金测试,详见 [完整 FreeCAD 对标实施方案](freecad-full-parity-plan.zh-CN.md)。FreeCAD `1.1.1` 标签已核对并记录精确提交;构建参数和 WASM 端口仍须通过该方案的 F0 基线门后才能宣称兼容。
|
||||
|
||||
### 16.18 全功能范围与主任务账本
|
||||
|
||||
全功能范围已经按锁定源码的 34 个 `src/Mod` 目录重新审计,并补入 App/Base/Gui 的文档、事务、Property、选择、偏好、多文档、Python 控制台、宏、插件、剪贴板和打印行为。逐模块任务、依赖波次和退出条件见 [FreeCAD 1.1.1 全功能对标主任务账本](freecad-complete-parity-backlog.zh-CN.md)。
|
||||
|
||||
主任务账本把原来笼统的“其他模块”拆分为数据/交换、应用/扩展、Robot/Plot、脚本/桌面通用和开发/测试模块。任何能力即使由于浏览器安全或外部二进制无法端口,也必须登记为带诊断和数据保留策略的 `unsupported`,不能从清册中消失。
|
||||
|
||||
执行顺序固定为:范围/oracle → 平台内核 → OCCT 原生历史/TopoRef → planegcs Sketcher → Part/PartDesign → FCStd 双向往返 → TechDraw/Spreadsheet/Draft/Plot → Assembly/BIM/Mesh/Surface → FEM/CAM/Robot/Inspection/数据与应用模块 → 发布门禁。所有项目 Node/npm 命令只允许通过 `./npmw` 执行。
|
||||
|
||||
几何实现遵循 Bitbybit 优先策略:先复用其 OCCT Worker、建模、IO、三角化和缓存能力,再对缺口扩展锁定的 Bitbybit/OCCT 源码绑定并用 Emscripten 构建自有 WASM provider。自构建代码不得绕过 `BitBybitWebCadFacade`,并须通过来源/补丁/SBOM/hash、句柄生命周期和 Bitbybit↔自构建 provider↔FreeCAD 三方黄金差分门禁。对应任务为主账本 `BYB-01..08`。
|
||||
|
||||
Reference in New Issue
Block a user