Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0682d6f
docs(panorama): ArchIToken 项目架构全景图 (PNG + 可编辑 Mermaid HTML)
ActiveInAI Jun 15, 2026
fd0c486
ci(guards): 诚信治理守卫套件 (版本/声称/mock/治理自指/模块深度)
ActiveInAI Jun 15, 2026
dccaf37
docs(arch): 版本诚信对账 — 文档版本号对齐 manifest 真实 pin
ActiveInAI Jun 15, 2026
c29c816
refactor(frontend): 12 个渲染 *.mock 的组件加 @data-status:demo 自声明
ActiveInAI Jun 15, 2026
646945e
docs(depth): 模块深度 Definition of Done (D1-D8) + construction 据实降级
ActiveInAI Jun 15, 2026
d935db7
test(construction): D3 六门控 pytest(5路径) + D4 真实模型 trace
ActiveInAI Jun 15, 2026
d820446
feat(construction): D2 真实施工运行数据端点 + 三态 UI 接线
ActiveInAI Jun 15, 2026
fb010ad
docs(whitepaper): Harness Engineering 方法论 v0.1.0(外部可引用)
ActiveInAI Jun 15, 2026
ec58312
feat(tools): integrity-guard 独立开源包(R5,Apache-2.0,零依赖)
ActiveInAI Jun 15, 2026
66af7c0
test(construction): D6 §4 断言单测 + D7 12子域场景回归 + D2 契约单测
ActiveInAI Jun 15, 2026
776e3ed
docs(panorama): 更新全景图 — 新增诚信治理守卫层 ⑨ + construction pilot 标注
ActiveInAI Jun 15, 2026
465ae04
feat(constitution): 第23条 对标顶级+力争超越(证据门控)+ 守卫C层 + 造价→财务攻坚清单
ActiveInAI Jun 15, 2026
73e6b5f
docs(constitution): 第23条对标名单补充 CAD(AutoCAD/ZWCAD/浩辰/BricsCAD · DWG/DXF)
ActiveInAI Jun 15, 2026
7ae115a
docs(constitution): 第23条 — CAD/几何引擎 采用开源(按许可隔离) vs 闭源仅对标
ActiveInAI Jun 15, 2026
552a185
feat(workers): 登记 LibreCAD EnginePolicy(GPL·独立进程)+ 许可隔离不变式测试
ActiveInAI Jun 15, 2026
bbc10fd
feat(workers): LibreCAD 转换 adapter(DXF→PDF/PNG · 独立进程 GPL 边界)
ActiveInAI Jun 15, 2026
96b41af
feat(workers): FreeCAD 扩展 IGES + BREP 输出(OCCT 原生几何交换)
ActiveInAI Jun 15, 2026
22ebd1e
docs(changelog): 记录 2026-06-15 诚信治理守卫+§23+深度+开源CAD (PR #51)
ActiveInAI Jun 15, 2026
05554e5
test(construction): D2 数据路径 live-DB round-trip 集成测试(不开端口真验证)
ActiveInAI Jun 15, 2026
1d1c1ea
test(finance): C1 造价→财务读取半 live-DB round-trip(不开端口真验证)
ActiveInAI Jun 15, 2026
e235ed0
test(finance): C1 写入半 live-DB round-trip — ON CONFLICT 重生成幂等
ActiveInAI Jun 15, 2026
9baeb1d
test(finance): C2 深化 — 科目映射 + 尾差再平衡(会计正确性)
ActiveInAI Jun 15, 2026
d1d3a85
fix(finance): price-snapshots 端点契约 bug — 补 serde rename_all camelCase…
ActiveInAI Jun 15, 2026
b93c7bc
fix(guards): check-versions 推理 baseline 依赖 gitignored config/local.to…
ActiveInAI Jun 15, 2026
975bbf6
fix(finance): 修复 14 个量化造价/合规响应端点的 camelCase 契约 bug(系统审计)
ActiveInAI Jun 15, 2026
e0c139b
fix(api): 修复 7 个响应端点 camelCase 契约 + RagRetrieveResponse 据 Python 保持 s…
ActiveInAI Jun 15, 2026
043df72
feat(security): RLS 覆盖审计 + 守卫(宪法§17)— 揪出 61 张租户表无行级隔离
ActiveInAI Jun 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,18 @@ jobs:
run: bash scripts/check-module-registry.sh
- name: No model provider call bypasses the router
run: bash scripts/check-router-boundary.sh
- name: Version integrity (Article 2 · doc versions ⊆ manifest)
run: python3 scripts/check-versions.py
- name: Capability claims (Article 4 · no bare readiness verdicts)
run: python3 scripts/check-capability-claims.py
- name: Mock reality (anti-entropy · no undeclared mock data)
run: python3 scripts/check-mock-reality.py
- name: Governance self-rule (bus-factor · guards are wired+documented)
run: python3 scripts/check-governance.py
- name: Module depth (Article 4 · production-ready needs evidence)
run: python3 scripts/check-module-depth.py
- name: RLS coverage (Article 17 · tenant tables must have RLS)
run: python3 scripts/check-rls.py

# =========================================================================
# 1. License compliance (Constitution §3)
Expand Down
18 changes: 12 additions & 6 deletions 02-architecture/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,12 @@

---

## 2. 精确版本清单 (全部 2026-04 GitHub 实时核验)
## 2. 版本清单 (实装 baseline + 目标 upgrade)

> **诚信对账声明 (2026-06-15)**: 单一事实源为 `versions.toml`(分 `[baseline]` 实装 / `[upgrade]` 目标)+ 各 manifest(`Cargo.toml` / `package.json` / `docker-compose*.yml`)。本表为人读摘要,**版本号一律以仓库 manifest 实际 pin 为准**。当前实装与目标的差异如下,不得对外当"已实现":
> - **数据层**: 实装 baseline = **PostgreSQL 16.13 (pgvector pg16) + Valkey 8-alpine**;表中 PG 17.6.0 / Valkey 9.0.3 为 `[upgrade]` 目标。
> - **推理引擎**: 实装默认 = **hugging_face (`:7071`) + ollama**(见 `04-backend/config/local.toml`);6 路并列(vLLM/SGLang/TensorRT-LLM/LMDeploy/llama.cpp)为生产 / K8s / Rainbond **目标部署路线**,baseline 未起。
> - **提交哈希 / 日期**: 为 upstream 参考目标,非本仓库逐项实时核验结果;实际核验状态以 `versions.toml` 的 `verified` 字段与 CI `versions-check` 为准。

### 2.1 L0 硬件层

Expand Down Expand Up @@ -110,7 +115,7 @@ NVIDIA 目标硬件的软件栈必须以 NVIDIA NGC 签名 CUDA / CUDA Deep Lear

| 组件 | 版本 | 提交/日期 | 许可 | 角色 |
| ------------------- | ----------------- | --------------------------- | ---------- | ------------------- |
| vllm-project/vllm | **v0.19.1** | 2026-04-18 · `b1388b1` | Apache-2.0 | 通用高吞吐 (默认) |
| vllm-project/vllm | **v0.19.1** | 2026-04-18 · `b1388b1` | Apache-2.0 | 通用高吞吐 (生产/目标默认·baseline 未起) |
| sgl-project/sglang | **v0.5.10.post1** | 2026-04 | Apache-2.0 | 复杂 Agent 编排 |
| NVIDIA/TensorRT-LLM | **v1.2.0** | (同 L1) | Apache-2.0 | DGX Spark 极致性能 |
| InternLM/lmdeploy | **v0.12.3** | 2026-04-08 · `8ea459f` ✓GPG | Apache-2.0 | 国产/本地模型运行时 |
Expand Down Expand Up @@ -193,16 +198,16 @@ NVIDIA 目标硬件的软件栈必须以 NVIDIA NGC 签名 CUDA / CUDA Deep Lear
| 组件 | 版本 | 许可 | 角色 |
| ------------------------ | --------------------------------- | -------------- | ----------------------------- |
| facebook/react | **v19.2.5** | MIT | UI 核心 |
| vercel/next.js | **v16.2.4** | MIT | SSR/RSC 框架 |
| vercel/next.js | **v16.2.6** | MIT | SSR/RSC 框架 |
| facebook/react-native | **v0.85.1** | MIT | 移动端 |
| microsoft/TypeScript | **v6.0.3** | Apache-2.0 | 类型系统 |
| oven-sh/bun | **bun-v1.3.13** | MIT | 运行时 |
| utooland/utoo | **utoo-v1.0.27** | MIT | 包管理 (国产化) |
| vitejs/vite | **v8.0.8** | MIT | 构建 (RN/独立包) |
| vitejs/vite-plugin-react | **plugin-rsc@0.5.24** | MIT | React RSC 插件 |
| tailwindlabs/tailwindcss | **v4.2.4** | MIT | 样式系统 |
| tailwindlabs/tailwindcss | **v4.3.0** | MIT | 样式系统 |
| pmndrs/zustand | **v5.0.12** | MIT | 客户端状态 |
| TanStack/query | **react-query 5.99.1** | MIT | 服务端状态 |
| TanStack/query | **react-query 5.99.2** | MIT | 服务端状态 |
| d3/d3 | **v7.9.0** | ISC | 2D 数据可视化 |
| mrdoob/three.js | **r184** | MIT | 3D/BIM 可视化 (WebGPU 动态光) |
| tauri-apps/tauri | **tauri-cli-v2.10.1** | MIT/Apache-2.0 | 桌面壳 (⚠️ Linux 实验) |
Expand Down Expand Up @@ -263,7 +268,8 @@ L5 axum 0.8.9 网关 (鉴权 + 限流 + 审计)
L4 LangGraph 规划师 Agent (任务拆解)
│ ├── 子任务 1: DWG 解析 → L3 Rust (acadrust 0.3.4)
│ ├── 子任务 2: 规范 RAG → L3 sea-orm 2.0.0-rc.38 → Supabase pg
│ └── 子任务 3: LLM 审查 → L2 vLLM 0.19.1 (主) / SGLang (备)
│ └── 子任务 3: LLM 审查 → L2 InferenceRouter
│ (实装默认 hugging_face:7071 / ollama · 目标 vLLM 0.19.1 主、SGLang 备)
L4 LangGraph 生成器 Agent (合规报告生成)
Expand Down
21 changes: 20 additions & 1 deletion 02-architecture/CONSTITUTION.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ArchIToken · 宪法 22
# ArchIToken · 宪法 23

**性质**: 强约束。违反 = CI 拒绝合并。非软规范。
**哲学**: Harness Engineering — 能力优先、开源优先、源码优先; 工程自由由标准、证据、审计、隔离和可回滚性承载。
Expand Down Expand Up @@ -543,6 +543,25 @@ ArchIToken 的目标是让一个人也能驾驭工业级 AI + AEC 系统,而不

---

## 第 23 条 · 对标顶级、力争超越,但"超越"必须有可验证证据

**北极星(目标,非既成)**: 本项目以最顶级 CTO / Fellow 的技术与管理水平为标尺,持续对标并在**结构上可赢的维度**力争超越前沿 AI 实验室与 AEC / CAD / 几何内核厂商: Anthropic、OpenAI、Google、Autodesk、Trimble、Tekla、Revit、SketchUp、SolidWorks、CATIA、Bentley、Rhino、Blender、PKPM、广联达(Glodon)、中望(ZWSOFT)、CAD 与几何内核(AutoCAD / ZWCAD / 浩辰 GstarCAD / 天正 / BricsCAD / ODA / Parasolid / ACIS · DWG/DXF 制图生态,见 §0.5)。

**诚实分层(与 §0.1 / §0.2 / §9 一致,避免类目错误)**:
- 前沿模型实验室(Anthropic / OpenAI / Google)是经内部 Router(§9)**消费**的能力适配器,**不在训练规模上与其竞争**。
- CAD / BIM / 几何内核厂商(Autodesk / Revit / Tekla / SketchUp / SolidWorks / CATIA / Bentley / Rhino / Blender / PKPM / 广联达 / 中望 / 通用 CAD: AutoCAD·ZWCAD·浩辰·BricsCAD · DWG/DXF)是经 openBIM 互操作(§0.1 / §0.2)与 DWG/DXF 运行时(§0.5)**层叠其上并互通**,**不克隆其单点产品**。
- "超越"的**合法战场** = 开放性 · AI 原生 · 可验证治理(诚信门控)· 证据链合规 · 单人 + AI 舰队的工程倍增 —— 这条它们因护城河而难走的窄道。
- **采用 vs 对标(§4 开源优先 + §3 许可红线)**: CAD / 几何 / IFC **引擎一律采用开源实现**,闭源内核只作对标与互操作,**不嵌入分发运行时**:
- **采用(开源,按许可隔离)**: OpenCASCADE(OCCT · LGPL-2.1+exception · 动态链接)· FreeCAD(LGPL · 动态链接/独立进程)· IfcOpenShell(LGPL-3.0 · 已用,动态链接/独立进程)· **LibreCAD / CGAL(GPL · 仅独立进程/服务通信、零静态链入分发,同 LibreDWG 例外模型)**。
- **对标/互操作(闭源,不嵌入)**: AutoCAD·Autodesk · 浩辰 GstarCAD · 天正 · ODA · Parasolid · ACIS —— 经 DWG/DXF(§0.5)与 openBIM(§0.1)互通,只作超越目标。
- **硬约束**: 任何 GPL/AGPL **静态链入分发运行时**即违 §3,CI `cargo-deny` / `license-checker` / `pip-licenses` 拦截;开源引擎的隔离边界登记于 `06-workers` 引擎注册表(IN_PROCESS / EXTERNAL_PROCESS / SIDECAR)。

**硬门控(与 §4 / §21 / `ARCHITOKEN-SOURCE-OF-TRUTH.md` 既有禁令一致)**: 任何"超越 / 替代 / 领先 / 第一 / 碾压"类结论,**仅当在具名维度上具备可复现、可被第三方核验的基准证据(真实项目、互操作、性能、合规、审计)时方可陈述**;缺证据时只能作为**目标(goal)与启发式建议**,**绝不作为既成声称**。规模、装机量、基础模型训练等结构性不可追平维度,不得宣称超越。

**CI 执行**: 对外叙事、README、UI、路线图、模块验收中出现竞品"超越"类措辞,必须能指向 `benchmarks/` 下可复现证据或显式标注为"目标";`scripts/check-capability-claims.py` 拦截无据的"全面超越 / 全面替代 / 世界第一 / 碾压"表述。**北极星越高,门控越严 —— 越想超越,越不能在没证据时声称超越。**

---

## 修正程序

宪法修正需:
Expand Down
8 changes: 4 additions & 4 deletions 02-architecture/MODULES.md
Original file line number Diff line number Diff line change
Expand Up @@ -221,14 +221,14 @@ ArchIToken = AEC AI-Native + Harness Engineering + OpenBIM CDE Workflow OS
- **prompt_dir**: `prompts/production_manufacturing/`
- **tables**: `work_orders`, `cnc_files`, `qc_records`, `production_batches`, `paperclip_agent_runs`

### 2.10 `construction_management` · 施工管理 · **status: active · depth: production-ready**
### 2.10 `construction_management` · 施工管理 · **status: active · depth: spec-complete**

- **id**: `construction_management`
- **zh_name**: 施工管理
- **en_name**: Construction Management
- **order**: 10
- **status**: **active** (2026-04-23 深度试点 · Stage 1-5 完成)
- **depth**: **production-ready baseline (v0.1.0)**
- **status**: **active** (2026-04-23 深度试点 · Stage 1-5 规格完成)
- **depth**: **spec-complete baseline (v0.1.0)** · 生产就绪结论未达,证据与剩余工作见 [`depth-evidence/construction_management.md`](./depth-evidence/construction_management.md)(自动化测试未补齐)
- **files**: **~170** (12 subdomains × 14 files + 7 module-level)
- **sql_tables**: **52** (48 业务 + 4 全局)
- **prompts**: **48** (12 × 4 · planner/generator/evaluator + 子域特定)
Expand All @@ -239,7 +239,7 @@ ArchIToken = AEC AI-Native + Harness Engineering + OpenBIM CDE Workflow OS
现场施工管理 + 验收闭环一体化的模块(合并原 v2.0 的"施工"+"验收")。
4D 施工模拟、进度计划、班组调度、安全检查、工序报验、分部分项验收、隐蔽工程影像留痕。
产出进度报表、施工日志、验收报告与整改清单。
**本模块是 ArchIToken 16 模块中第一个 production-ready 的深度试点 · 可作为其它模块的范式模板。**
**本模块规格层最完整(spec-complete · 可作为其它模块的范式模板);生产就绪(production-ready)结论未达,依 [`MODULE_DEPTH_DEFINITION_OF_DONE.md`](./MODULE_DEPTH_DEFINITION_OF_DONE.md) 全绿后方可声明。**
- **inputs**: `[planning_management, detailed_design, production_manufacturing, material_logistics, standard_library]`
- **outputs**: `[digital_twin, digital_archive, finance_management, human_resources]`
- **prompt_dir**: `prompts/construction_management/`
Expand Down
30 changes: 30 additions & 0 deletions 02-architecture/MODULE_DEPTH_DEFINITION_OF_DONE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!-- License: Apache-2.0 -->
# ArchIToken · 模块深度 Definition of Done (生产就绪客观判据)

**用途**:把 `depth: production-ready` 从一句声称变成**可被第三方核验的门控**。
任何模块标注 `depth: production-ready` / `生产就绪`,必须在
`02-architecture/depth-evidence/<module_id>.md` 提供本清单的**全部证据**,
且 `scripts/check-module-depth.py` 通过。否则只能标 `spec-complete` / `pilot`
等如实深度,不得冒称生产就绪(宪法 §4 · 诚信红线)。

## 生产就绪判据(全部满足才成立)

| # | 判据 | 如何核验 |
|---|---|---|
| D1 | **注册与契约**:registry 注册 + 网关路由 + OpenAPI 契约 | `shared/src/modules/<id>.rs`、`gateway.rs`、`openapi.yaml` 可查 |
| D2 | **数据真实**:该模块前端 surfaces 无未声明 mock | `check-mock-reality.py` 绿,且该模块无 `@data-status: demo` 残留 |
| D3 | **自动化测试**:happy + error + empty 三路径覆盖,CI 绿 | 后端 pytest / 前端 vitest 用例可指向该模块,CI 通过 |
| D4 | **六门控实证**:一次真实输入跑通 Planner→Generator→Evaluator→RuleChecker→SchemaValidator→Approver | 留 trace / 运行日志为证 |
| D5 | **三态 UX**:加载 / 空 / 错误三态均有真实呈现(非空白) | 截图或 e2e 断言 |
| D6 | **合规边界**:受保护断言均带证据链 / 复核态 | `check-capability-claims.py` 绿 |
| D7 | **验收清单**:可复核的验收 checklist + 真实场景回归 | 证据文件内列出并链接 |
| D8 | **零挂账**:该模块无 `[DEBT:*]` 未核销项 | allowlist / 文档无相关 DEBT |

## 深度档位(诚实用语)

- `planned` → `spec-complete`(规格/数据模型/prompt 完整,但未测试验证)→ `pilot`(少量真实场景跑通)→ `production-ready`(D1–D8 全绿)。
- **规格深 ≠ 生产就绪**。52 张表 + 48 prompts 是 `spec-complete` 的证据,不是 `production-ready` 的证据。

## 证据文件模板

见 `02-architecture/depth-evidence/_TEMPLATE.md`。每条判据用 `- [x]`(已证)/ `- [ ]`(未证)/ `- [~]`(部分),未全绿不得声明 production-ready。
14 changes: 14 additions & 0 deletions 02-architecture/depth-evidence/_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!-- License: Apache-2.0 -->
# 深度证据 · `<module_id>`

> 声明的深度档位: `<planned|spec-complete|pilot|production-ready>`
> 仅当 D1–D8 全部 `- [x]` 时方可声明 `production-ready`。判据见 ../MODULE_DEPTH_DEFINITION_OF_DONE.md

- [ ] **D1 注册与契约** — 证据:
- [ ] **D2 数据真实(无未声明 mock)** — 证据:
- [ ] **D3 自动化测试(happy/error/empty)** — 证据:
- [ ] **D4 六门控实证(留 trace)** — 证据:
- [ ] **D5 三态 UX(加载/空/错误)** — 证据:
- [ ] **D6 合规边界(证据链/复核态)** — 证据:
- [ ] **D7 验收清单 + 真实场景回归** — 证据:
- [ ] **D8 零 [DEBT] 挂账** — 证据:
30 changes: 30 additions & 0 deletions 02-architecture/depth-evidence/api-casing-audit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<!-- License: Apache-2.0 -->
# 审计 · 网关响应 serde 大小写契约(camelCase)

> 起因:price-snapshots round-trip 揪出 `QuantityCostingPriceSnapshotRecord` 缺
> `#[serde(rename_all="camelCase")]`,发 snake_case,而前端 `api.ts` 按 camelCase 读 → 拿到 undefined。
> 遂系统审计 `gateway.rs` 全部 `Serialize` 响应结构体。前端 `api.ts` 约定统一 camelCase(仅 6 处 snake,
> 均为**前端 SEND 的请求体**,见下)。

## 已修(确认前端 camelCase 消费 → 补 rename_all,全 bin 测试 45 passed 无回归)
- `QuantityCostingPriceSnapshotRecord`(price-snapshots,先前已修,round-trip 验证)
- 本批 14 个:`QuantityCostingOverviewRecord` · `…SnapshotHeadRecord` · `…SnapshotResponse` · `…SnapshotSaveResponse` · `…StandardRecord` · `…QuotaLibraryRecord` · `…QuotaResourceRecord` · `…QuotaItemRecord` · `…PriceResourceRecord` · `…RegistryResponse` · `…ApprovalRecord` · `…VoucherPlanResponse` · `…RegistryImportResponse` · `ComplianceFindingRecord`
- 契约单测:`compliance_finding_serializes_camel_case`、`qc_approval_serializes_camel_case`(断言 camelCase + 无 snake 残留)。

## 已修 · 第二批(逐个核实前端消费 → camel → 补 rename_all,全 bin 测试 47 passed 无回归)
`ProjectRecord`(api.ts `currentModuleId/areaSqm/budgetCny`)· `BoqItemRecord`(`unitPriceCny/totalCny`)·
`SemanticCategoryRecord` + `SemanticCategoryResponse`(api.ts/openbim-client `nameZh/ifcEntity/tableCode/standardCode`)·
`ComponentNamingRuleRecord` + `ComponentNamingRulesResponse`(component-naming-rules `ruleKey/namingFormula/standardName/ruleCount`)·
`BimUploadQueuedResponse`(uploadId,无前端消费者=未用,补 camel 无害)。
- 契约单测:`boq_item_serializes_camel_case`、`semantic_category_serializes_camel_case`。

## 正确保持 snake(不可改)
- 请求体(前端 SEND snake):`AgentInvokeRequest`(`project_id/tenant_id/module_id/user_input`)· 项目创建/更新请求(`current_module_id/area_sqm/budget_cny`)· `RagRetrieveRequest`(serde alias 兼容)。
- **`RagRetrieveResponse` —— 跨语言 snake**:Python orchestrator `tool_router.py` 按 `retrieval_status` 等 snake 读取(`.get("retrieval_status")`);加 camelCase 会破坏跨语言 RAG 契约且 Rust 测试抓不到。已在结构体上注释钉死。

## 结论:审计闭合
`gateway.rs` 全部 Serialize 响应结构体已逐个核实并处置 —— **22 个补 camelCase**(price-snapshots + 14 + 本批 7),**1 个(RagRetrieveResponse)据 Python 消费保持 snake**,请求体保持 snake。两批共 4 个契约单测 + 全 bin 47 passed 无回归。

## 方法
先量(审计全部结构体)→ 对前端/跨语言消费者逐个核实 → 只改确认项 → 全 bin 测试捕捉回归 → 契约单测锁定。
**不盲目全改**:snake-consumed 端点(尤其 Python 跨语言)误加 camelCase 会反向破坏,Rust 测试抓不到。
Loading
Loading