wsh5485 65b0bb04f8 feat: import CarLog v2.8 code + dev plan
把 CarLog v2.8 全套源码 + 配置导入到 i 仓库作为 baseline:
- server/src/ (13 个路由 + middleware + services + config)
- server/migrations/ (0001~0018 共 18 个迁移 + mysql)
- server/test/ (12 文件 101 测试)
- client/src/ (20 个 view + components + stores + api + composables)
- client/public/ + client/scripts/
- 全部配置文件 (.editorconfig, .eslintrc.json, .prettierrc.json, vitest.config.js, lighthouserc.json, .pa11yci.json, package.json, carlog-init.sql)
- .husky/pre-commit (git hooks)
- docs/install/ (宝塔部署文档)

不含:
- node_modules/ (本地 npm install)
- .env (敏感, 走 .env.example)
- *.zip / *.log / *.sqlite / .DS_Store

新增文档 docs/DEV-PLAN.md:
- Phase 1: 平台基座 (019 migration + 3 个 platform 路由 + 3 个 view)
- Phase 2: CarLog 子系统化 (后端 routes/ → subsystems/carlog/ + 前端 views/ → views/subsystems/carlog/ + 元数据驱动菜单)
- Phase 3: 验证 (测试 + E2E + DB 完整性)
- 交付清单 + commit 模板 + 给 Mavis review 的材料

后续 Trae 实施, 提交后我 code review + 跑测试。
2026-06-20 22:30:19 +08:00

i — 个人生活操作系统

一个单 Vue + 单 Express + 单 MySQL 的生活操作系统平台,按表前缀分多子系统,永远单用户。

第一个子系统是 CarLog(洗车管理系统),后续要加:健身、阅读、健康等。

架构核心

┌────────────────────────────────────────────────────────┐
│  Vue SPA (一个壳子)                                       │
│                                                            │
│  ┌──────────────────────────────────────────────────────┐│
│  │ 总设置 / 子系统管理 / Dashboard  (平台层)              ││
│  └──────────────────────────────────────────────────────┘│
│                                                            │
│  ┌──────────────────────────────────────────────────────┐│
│  │ 🚗 CarLog     | 💪 Fitness    | 📚 Reading             ││
│  └──────────────────────────────────────────────────────┘│
│                                                            │
└────────────────────────────────────────────────────────┘
                          │
                          ▼
┌────────────────────────────────────────────────────────┐
│  Express (一个进程)                                       │
│  ├── /api/platform/*    (总设置 / 子系统管理)              │
│  ├── /api/{resource}    (业务路由, 按子系统分组)           │
└────────────────────────────────────────────────────────┘
                          │
                          ▼
┌────────────────────────────────────────────────────────┐
│  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 内)
路由 子系统自己的路径空间(/api/{resource}
代码 子系统独立目录(server/src/subsystems/{name}/client/src/views/subsystems/{name}/
设置 每个子系统有自己的 settings schemaJSON Schema,存 platform_settings 表,key 前缀 {name}.*
菜单 每个子系统在 subsystems 表注册,平台层根据 category 分组渲染左侧导航

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

实施路线

W1: 平台骨架

  • server/migrations/001_platform.sqlsubsystems + platform_settings 表 + seed CarLog
  • server/src/routes/platform/settings.js
  • server/src/routes/platform/subsystems.js
  • server/src/views/Platform/GlobalSettings.vue
  • client/src/views/Platform/SubsystemSettings.vue(通用 JSON Schema 渲染器)
  • client/src/AppLayout.vue 改左侧菜单(按 category 分组)

W2: CarLog 表前缀迁移

  • 把 CarLog 现有 14 张表加 carlog_ 前缀(migration
  • 改 server 端所有 SQL
  • 跑全测试套件

W3+: 加第二个真子系统

  • 写一个 Fitness 子系统(健身记录),验证端到端流程

路线原则

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

详细见 docs/ARCHITECTURE.md

Git 仓库

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