docs: clarify /api/carlog/* prefix + drop W3+ fitness plan

按用户反馈调整:

1. 路由前缀改成 /api/carlog/* (不再是 /api/vehicles 等)
   - DEV-PLAN.md Task 2.2 mount 全部加前缀
   - 新增 Task 2.3.5: 前端 carlogApi helper
   - ARCHITECTURE.md 架构图 + 6.1/6.2 代码结构更新
   - README.md 同步

2. 删除 W3+ 健身子系统计划 (用户还没决定下一子系统)
   - ARCHITECTURE.md W3+ 章节改成 "暂不规划"
   - README.md 实施路线只保留当前阶段
   - DEV-PLAN.md "不做的事" 显式列出来

3. 加 Mavis review checklist (6.2/6.3/6.4)
   - 10 项检查清单 (DB/后端/前端/API baseURL/E2E/数据完整性)
   - 10 个常见坑 (JSON parse / TINYINT boolean / mount 顺序 ...)
   - review 通过标准
This commit is contained in:
2026-06-20 22:43:43 +08:00
parent 65b0bb04f8
commit a365c8be10
3 changed files with 302 additions and 76 deletions
+25 -16
View File
@@ -32,10 +32,8 @@ i 平台是一个「生活操作系统」:单 Vue SPA + 单 Express 进程 +
┌────────────────────────────────────────────────────────┐
│ Express (一个进程) │
│ ├── /api/platform/* (总设置 / 子系统管理 / Dashboard) │
│ ├── /api/vehicles (CarLog 路由, 保持现状)
── /api/washes (CarLog)
│ ├── /api/fitness/* (将来加的 Fitness 子系统) │
│ └── /api/reading/* (将来加的 Reading 子系统) │
│ ├── /api/carlog/* (CarLog 子系统)
── /api/{future}/* (将来加的子系统)
└────────────────────────────────────────────────────────┘
@@ -65,8 +63,8 @@ i 平台是一个「生活操作系统」:单 Vue SPA + 单 Express 进程 +
| 隔离维度 | 做法 |
|---|---|
| 数据 | 表前缀 `{subsystem}_*`(同一 DB 内) |
| 路由 | 子系统自己的路径空间(`/api/{resource}` 现有;将来 `/api/fitness/*` |
| 数据 | 表前缀 `{subsystem}_*`(同一 DB 内;本阶段 CarLog 还没加前缀,留给将来加第二个子系统时 |
| 路由 | 子系统自己的路径空间(`/api/carlog/*` 现有;将来 `/api/fitness/*` |
| 代码 | 子系统独立目录(`server/src/subsystems/{name}/``client/src/views/subsystems/{name}/` |
| 设置 | 每个子系统有自己的 settings schemaJSON Schema,存 `platform_settings` 表,key 前缀 `{name}.*` |
| 菜单 | 每个子系统在 `subsystems` 表注册,平台层根据 `category` 分组渲染左侧导航 |
@@ -168,9 +166,10 @@ server/src/
│ │ ├── settings.js # GET/PUT /api/platform/settings
│ │ ├── subsystems.js # GET /api/platform/subsystems
│ │ └── dashboard.js # GET /api/platform/dashboard (跨子系统聚合)
── vehicles.js # CarLog
├── washes.js # CarLog
└── ...
── subsystems/
└── carlog/
├── index.js # 聚合导出 13 个 CarLog router
│ └── routes/ # 13 个 CarLog 路由文件
└── ...
```
@@ -184,9 +183,13 @@ client/src/
│ │ ├── GlobalSettings.vue
│ │ ├── SubsystemSettings.vue # 通用渲染器
│ │ └── Subsystems.vue # 启停 + 注册
│ ├── Login.vue # i 平台统一登录
│ ├── Home.vue # Dashboard, 读 /api/platform/dashboard
── WashesList.vue
└── ...
── subsystems/
└── carlog/ # 20 个 CarLog view
├── api/
│ ├── client.js # 底层 axios 实例(auth interceptor + 解包)
│ └── subsystems.js # carlogApi helperbaseURL = /api/carlog
├── router/index.js
└── stores/
├── auth.js
@@ -257,13 +260,19 @@ export function tableName(name) {
}
```
### W3+: 加第二个子系统(健身
### W3+(暂不规划
1.`subsystems.fitness`3-5 张表 + 3-5 个路由 + 5-10 个前端 view
用户还没决定下一子系统做什么。本阶段只做:
1. ✅ 平台基座(subsystems 表 + platform_settings + 3 个平台路由 + 3 个平台前端 + 元数据驱动菜单)
2. ✅ CarLog 子系统化(目录迁移 + 加 `/api/carlog/` 前缀 + 注册到 subsystems 表)
将来加新子系统时按这个流程:
1. 写子系统的表(带 `{subsystem}_` 前缀)+ 路由 + 前端
2. 注册到 `subsystems`
3. 平台菜单自动出现 Fitness 入口
4. 通用设置渲染器自动支持 Fitness 的 settings
5. 验证:能从平台菜单点进 Fitness,操作后回平台
3. 平台菜单自动出现新子系统入口
4. 通用设置渲染器自动支持新子系统的 settings
5. 验证端到端流程
## 8. 不做的事