77adc8e498f6323e69b5a1f2341a6eda77947ca5
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
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 schema(JSON Schema,存 platform_settings 表,key 前缀 {name}.*) |
| 菜单 | 每个子系统在 subsystems 表注册,平台层根据 category 分组渲染左侧导航 |
没有 JWT / SSO / iframe / 6 端点协议 / 独立 DB — 那些都是过度设计。
实施路线
W1: 平台骨架
server/migrations/001_platform.sql(subsystems + platform_settings 表 + seed CarLog)server/src/routes/platform/settings.jsserver/src/routes/platform/subsystems.jsserver/src/views/Platform/GlobalSettings.vueclient/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
- 元数据驱动 UI:subsystem 的 settings_schema / nav_items 走 JSON,不硬编码
- 物理目录隔离:subsystem 代码独立目录,加新子系统不会乱碰现有代码
- 永远向后兼容:CarLog 的现有功能不破
详细见 docs/ARCHITECTURE.md。
Git 仓库
- 仓库:https://gitea.img2img.com/wsh5485/i.git
- 平台:Gitea
- 推送:osxkeychain 自动记住 token
Description
Languages
JavaScript
52.8%
Vue
46.2%
CSS
0.7%
HTML
0.3%