65b0bb04f861be90dbe8606115f150ab92cd6d92
把 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 + 跑测试。
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%