重构 monorepo 并完善网页端订阅与首页体验

- 迁移为 frontend-web、frontend-electron、backend-web 与 docker 部署结构
- 网页端:订阅门禁二次弹窗、套餐/支付组件化、顶栏分组对齐
- 首页:最近文件与模板库布局优化,缩略图对齐,下载与删除操作
- 新增管理后台、支付与云端文件 API,更新 README 与项目规范

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
24kycj
2026-06-08 18:17:39 +08:00
parent 5814b7bc0e
commit 88c6ce8ccc
511 changed files with 189528 additions and 22804 deletions
@@ -0,0 +1,249 @@
---
name: fullstack-delivery-workflow
description: >-
XENON 双轨交付工作流:Electron 客户端页+Mock(轨道 A)、FastAdmin 业务模块+联调(轨道 B)。
含 progress 快照、模块签收表、四则固定提示词。配合 electron-vue2-architecture 与
docs/api 契约使用。
---
# XENON 全栈开发工作流
## 与架构 Skill 分工
| Skill | 职责 |
|-------|------|
| electron-vue2-architecture | Electron 目录、HTTP、Mock、Sign、Vuex、域模块代码 |
| 本文 | 分批、自检、签收、progress 维护 |
执行顺序:读本文定轨道与批次 → 读 electron-vue2-architecture 写代码 → 批末门禁 → 只更新 progress 快照。
## 项目边界
| 项 | 路径 / 约定 |
|----|-------------|
| 后端 | `backend-xenon/`FastAdmin · ThinkPHP |
| 客户端 | Electron + Vue2 + Element UI(待建或 `client/` 目录) |
| API 契约 | `docs/api/客户端接口文档.md``docs/api/admin端接口文档.md``docs/api/数据库文档.md` |
| 总方案 | `docs/开发方案.md` |
| 本地联调 | `backend-xenon/scripts/start.bat` → Admin `8080`、MySQL `13306` |
| 同步 / 离线 | 非本工作流范围 |
接口 url「待复核」处:按业务语义找接口,**不擅自改**文档(见 `开发方案 §3.4`)。
## 双轨
| 轨道 | 单位 | Mock | 何时用 |
|------|------|------|--------|
| A | 13 页,同业务域 | `VUE_APP_USE_MOCK=true` | Electron UI + Mock、页契约 |
| B | 1 业务模块(该模块全部 path) | `hybrid``false` | 后端 Controller/Service/SQL + 客户端真服 + Admin |
推荐:轨道 A 阶段签收后再大规模 B;某模块 Mock 已稳可单模块直接 B。
## 模块 IDP0 优先)
| ID | 名称 | 契约来源 |
|----|------|----------|
| M01 | 登录 / 鉴权 | 客户端 §1 + admin §1 |
| M02 | 权限中间件 | `开发方案 §6` |
| M03 | 行业 / 客户 / 工艺 / 产品类型 | admin 文档对应章节 |
| M04 | 产品 + 媒体 | admin + 客户端产品相关 |
| M05 | admin 用户与角色 | admin RBAC |
| M06 | 客户端用户 | admin 客户端用户 + 客户端登录 |
| M07 | 标题简介 | admin + 客户端 |
| M08 | 客户端列表 / 详情 | 客户端文档 |
| M09 | 浏览历史 / 缓存 | 客户端文档 |
| M10 | 导入 / 导出 | admin + 客户端 |
## Agent 执行协议
1.`docs/progress.md`「进度快照」。
2. 「下一批」→ **原样复制**对应轨道「下一批提示词」;「自检」→ 复制「批次自检提示词」。
3. 禁止改写四则提示词正文(用户明确要求改版除外)。
4. 回复首段:`本批:…``自检:…`
5. 先 todos → 执行 → 批末门禁 → **只改 progress 快照**rollout 勾选除外)。
6. 冲突时:`docs/module-rollout.md` 优先,与快照「建议下一批」交叉核对。
## 轨道 A — 单批(7 步)
1.`docs/api/客户端接口文档.md` 确认 path、method(禁止自造)。
2. `modules/<域>/types.ts`
3. `modules/<域>/api.ts` + `service.ts` + `mock.ts` + `index.ts`
4. `mock/v1/<资源>/<action>.json`
5. `views/<域>/<Page>.vue` + `composables/useXxx.ts`(仅 import service
6. `router/modules/<域>.ts``DefaultLayout` children
7. 批末:`npm run typecheck`;本批 path 已在 mock 覆盖
### 单页 DoD
- UI 可导航,主流程可点。
- 域五件套:types、api、service、mock、view。
- mock 响应 `{code,msg,data}` 与 FastAdmin 约定一致(成功 `code=1`)。
- 页面无 import api/mock、无 axios 裸调。
### 阶段 A 签收(切入 B 前置)
| # | 条件 |
|---|------|
| 1 | 计划内客户端页契约全覆盖 |
| 2 | 声明 path ⊆ mock/v1 或 service 覆盖 |
| 3 | `npm run typecheck` PASS |
| 4 | `npm run dev:web``dev:electron` 可启动 |
| 5 | 主流程手测 5~7 条(登录 → 列表 → 详情) |
## 轨道 B — M-Batch5 步)
| 步 | 内容 | DoD |
|----|------|-----|
| ① 契约 | mock + types + `docs/api` 字段对照 | mock JSON ≡ types ≡ 将实现响应 |
| ② 后端 | `application/api`(客户端)+ `application/admin`(后台)薄 Controller + Service + 迁移/SQL | 本模块 path curl **0 fail**Docker 8080 |
| ③ Admin | FastAdmin 菜单/权限 + CRUD 页;**复用** Service | 无需求标 N/Arollout Admin 列写 — |
| ④ hybrid | `config/mock-routes.ts` REAL_ROUTES 登记 | 抽测 13 条主路径 |
| ⑤ 签收 | rollout 勾选 + 更新快照 | 本行 客户端/后端/manifest/抽测已勾 |
### 模块 DoD
- 五步完成;本模块 curl 0 fail;mock 与真服形状一致(差异记入 rollout 备注)。
## Mock 三档
| VUE_APP_USE_MOCK | 行为 |
|------------------|------|
| true | 全 mock |
| hybrid | REAL_ROUTES 命中 → 真 API;未命中 → mock |
| false | 全真服 |
Mock / hybrid-mock **不发送**签名 Header。
## 批末命令(项目现状)
| 轨道 | 每批 | 里程碑 |
|------|------|--------|
| A | `npm run typecheck` | + `dev:electron` 冒烟 |
| B | 本模块 curl 清单 0 fail | + hybrid 抽测 + `typecheck` |
后端抽测示例:`curl -X POST http://127.0.0.1:8080/api/...`(带 Bearer / Sign 按 `.env`)。
## 模块签收表(rollout
| 列 | 含义 |
|----|------|
| 模块 ID | M01…M10 |
| 名称 | 业务模块 |
| API 数 | 本模块 path 数 |
| 客户端 | Electron 页/service 已实现 |
| 后端 | api/admin Controller 已实现 |
| Admin | FastAdmin 后台(— 表示 N/A |
| manifest | REAL_ROUTES 已登记 |
| 抽测 | hybrid 主路径通过 |
| 签收日期 | |
首个未签收:客户端 / 后端 / manifest / 抽测 任一未勾。
## 自检 vs 下一批
| | 自检 | 下一批 |
|---|------|--------|
| 目的 | 验 DoD | 实现新一批 |
| 首段 | `自检:…` | `本批:…` |
| 写代码 | 否(补漏除外) | 是 |
| 改 progress | 仅快照 | 快照 + rollout |
## 禁止
- 改 progress 内四则提示词(用户明确要求除外)
- 自检重复实现整批
- 无模块 ID / 无域边界空回归
- 未登记 REAL_ROUTES 即宣称模块完成
- api Controller 与 admin Controller 各写一套重复业务逻辑
- 未读 `docs/api` 猜字段
- 跨域同批大改
- 页内 mock 数据或散落 HTTP
- 擅自修改 API 文档「待复核」url
---
## progress.md 模板(`docs/progress.md`
```markdown
# progress.md
> Agent 只改「进度快照」;勿改下方四则提示词。
## 进度快照
| 项 | 填写 |
|----|------|
| 更新日期 | |
| 当前轨道 | A / B |
| 当前模块/域 | |
| 建议下一批 | |
| 本批已完成 | |
## 轨道A — 批次自检提示词
(粘贴 SKILL 对应代码块全文)
## 轨道A — 下一批提示词
(粘贴 SKILL 对应代码块全文)
## 轨道B — 批次自检提示词
(粘贴 SKILL 对应代码块全文)
## 轨道B — 下一批提示词
(粘贴 SKILL 对应代码块全文)
```
## module-rollout.md 模板(`docs/module-rollout.md`
```markdown
# module-rollout.md
| ID | 名称 | API数 | 客户端 | 后端 | Admin | manifest | 抽测 | 签收日期 | 备注 |
|----|------|-------|--------|------|-------|----------|------|----------|------|
| M01 | 登录鉴权 | | | | | | | | |
```
---
## 四则提示词(固定正文,写入 progress.md
### 轨道A — 下一批提示词
```text
执行轨道A下一批(Electron 页+Mock)。先建 todos。须配合 electron-vue2-architecture。自判:读 progress「建议下一批」;无则从 docs/api/客户端接口文档.md 取同域未实现页,每批 1~3 页。首段「本批:轨道A <域> <页名>」。① docs/api 定 path ② modules/<域>/{types,api,service,mock,index} ③ mock/v1/*.json ④ views/<域>/*.vue + composable ⑤ router/modules/<域>.ts。批末 npm run typecheck。禁跨域同批、禁页内 axios/mock、禁自造 API。只改 progress 快照。
```
### 轨道A — 批次自检提示词
```text
轨道A自检本批。先建 todos。自判:本对话刚完成页优先,否则读快照「当前模块/域」。首段「自检:轨道A <域> <页名>」。核对:域五件套齐全;本批 path mock 已覆盖;页面仅 import service;主路径 mock 可点。批末 npm run typecheck。只改 progress 快照。
```
### 轨道B — 下一批提示词
```text
执行轨道B M-Batch。先建 todos。须配合 electron-vue2-architecture + backend-xenon。自判:读 progress + module-rollout + docs/api;按 M01→M10 取首个未签收(客户端/后端/manifest/抽测未全勾)。首段「本批:Mxx <名>」。① 契约:mock+types 对照 docs/api ② backend-xenon Controller+Service+SQL,本模块 curl 0 fail ③ FastAdmin AdminN/A 写 —)④ config/mock-routes REAL_ROUTES + hybrid 抽测 13 条 ⑤ rollout 勾选+快照。禁无模块 ID、禁未 manifest 即完成、禁重复 Service 逻辑。只改 progress 快照。
```
### 轨道B — 批次自检提示词
```text
轨道B M-Batch 自检。先建 todos。自判:本对话模块优先,否则读快照+rollout 对应行+docs/api。首段「自检:Mxx <名>」。核对:mock/types 与 Service 响应一致;本模块 curl 0 failAdmin 复用 Service 或 N/AREAL_ROUTES 已登记;rollout 本行已勾。只改 progress 快照。
```
---
## 初始化 Checklist
```text
[ ] docs/progress.md(快照 + 四则提示词)
[ ] docs/module-rollout.mdM01M10 空表)
[ ] 客户端工程按 electron-vue2-architecture 初始化
[ ] backend-xenon/scripts/start.bat 可启动
[ ] .envVUE_APP_API_BASE=http://127.0.0.1:8080
[ ] 首批:M01 或轨道 A 登录页,更新 progress 快照
```
## 非琐碎开发勾选
- 轨道 A`electron-vue2-architecture` + `fullstack-delivery-workflow`
- 轨道 B:同上