wsh5485 a365c8be10 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 通过标准
2026-06-20 22:43:43 +08:00

i — 个人生活操作系统

一个单 Vue + 单 Express + 单 MySQL 的生活操作系统平台,按子系统分代码目录和 API 路径,永远单用户。

第一个子系统是 CarLog(洗车管理系统),将来可能加:健身、阅读、健康等(用户还没决定下一子系统,本阶段不做)。

架构核心

┌────────────────────────────────────────────────────────┐
│  Vue SPA (一个壳子)                                       │
│                                                            │
│  ┌──────────────────────────────────────────────────────┐│
│  │ 总设置 / 子系统管理 / Dashboard  (平台层)              ││
│  └──────────────────────────────────────────────────────┘│
│                                                            │
│  ┌──────────────────────────────────────────────────────┐│
│  │ 🚗 CarLog     | 未来子系统                              ││
│  └──────────────────────────────────────────────────────┘│
│                                                            │
└────────────────────────────────────────────────────────┘
                          │
                          ▼
┌────────────────────────────────────────────────────────┐
│  Express (一个进程)                                       │
│  ├── /api/platform/*    (总设置 / 子系统管理 / Dashboard) │
│  ├── /api/carlog/*      (CarLog 子系统, 全部带前缀)      │
│  └── /api/{future}/*    (将来加的子系统)                  │
└────────────────────────────────────────────────────────┘
                          │
                          ▼
┌────────────────────────────────────────────────────────┐
│  MySQL @ 162.14.110.130:33306 / carlog                     │
│                                                            │
│  平台表 (无前缀):                                          │
│    subsystems / platform_settings                         │
│                                                            │
│  子系统表 (有前缀):                                        │
│    carlog_vehicles / carlog_wash_records / ...            │
│                                                            │
│  (将来加):                                              │
│    fitness_workouts / fitness_plans / ...                  │
│    reading_books / reading_notes / ...                    │
└────────────────────────────────────────────────────────┘

物理隔离靠什么

维度 做法
数据 表前缀 {subsystem}_*(同一 DB 内;CarLog 还没加前缀,留给将来加第二个子系统时)
路由 子系统自己的路径空间(/api/carlog/*
代码 子系统独立目录(server/src/subsystems/{name}/client/src/views/subsystems/{name}/
设置 每个子系统有自己的 settings schemaJSON Schema,存 platform_settings 表,key 前缀 {name}.*
菜单 每个子系统在 subsystems 表注册,平台层根据 category 分组渲染左侧导航

没有 JWT / SSO / iframe / 6 端点协议 / 独立 DB — 那些都是过度设计。

实施路线

当前阶段(W1 + W2 一并做)

  • server/migrations/019_platform.sqlsubsystems + platform_settings 表 + seed CarLog
  • server/src/routes/platform/{subsystems,settings,dashboard}.js
  • CarLog 代码移到 server/src/subsystems/carlog/13 个路由文件)
  • CarLog 路由全部 mount 到 /api/carlog/*(不再是 /api/vehicles
  • CarLog 前端 view 移到 client/src/views/subsystems/carlog/
  • 前端 API 改用 carlogApi helper(自动加 /api/carlog/ 前缀)
  • client/src/views/Platform/{GlobalSettings,SubsystemSettings,Subsystems}.vue
  • client/src/stores/platform.js + AppLayout.vue 元数据驱动菜单
  • 测试(12-20 个平台测试)+ 手动 E2E 验证

暂不做(用户没决定)

  • 加第二个子系统(健身 / 阅读 / 任何)
  • CarLog 表前缀迁移(carlog_*
  • 跨子系统 dashboard widget
  • 多用户 / RBAC / 多租户

路线原则

  • 永远单用户:不要 RBAC / 多租户 / 权限 scope
  • 一个进程一个 SPA:不分部署不分 iframe
  • 元数据驱动 UIsubsystem 的 settings_schema / nav_items 走 JSON,不硬编码
  • 物理目录隔离:subsystem 代码独立目录,加新子系统不会乱碰现有代码
  • 永远向后兼容CarLog 的现有功能不破

详细见 docs/ARCHITECTURE.mddocs/DEV-PLAN.md

Git 仓库

S
Description
No description provided
Readme 535 KiB
Languages
JavaScript 52.8%
Vue 46.2%
CSS 0.7%
HTML 0.3%