wsh5485 77adc8e498 docs: initial README + ARCHITECTURE.md + .gitignore
i 仓库第一版:
- README.md: 项目简介 + 架构图 + W1-W3 路线图
- docs/ARCHITECTURE.md: 单 SPA + 单库 + 表前缀方案 (10 节)
- .gitignore: 完整覆盖

CarLog 仓库(独立)保持 v2.8 + 精简 README,不动。

架构核心决策:
- 单 Vue SPA + 单 Express 进程 + 单 MySQL
- 表前缀分多子系统 (carlog_ / fitness_ / reading_)
- 元数据驱动 UI (subsystems 表的 settings_schema + nav_items)
- 永远单用户 — 不要 RBAC / 多租户 / JWT / iframe
2026-06-20 22:18:23 +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%