AGENTS.md@.github/apps/bazi-3d-web · git:20261025.3c17b73 · 2026-10-25 · sha256 c2e8d43f4faa76f1
AGENTS.md@.github/apps/bazi-3d-web git:20261025.3c17b73A
Immutable. This exact content never changes and is served at /api/v1/blob/c2e8d43f4faa76f1.
# AGENTS.md - 八字全历史三维数学图谱 ## 目录用途 `.github/apps/bazi-3d-web/` 是独立 `/bazi-3d/` 产品。它把 CalendarProfile 在 1900 至 2030 闭合支持域内的全部 574165 个原生时辰同时放入一个 Three.js 点云,以 26 种位置投影和 4 种整体或派生着色观察同一历史集合。每个时辰的年柱、月柱、日柱、时柱共同组成一个不可拆分的原子输入;柱位只能作为原子内部坐标展示或计算,不得成为独立样本或独立控制入口。图表切换不得重新请求、裁剪或替换历史;不得导入 `.github/apps/timeline-web/` 或 `.github/apps/bazi-math-web/`。 ## 目录结构 ```text bazi-3d-web/ ├── AGENTS.md ├── index.html ├── package.json ├── playwright.config.ts ├── public/ │ ├── history-manifest.json │ └── assets/ │ └── bazi-history-v1-<profile-digest>.bin ├── scripts/ │ └── build_history_dataset.py ├── src/ │ ├── App.tsx │ ├── WholeHistoryScene.tsx │ ├── catalog.ts │ ├── catalog.test.ts │ ├── history-data.ts │ ├── history-data.test.ts │ ├── main.tsx │ ├── whole-history-projections.ts │ ├── whole-history-projections.test.ts │ └── whole-history.css ├── tests/ │ └── product.spec.ts ├── tsconfig.json └── vite.config.ts ``` ## 职责边界 - `scripts/build_history_dataset.py` 是派生资产生成入口;只调用 fate-core canonical CalendarProfile 和 provider,按 ordinal 顺序写五字节记录,不持有第二套历法算法。 - `public/history-manifest.json` 固定 Profile 摘要、支持域、ordinal、词表、记录布局和 binary 摘要;manifest 使用 no-cache,带 Profile 摘要的 binary 使用 immutable cache。 - `history-data.ts` 是浏览器数据边界;30 秒超时且不重试,校验 manifest、长度、SHA-256 和有限值范围后,以 O(n) 构造共享 position 与 color typed arrays。四种着色只能消费完整四柱原子、由完整原子派生的五行或状态变化,以及附着于同一帧的节气。 - `catalog.ts` 是 26 项三维图表的机器目录;ID、分组、三轴语义、输入契约、投影版本、readiness 和投影损失必须唯一且可审计。 - `whole-history-projections.ts` 是纯 O(n) 位置投影内核;每次只原位重写一份 position,每项主坐标必须使用四柱联合相位、联合矩、联合离散度或联合转移;原子身份纤维只解决低维投影碰撞,不得替代主公式。`direct`、`approximate`、`conditional` 必须与实际输入能力一致。 - `App.tsx` 不接受时间、地点、口径或命盘输入,也不请求 timeline Point 或 Window;只加载一次全历史资产并维护图表、着色和所选点。 - `WholeHistoryScene.tsx` 是唯一 WebGL owner;一份全历史 BufferGeometry、一个 Points 对象和一个 canvas 同时承载 574165 个时辰。图表切换原位更新 position,着色切换原位更新 color;P01 可附加一个固定 721 顶点的闭合骨架参考线,但不得复制全历史 geometry。 - 每次位置投影完成后必须按真实 bounding sphere 自动更新相机 target、distance、near、far 和 OrbitControls 范围;禁止用一组固定相机参数裁切或缩小 26 种不同尺度的投影。 - 三轴语义由当前图表目录项定义,不存在所有图表共用的伪时间轴。坐标是可视化嵌入,不宣称吉凶、概率、因果或未计算的完整数学结果。 - 点选才执行 O(n) raycast;pointer move 不做全量命中测试。选中结果从同一五字节记录还原四柱、节气和五行文本。 - WebGL 创建失败或 context lost 时必须保留中文文本;卸载必须释放全历史与参考 geometry、material、纹理、控制器、监听器、renderer 和 WebGL context。 - 任务 0174 的窗口请求和局部 `SceneModel` 实现不属于当前入口。现有 `catalog.ts` 被复用为机器目录,但旧局部算法不得直接扩展到全历史;物理清理仍需删除授权。 ## 依赖方向 - `build_history_dataset.py -> CalendarProfile + fate_core.kernel.bazi.calendar_pipeline + fate_core.kernel.bazi.timeline` - `App.tsx -> catalog.ts + history-data.ts + whole-history-projections.ts + WholeHistoryScene.tsx` - `WholeHistoryScene.tsx -> catalog.ts + history-data.ts + whole-history-projections.ts + three` - `whole-history-projections.ts -> catalog.ts + public history record contract` - `history-data.ts -> public/history-manifest.json + public/assets/*.bin` - 禁止 `bazi-3d-web -> timeline-web` 和 `bazi-3d-web -> bazi-math-web` ## 验证 - `python3 .github/apps/bazi-3d-web/scripts/build_history_dataset.py --check` - `npm --prefix .github/apps/bazi-3d-web test` - `npm --prefix .github/apps/bazi-3d-web run typecheck` - `npm --prefix .github/apps/bazi-3d-web run build` - `npm --prefix .github/apps/bazi-3d-web run test:e2e` - `bash .github/scripts/bazi-3d-web.sh --mode all`