架构决策记录 (ADR)
概述
ADR(Architecture Decision Record)记录 Walnut Admin monorepo 项目中的关键架构决策。每一条 ADR 包含:决策背景(Context)、决策内容(Decision)、以及后果(Consequences)。
当前共 16 条 ADR,涵盖包命名、TypeScript 配置、依赖治理、发布流水线、测试策略、验证策略等领域。
ADR 列表
| ADR | 决策 | 状态 |
|---|---|---|
| 0001 | 包命名——诚实命名,不用 "shared" / "core" | ✅ 已实现 |
| 0002 | 双模式消费——"source" 给 Vite,CJS 构建给后端 | ✅ 已实现 |
| 0003 | 共享包不做环境变量默认值 | ✅ 已实现 |
| 0004 | 直接 import @walnut/contract,不加包装层 | ✅ 已实现 |
| 0005 | 前端 only 包 JIT(源码),共享包构建 CJS | ✅ 已实现 |
| 0006 | 按运行时 API 依赖分层 | ✅ 已实现 |
| 0007 | 后端 libs 保留为 NestJS CLI 内部 monorepo | ✅ 已实现 |
| 0008 | 统一版本号,独立部署 | ⚠️ deploy.yml 待更新 |
| 0009 | 三级质量门禁:commit → push → CI | ⚠️ 测试和 CI 待完善 |
| 0010 | 不用 TypeScript Project References | ✅ 已实现 |
| 0011 | catalogMode: strict、changesets + git-cliff 发布 | ✅ 已实现 |
| 0012 | 前后端工具链分歧(tsconfig 独立、env 加载、hoisting、边界) | ✅ 已实现 |
| 0013 | Barrel export 策略——选择性 barrel,不用 export * | ✅ 已实现 |
| 0014 | ESLint 配置策略——共享 config 包 + 三预设 | ✅ 已实现 |
| 0015 | 测试策略——Vitest 统一、co-located、分层覆盖率 | ✅ 已接受 |
| 0016 | 验证策略——保持 class-validator,暂不迁移 Zod | ✅ 已接受 |
补充文档
- Zod vs class-validator 评估 — 技术对比评估,记录为何暂不迁移 Zod