feat: 累积功能变更 — 聊天集成、租户管理、小程序更新、ETL 增强、迁移脚本
包含多个会话的累积代码变更: - backend: AI 聊天服务、触发器调度、认证增强、WebSocket、调度器最小间隔 - admin-web: ETL 状态页、任务管理、调度配置、登录优化 - miniprogram: 看板页面、聊天集成、UI 组件、导航更新 - etl: DWS 新任务(finance_area_daily/board_cache)、连接器增强 - tenant-admin: 项目初始化 - db: 19 个迁移脚本(etl_feiqiu 11 + zqyy_app 8) - packages/shared: 枚举和工具函数更新 - tools: 数据库工具、报表生成、健康检查 - docs: PRD/架构/部署/合约文档更新 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,18 @@
|
||||
# apps/miniprogram — 微信小程序
|
||||
|
||||
<!-- AI_CHANGELOG
|
||||
- 2026-03-28 02:03:11 | Prompt: 登录落地页修复 | 认证流程章节补充权限码驱动登录跳转说明(落地页优先级、/me 降级策略)
|
||||
- 2026-03-27 19:07:51 | Prompt: board-finance 双重格式化修复 | board-finance.ts 移除 formatMoney() 预格式化,
|
||||
金额字段传原始数字(?? 0),格式化统一由 WXS 完成;添加 checkPageAccess 权限守卫;
|
||||
区域筛选从 7→9 项;新增 isCurrentMonth 预估标记和 aiInsights 字段。
|
||||
- 2026-03-20 23:41:47 | Prompt: ai-prompt-refinement spec 验证 | board-coach.ts Mock 数据从 6 位助教精简为 2 个空骨架项,
|
||||
用于字段覆盖排查;页面结构和逻辑不变。
|
||||
- 2026-03-20 | Prompt: 小程序文档过期检查与落盘 | 页面路由表从 13→19 条(同步 app.json),
|
||||
移除已删除的 mvp/index/logs;目录结构补充 services/、assets/、utils 22 个文件;
|
||||
新增组件清单(18 个);API 端点表补充 me/tasks/{id}/performance/customers/coaches 等;
|
||||
Roadmap 更新已完成项;移除已废弃的 MVP 页面章节。
|
||||
-->
|
||||
|
||||
微信小程序前端项目,基于 Donut 多端框架 + TDesign 组件库,为台球门店会员提供移动端服务入口。
|
||||
|
||||
## 技术栈
|
||||
@@ -14,23 +27,26 @@
|
||||
```
|
||||
apps/miniprogram/
|
||||
├── miniprogram/ # 小程序主体代码
|
||||
│ ├── app.ts # 应用入口(wx.login 获取 code)
|
||||
│ ├── app.json # 全局配置(页面路由、窗口样式)
|
||||
│ ├── app.wxss # 全局样式
|
||||
│ ├── pages/ # 页面目录
|
||||
│ │ ├── mvp/ # MVP 全链路验证页
|
||||
│ │ ├── index/ # 首页
|
||||
│ │ ├── login/ # 登录页
|
||||
│ │ ├── apply/ # 入驻申请页
|
||||
│ │ ├── reviewing/ # 审核中等待页
|
||||
│ │ ├── no-permission/ # 无权限提示页
|
||||
│ │ ├── dev-tools/ # 开发调试面板(仅 develop 环境)
|
||||
│ │ └── logs/ # 日志页
|
||||
│ ├── components/ # 全局组件
|
||||
│ │ └── dev-fab/ # 浮动调试按钮(仅 develop 环境显示)
|
||||
│ ├── utils/ # 工具函数
|
||||
│ ├── app.ts # 应用入口(检查登录状态 → 路由分发)
|
||||
│ ├── app.json # 全局配置(页面路由、TabBar、窗口样式)
|
||||
│ ├── app.wxss # 全局样式(CSS 变量系统、头像色板)
|
||||
│ ├── pages/ # 页面目录(19 个,详见「页面路由」)
|
||||
│ ├── components/ # 可复用组件(18 个,详见「组件清单」)
|
||||
│ ├── services/ # 数据请求层
|
||||
│ │ └── api.ts # 统一 API 入口(封装所有后端调用)
|
||||
│ ├── utils/ # 工具函数(22 个)
|
||||
│ │ ├── config.ts # 环境配置(API 地址自动切换)
|
||||
│ │ └── util.ts # 通用工具(日期格式化等)
|
||||
│ │ ├── request.ts # HTTP 请求封装(JWT 自动注入、刷新)
|
||||
│ │ ├── router.ts # 页面跳转工具
|
||||
│ │ ├── vi-colors.ts # VI 颜色常量
|
||||
│ │ ├── ai-color-manager.ts # AI 配色管理器
|
||||
│ │ ├── avatar-color.ts # 头像颜色映射(姓名 → 24 色)
|
||||
│ │ ├── task-config.ts # 任务类型配置
|
||||
│ │ ├── mock-data.ts # Mock 数据(开发调试用)
|
||||
│ │ └── ... # format.wxs、time.wxs、money.ts 等
|
||||
│ ├── assets/ # 静态资源
|
||||
│ │ ├── icons/ # 图标文件
|
||||
│ │ └── images/ # 图片文件
|
||||
│ ├── miniprogram_npm/ # 构建后的 npm 包(TDesign 组件)
|
||||
│ ├── i18n/ # 国际化资源
|
||||
│ └── miniapp/ # Donut 多端原生资源
|
||||
@@ -53,23 +69,54 @@ apps/miniprogram/
|
||||
|
||||
### 页面路由
|
||||
|
||||
当前注册页面(`app.json`):
|
||||
当前注册页面(`app.json`,共 19 个):
|
||||
|
||||
| 路径 | 说明 |
|
||||
|------|------|
|
||||
| `pages/mvp/mvp` | MVP 全链路验证(从后端读取测试数据) |
|
||||
| `pages/index/index` | 首页(待开发) |
|
||||
| `pages/login/login` | 登录页 |
|
||||
| `pages/apply/apply` | 入驻申请页 |
|
||||
| `pages/reviewing/reviewing` | 审核中等待页 |
|
||||
| `pages/no-permission/no-permission` | 无权限提示页 |
|
||||
| `pages/task-list/task-list` | 任务列表页(H5 原型 1:1 重写,四种任务类型分组) |
|
||||
| `pages/notes/notes` | 备注管理页(备注 CRUD + 关联任务上下文) |
|
||||
| `pages/chat/chat` | AI 对话页(CHAT-2b/3/4,按上下文进入对话) |
|
||||
| `pages/chat-history/chat-history` | 对话历史列表页(CHAT-1) |
|
||||
| `pages/board-coach/board-coach` | 助教看板页(BOARD-1,排序×技能×时间筛选) |
|
||||
| `pages/dev-tools/dev-tools` | 开发调试面板(仅 develop 环境,通过 dev-fab 浮动按钮进入) |
|
||||
| `pages/logs/logs` | 日志页(框架默认) |
|
||||
| 路径 | 说明 | TabBar |
|
||||
|------|------|:------:|
|
||||
| `pages/login/login` | 登录页(首页,微信授权登录) | |
|
||||
| `pages/apply/apply` | 入驻申请页 | |
|
||||
| `pages/reviewing/reviewing` | 审核中等待页 | |
|
||||
| `pages/no-permission/no-permission` | 无权限 / 账号禁用提示页 | |
|
||||
| `pages/task-list/task-list` | 任务列表页(四种任务类型分组、置顶/放弃、备注弹窗) | ✅ 任务 |
|
||||
| `pages/task-detail/task-detail` | 任务详情页(维客线索、服务记录、AI 分析、备注) | |
|
||||
| `pages/notes/notes` | 备注管理页(备注 CRUD + 关联任务上下文) | |
|
||||
| `pages/board-finance/board-finance` | 财务看板页(6 大板块 + 环比开关) | ✅ 看板 |
|
||||
| `pages/board-coach/board-coach` | 助教看板页(排序×技能×时间三重筛选) | |
|
||||
| `pages/board-customer/board-customer` | 客户看板页(维度×项目筛选 + 分页) | |
|
||||
| `pages/my-profile/my-profile` | 个人中心页 | ✅ 我的 |
|
||||
| `pages/performance/performance` | 绩效概览页(档位进度、收入明细、新客/常客) | |
|
||||
| `pages/performance-records/performance-records` | 绩效明细页(按日期分组的服务记录) | |
|
||||
| `pages/customer-detail/customer-detail` | 客户详情页(完整档案 + AI 洞察 + 维客线索) | |
|
||||
| `pages/customer-service-records/customer-service-records` | 客户服务记录页(按日期分组的消费记录) | |
|
||||
| `pages/coach-detail/coach-detail` | 助教详情页(业绩数据 + 客户列表) | |
|
||||
| `pages/chat/chat` | AI 对话页(SSE 流式输出,按上下文进入对话) | |
|
||||
| `pages/chat-history/chat-history` | 对话历史列表页 | |
|
||||
| `pages/dev-tools/dev-tools` | 开发调试面板(仅 develop 环境,通过 dev-fab 浮动按钮进入) | |
|
||||
|
||||
## 组件清单
|
||||
|
||||
可复用组件(`miniprogram/components/`,共 18 个):
|
||||
|
||||
| 组件 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| abandon-modal | `components/abandon-modal/` | 放弃任务确认弹窗 |
|
||||
| ai-float-button | `components/ai-float-button/` | 页面底部 AI 助手浮动入口 |
|
||||
| ai-inline-icon | `components/ai-inline-icon/` | 行内 AI 小图标(30rpx,6 种配色) |
|
||||
| ai-title-badge | `components/ai-title-badge/` | 标题行 AI 胶囊徽章(6 种配色) |
|
||||
| banner | `components/banner/` | 页面顶部用户信息条 |
|
||||
| board-tab-bar | `components/board-tab-bar/` | 看板页面标签切换栏 |
|
||||
| clue-card | `components/clue-card/` | 维客线索单项卡片 |
|
||||
| clue-list | `components/clue-list/` | 维客线索列表容器 |
|
||||
| coach-level-tag | `components/coach-level-tag/` | 助教等级徽章(初级/中级/高级/星级) |
|
||||
| dev-fab | `components/dev-fab/` | 开发调试浮动按钮(仅 develop 环境) |
|
||||
| filter-dropdown | `components/filter-dropdown/` | 看板筛选下拉菜单 |
|
||||
| heart-icon | `components/heart-icon/` | 关系指数心形图标(4 级渐变) |
|
||||
| hobby-tag | `components/hobby-tag/` | 客户爱好标签 |
|
||||
| metric-card | `components/metric-card/` | 数据指标展示卡片 |
|
||||
| note-modal | `components/note-modal/` | 备注编辑弹窗 |
|
||||
| perf-progress-bar | `components/perf-progress-bar/` | 业绩档位进度条 |
|
||||
| service-record-card | `components/service-record-card/` | 服务记录单项卡片 |
|
||||
| star-rating | `components/star-rating/` | 星级评分组件 |
|
||||
|
||||
## 后端 API 集成
|
||||
|
||||
@@ -110,6 +157,12 @@ POST /api/xcx-auth/login → 重新登录获取完整令牌(含 site_id + ro
|
||||
- `rejected`:审批拒绝,可重新申请
|
||||
- `disabled`:账号禁用
|
||||
|
||||
登录落地页(approved 用户):
|
||||
- 登录成功后额外请求 `/api/xcx/me` 获取 `permissions[]` 权限码
|
||||
- 调用 `syncPermissions()` 设置 tab 可见性,`getPermissionHome()` 计算落地页
|
||||
- 落地页优先级:board-finance > board-customer > board-coach > task-list > my-profile
|
||||
- `/me` 请求失败时降级到 my-profile,后续 `checkAuthStatus` 补偿
|
||||
|
||||
令牌类型:
|
||||
- 受限令牌(`limited=True`):new/pending/rejected 用户,仅可访问申请和状态查询端点
|
||||
- 完整令牌:approved 用户,包含 `user_id` + `site_id` + `roles`
|
||||
@@ -137,28 +190,28 @@ POST /api/xcx-auth/login → 重新登录获取完整令牌(含 site_id + ro
|
||||
| `/api/xcx-auth/sites` | GET | 获取关联门店列表 |
|
||||
| `/api/xcx-auth/switch-site` | POST | 切换当前门店 |
|
||||
| `/api/xcx-auth/refresh` | POST | 刷新令牌 |
|
||||
| `/api/xcx/tasks` | GET | 获取任务列表 |
|
||||
| `/api/xcx/me` | GET | 查询当前用户信息 |
|
||||
| `/api/xcx/tasks` | GET | 获取任务列表(含绩效概览) |
|
||||
| `/api/xcx/tasks/{task_id}` | GET | 获取任务详情(维客线索、服务记录、AI 分析) |
|
||||
| `/api/xcx/tasks/{task_id}/pin` | POST | 置顶/取消置顶任务 |
|
||||
| `/api/xcx/tasks/{task_id}/abandon` | POST | 放弃/取消放弃任务 |
|
||||
| `/api/xcx/tasks/{task_id}/abandon` | POST | 放弃任务 |
|
||||
| `/api/xcx/tasks/{task_id}/restore` | POST | 取消放弃任务 |
|
||||
| `/api/xcx/notes` | GET/POST/DELETE | 备注 CRUD |
|
||||
| `/api/xcx/config/skill-types` | GET | 项目类型筛选器配置(CONFIG-1) |
|
||||
| `/api/xcx/board/coaches` | GET | 助教看板(BOARD-1,排序×技能×时间筛选) |
|
||||
| `/api/xcx/board/customers` | GET | 客户看板(BOARD-2,维度×项目筛选 + 分页) |
|
||||
| `/api/xcx/board/finance` | GET | 财务看板(BOARD-3,6 大板块 + 环比开关) |
|
||||
| `/api/xcx/chat/history` | GET | CHAT-1 对话历史列表 |
|
||||
| `/api/xcx/chat/{chat_id}/messages` | GET | CHAT-2a 通过 chatId 查消息 |
|
||||
| `/api/xcx/chat/messages` | GET | CHAT-2b 通过上下文查消息(contextType + contextId) |
|
||||
| `/api/xcx/chat/{chat_id}/messages` | POST | CHAT-3 发送消息(同步回复) |
|
||||
| `/api/xcx/chat/stream` | POST | CHAT-4 SSE 流式对话 |
|
||||
| `/api/xcx-test` | GET | MVP 全链路验证 |
|
||||
| `/api/xcx/performance` | GET | 绩效概览(档位、收入、新客/常客) |
|
||||
| `/api/xcx/performance/records` | GET | 绩效明细(按日期分组) |
|
||||
| `/api/xcx/customers/{id}` | GET | 客户详情(完整档案 + AI 洞察) |
|
||||
| `/api/xcx/coaches/{id}` | GET | 助教详情 |
|
||||
| `/api/xcx/config/skill-types` | GET | 项目类型筛选器配置 |
|
||||
| `/api/xcx/board/coaches` | GET | 助教看板(排序×技能×时间筛选) |
|
||||
| `/api/xcx/board/customers` | GET | 客户看板(维度×项目筛选 + 分页) |
|
||||
| `/api/xcx/board/finance` | GET | 财务看板(6 大板块 + 环比开关) |
|
||||
| `/api/xcx/chat/history` | GET | 对话历史列表 |
|
||||
| `/api/xcx/chat/{chat_id}/messages` | GET/POST | 查看/发送消息 |
|
||||
| `/api/xcx/chat/messages` | GET | 通过上下文查消息 |
|
||||
| `/api/xcx/chat/stream` | POST | SSE 流式对话 |
|
||||
|
||||
> 完整 API 文档见 [`apps/backend/docs/API-REFERENCE.md`](../backend/docs/API-REFERENCE.md)
|
||||
|
||||
## MVP 页面
|
||||
|
||||
`pages/mvp/mvp` 是全链路验证页面,从后端 `/api/xcx-test` 读取 `test."xcx-test"` 表数据并显示,用于验证:
|
||||
- 小程序 → 后端 API → 数据库 的完整链路
|
||||
- 网络请求、错误处理、加载状态
|
||||
> 完整接口契约见 [`docs/miniprogram-dev/API-contract.md`](../../docs/miniprogram-dev/API-contract.md)
|
||||
> 后端 API 参考见 [`apps/backend/docs/API-REFERENCE.md`](../backend/docs/API-REFERENCE.md)
|
||||
|
||||
## 权限模型
|
||||
|
||||
@@ -205,13 +258,17 @@ POST /api/xcx-auth/login → 重新登录获取完整令牌(含 site_id + ro
|
||||
|
||||
## Roadmap
|
||||
|
||||
- [ ] 完善认证流程页面(登录 → 申请 → 等待审批 → 首页)
|
||||
- [x] 任务列表页面(task-list,H5 原型 1:1 重写,含四种任务类型分组、上下文菜单、备注弹窗)
|
||||
- [ ] 任务管理功能联调(置顶、放弃、备注 API 对接)
|
||||
- [ ] 数据看板页面(助教业绩、客户分析)
|
||||
- [ ] 会员中心页面
|
||||
- [ ] 助教预约功能
|
||||
- [ ] 订单查询功能
|
||||
- [x] 认证流程页面(登录 → 申请 → 等待审批 → 首页)
|
||||
- [x] 任务列表页面(task-list,四种任务类型分组、上下文菜单、备注弹窗)
|
||||
- [x] 任务详情页面(task-detail,维客线索、服务记录、AI 分析)
|
||||
- [x] 数据看板页面(助教/客户/财务三大看板)
|
||||
- [x] 绩效页面(performance,档位进度、收入明细、新客/常客)
|
||||
- [x] 客户详情页面(customer-detail,完整档案 + AI 洞察)
|
||||
- [x] 助教详情页面(coach-detail,业绩数据 + 客户列表)
|
||||
- [x] AI 对话页面(chat,SSE 流式输出 + 8 个 AI App)
|
||||
- [x] 个人中心页面(my-profile)
|
||||
- [x] VI 颜色系统统一(24 色头像色板、AI 配色系统)
|
||||
- [ ] 前后端联调(services/api.ts 当前为 mock 模式,待恢复真实 API 调用)
|
||||
- [ ] 多门店切换 UI
|
||||
- [ ] 消息通知(微信订阅消息)
|
||||
- [ ] CI/CD(代码检查、自动上传体验版)
|
||||
|
||||
Reference in New Issue
Block a user