🎉 feat: 建立阶段 0 工程骨架与 OpenAPI 契约机器化(WP-01 起步)
- Makefile:统一命令入口(backend/engine/docker/openapi/generate,含 make help) - backend:FastAPI + uv 最小工程,统一错误体(契约第 7 节)、ADR-015 平台 ID 生成与校验(uuid-utils);pytest 7 项、ruff、mypy strict、启动冒烟全部通过 - engine:灵台引擎 C++23/CMake 骨架,按 Lingtai C ABI 契约实现 lingtai.h(13 个 HjStatus、版本协商、句柄表防二次释放、线程局部错误上下文);doctest 5 用例通过,nm 验证仅导出 hj_* 符号 - openapi:OpenAPI 3.1 单一真源初始版(错误体/分页/Money/首批平台 ID/ContentBlock 全 21 类型/流事件 envelope),Redocly lint 0 错误、bundle 通过 - frontend:Next.js 最小骨架,openapi-typescript 生成 API 类型并通过 strict tsc - docker:hunjing-postgres(pgvector:17)compose;.env.example 与 config 示例 - ADR-025:登记测试与契约工具链(doctest/libFuzzer/Redocly/openapi-typescript/uuid-utils) - desktop:Tauri v2 占位与初始化说明(WP-10 启动)
This commit is contained in:
1 parent
5da1efe921
commit
3fbcd0437c
32 files changed
+11459
No files matched your search
@@ -397,3 +397,23 @@ UUIDv7 为高写入关系表提供索引局部性和大致创建顺序;请求
|
||||
- 开发环境用 `docker compose`(或嵌入式 PostgreSQL)启动数据库;测试统一在 PostgreSQL 上运行,不用 SQLite 内存库替代,避免方言差异掩盖缺陷。
|
||||
- 自托管两档(单机/标准服务器)均含 PostgreSQL 容器;单机档降低的是资源规格,不是能力面。
|
||||
- 迁移与性能优化只需针对 PostgreSQL(JSONB、pgvector、tsvector、事务性 DDL、行级锁);索引命名按工程规范执行(见 AGENTS.md 第 8.6 节)。
|
||||
|
||||
## ADR-025:建立工程时的测试与契约工具链登记
|
||||
|
||||
**状态**:采纳
|
||||
|
||||
**决策**
|
||||
|
||||
- C++(灵台引擎):单元测试采用 **doctest**(单头引入、编译快),fuzz 采用 **libFuzzer**(clang 原生 `-fsanitize=fuzzer`),fuzz 必测目标为 `hj_transform` 与 `hj_policy`。
|
||||
- Python(backend):pytest + pytest-asyncio,静态检查 Ruff + mypy(工程规则既有约定,此处一并登记)。
|
||||
- OpenAPI 契约工具链:**Redocly CLI**(lint + bundle 校验单一真源),TypeScript 类型用 **openapi-typescript** 生成,禁止手写 API DTO。
|
||||
- UUIDv7 生成采用成熟实现 **uuid-utils**(Python 侧),遵循契约"不自行拼位"规则。
|
||||
|
||||
**理由**
|
||||
|
||||
doctest 与 libFuzzer 与 clang 工具链零摩擦、依赖最轻;Redocly 与 openapi-typescript 是 OpenAPI 3.1 支持最完整的开源组合;避免为同一职责引入第二套工具。
|
||||
|
||||
**后果**
|
||||
|
||||
- engine 与 openapi 的 CI 检查以本登记为准;更换任一工具须更新本 ADR。
|
||||
- libFuzzer 语料与 doctest 用例随引擎模块一同交付,属于 WP-15 验收证据。
|
||||
Reference in new issue
Block a user