Merge branch 'yongxu-dev' into devlop
# Conflicts: # .cursor/agent/软件测试/evolution/索引.md resolved by yongxu-dev version # .cursor/skills/testing/SKILL.md resolved by yongxu-dev version # .gitignore resolved by yongxu-dev version # miniprogram/app.js resolved by yongxu-dev version # miniprogram/app.json resolved by yongxu-dev version # miniprogram/pages/chapters/chapters.js resolved by yongxu-dev version # miniprogram/pages/index/index.js resolved by yongxu-dev version # miniprogram/pages/index/index.wxml resolved by yongxu-dev version # miniprogram/pages/match/match.js resolved by yongxu-dev version # miniprogram/pages/my/my.js resolved by yongxu-dev version # miniprogram/pages/my/my.wxml resolved by yongxu-dev version # miniprogram/pages/my/my.wxss resolved by yongxu-dev version # miniprogram/pages/read/read.js resolved by yongxu-dev version # miniprogram/pages/read/read.wxml resolved by yongxu-dev version # miniprogram/pages/read/read.wxss resolved by yongxu-dev version # miniprogram/pages/wallet/wallet.js resolved by yongxu-dev version # miniprogram/pages/wallet/wallet.wxml resolved by yongxu-dev version # miniprogram/pages/wallet/wallet.wxss resolved by yongxu-dev version # miniprogram/utils/ruleEngine.js resolved by yongxu-dev version # miniprogram/utils/trackClick.js resolved by yongxu-dev version # soul-admin/dist/index.html resolved by yongxu-dev version # soul-admin/src/components/RichEditor.tsx resolved by yongxu-dev version # soul-admin/src/layouts/AdminLayout.tsx resolved by yongxu-dev version # soul-admin/src/pages/api-docs/ApiDocsPage.tsx resolved by yongxu-dev version # soul-admin/src/pages/content/ContentPage.tsx resolved by yongxu-dev version # soul-admin/src/pages/settings/SettingsPage.tsx resolved by yongxu-dev version # soul-admin/tsconfig.tsbuildinfo resolved by yongxu-dev version # soul-api/.env.production resolved by yongxu-dev version # soul-api/internal/database/database.go resolved by yongxu-dev version # soul-api/internal/handler/balance.go resolved by yongxu-dev version # soul-api/internal/handler/book.go resolved by yongxu-dev version # soul-api/internal/handler/ckb_open.go resolved by yongxu-dev version # soul-api/internal/handler/db.go resolved by yongxu-dev version # soul-api/internal/handler/db_book.go resolved by yongxu-dev version # soul-api/internal/handler/db_person.go resolved by yongxu-dev version # soul-api/internal/handler/search.go resolved by yongxu-dev version # soul-api/internal/handler/upload.go resolved by yongxu-dev version # soul-api/internal/router/router.go resolved by yongxu-dev version # soul-api/wechat/info.log resolved by yongxu-dev version # 开发文档/10、项目管理/运营与变更.md resolved by yongxu-dev version # 开发文档/1、需求/需求汇总.md resolved by yongxu-dev version
This commit is contained in:
7
.cursor/agent/产品经理/evolution/2026-03-16.md
Normal file
7
.cursor/agent/产品经理/evolution/2026-03-16.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# 产品经理 经验记录 - 2026-03-16
|
||||
|
||||
## new-soul 派对AI 与 Mycontent 定位差异(会议:new-soul 新需求与当前项目差异分析)
|
||||
|
||||
- **new-soul 派对AI**:内容运营侧 AI 助手,服务于《一场soul的创业实验》的派对→录屏→剪辑→成片→分发→文章→小程序全链路
|
||||
- **当前 Mycontent**:产品侧,面向创业者的社区/工具型小程序,核心是内容→会员→导师变现、存客宝对接、分销等
|
||||
- **结论**:两者是同一业务的不同层面(运营 vs 产品),互补非替代
|
||||
13
.cursor/agent/产品经理/evolution/2026-03-17.md
Normal file
13
.cursor/agent/产品经理/evolution/2026-03-17.md
Normal file
@@ -0,0 +1,13 @@
|
||||
# 产品经理 经验记录 - 2026-03-17
|
||||
|
||||
## 稳定版源码质量优化(会议:2026-03-17)
|
||||
|
||||
- **验收标准**:优化后现有功能行为不变,三端联调通过
|
||||
- **优先级**:高优(安全)→ 中优(可维护)→ 低优(性能/结构)
|
||||
- **原则**:源码质量优化按安全→可维护→性能分批,用户无感知
|
||||
|
||||
---
|
||||
|
||||
## 会议收尾(2026-03-17)
|
||||
|
||||
- 10 项优化全部完成;测试流程与报告模板已定稿;开发文档已同步
|
||||
33
.cursor/agent/后端工程师/evolution/2026-03-14.md
Normal file
33
.cursor/agent/后端工程师/evolution/2026-03-14.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# 2026-03-14 - 内容排名算法修正(排名分公式)
|
||||
|
||||
## 问题 / 场景
|
||||
|
||||
- 管理端「内容排行」与小程序「精选推荐」共用 `computeArticleRankingSections`,原算法错误:
|
||||
- 使用「原始数值 × 权重」:`hot = readCnt×readWeight + payCnt×payWeight + recencyScore×recencyWeight`
|
||||
- `recencyScore` 为 0–1 的天数衰减,非排名分
|
||||
- 管理端修改权重后,列表不刷新(只调了 loadList,未调 loadRanking)。
|
||||
|
||||
## 解决方案
|
||||
|
||||
### 算法修正(db_book.go computeSectionsWithHotScore)
|
||||
|
||||
- **公式**:热度积分 = 阅读权重×阅读排名分 + 新度权重×新度排名分 + 付款权重×付款排名分(三权重之和须为 1)
|
||||
- **排名分规则**:
|
||||
- 阅读量前 20 名:第 1 名=20 分 … 第 20 名=1 分,其余 0 分
|
||||
- 最近更新前 30 篇:第 1 名=30 分 … 第 30 名=1 分,其余 0 分
|
||||
- 付款数前 20 名:第 1 名=20 分 … 第 20 名=1 分,其余 0 分
|
||||
- **权重配置**:从 `system_config.article_ranking_weights` 读取 readWeight、recencyWeight、payWeight
|
||||
- **手动覆盖**:若 `chapters.hot_score > 0`,则优先使用该值
|
||||
|
||||
### 与前端约定
|
||||
|
||||
- 管理端保存权重后需同时调用 `loadList()` 和 `loadRanking()`,并关闭弹窗,列表才能立即刷新。
|
||||
|
||||
## 代码位置
|
||||
|
||||
- `soul-api/internal/handler/db_book.go`:`computeSectionsWithHotScore`、`computeArticleRankingSections`
|
||||
- 管理端 `ContentPage.tsx`:`handleSaveRankingWeights` 中 loadRanking + setShowRankingAlgorithmModal(false)
|
||||
|
||||
## 影响
|
||||
|
||||
- 管理端内容排行榜、小程序精选推荐(`/api/miniprogram/book/recommended`)均复用该算法,修正后两端同步生效。
|
||||
17
.cursor/agent/后端工程师/evolution/2026-03-16.md
Normal file
17
.cursor/agent/后端工程师/evolution/2026-03-16.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# 后端工程师 经验记录 - 2026-03-16
|
||||
|
||||
## ParseAutoLinkContent 必须输出 data-label
|
||||
|
||||
- TipTap Mention 仅从 `data-label` 解析显示名,缺则回退显示 `data-id`(token)
|
||||
- 新建 mention span:`<span data-type="mention" data-id="TOKEN" data-label="名字">@名字</span>`
|
||||
- 已损坏内容(span 内为 token):用 token 查 persons 取真实名字补回 data-label
|
||||
|
||||
## 存客宝创建计划参数
|
||||
|
||||
- planType=1、sceneId=9、scenario=9、status=1
|
||||
- 管理端添加、文章 @ 自动创建两处均已同步
|
||||
|
||||
## new-soul 派对AI 与 content_upload.py(会议:new-soul 新需求与当前项目差异分析)
|
||||
|
||||
- content_upload.py 直连 DB 与 soul-api 并存,需核对 chapters 表结构与字段一致性
|
||||
- 中长期可规划将文章上传迁移到 soul-api admin/db 接口,统一数据入口
|
||||
73
.cursor/agent/后端工程师/evolution/2026-03-17.md
Normal file
73
.cursor/agent/后端工程师/evolution/2026-03-17.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# 后端 - 2026-03-17
|
||||
|
||||
## 代付 PayNotify 权益归属修复
|
||||
|
||||
### 问题
|
||||
|
||||
代付支付回调中,`buyerUserID` 由 openID 解析得到,即**代付人**。权益激活(全书、VIP、章节、余额充值)和分佣均用 `buyerUserID`,导致权益错误给到代付人,而非发起人。
|
||||
|
||||
### 修复
|
||||
|
||||
引入 `beneficiaryUserID`(权益归属人):
|
||||
|
||||
- **代付订单**:`beneficiaryUserID = order.UserID`(发起人)
|
||||
- **普通订单**:`beneficiaryUserID = buyerUserID`(付款人)
|
||||
|
||||
权益激活、分佣、取消未支付订单等逻辑统一改用 `beneficiaryUserID`。
|
||||
|
||||
### 经验
|
||||
|
||||
- 代付场景:`order.user_id` = 发起人,`payer_user_id` = 代付人;权益与分佣必须按 `order.user_id` 处理
|
||||
- PayNotify 中 openID 解析得到的是实际付款人,代付时需以 order 的 user_id 为权益归属
|
||||
|
||||
---
|
||||
|
||||
## gift-pay detail 返回 initiatorUserId
|
||||
|
||||
- 供小程序区分发起人/好友,展示不同 UI
|
||||
- 字段:`initiatorUserId`(发起人 user_id)
|
||||
|
||||
---
|
||||
|
||||
## 新版管理端迁移 - 后端任务(会议:2026-03-17)
|
||||
|
||||
- **router 补齐**:迁移前注册 5 个路由:`db.GET("/users/rfm")`、`db.GET("/users/journey-stats")`、`admin.GET("/shensheshou/query")`、`admin.POST("/shensheshou/enrich")`、`admin.POST("/shensheshou/ingest")`
|
||||
- **待确认**:/api/admin/settings 是否已支持 ossConfig,若不支持需补充
|
||||
|
||||
---
|
||||
|
||||
## 稳定版源码质量优化(会议:2026-03-17)
|
||||
|
||||
- **敏感配置**:生产环境(MODE=release)强制校验,缺敏感 env 则 Fatal
|
||||
- **user/track 鉴权**:新增 GET /api/admin/user/track + AdminAuth,原 /api/user/track 保留给小程序 POST 埋点
|
||||
- **AdminWithdrawTest**:非 develop 环境返回 404 或拒绝
|
||||
|
||||
---
|
||||
|
||||
## 会议收尾(2026-03-17)
|
||||
|
||||
- 源码优化 10 项全部完成;开发环境测试 10 通过 2 跳过
|
||||
|
||||
---
|
||||
|
||||
## 性能优化与 Redis 缓存方案落地(2026-03-17)
|
||||
|
||||
### Redis 缓存
|
||||
|
||||
- **internal/cache**:Get/Set/Del、GetString/SetString;Redis 不可用时回退 DB
|
||||
- **已缓存**:book/parts、hot、recommended、stats、config、章节 content
|
||||
- **失效**:InvalidateBookParts、InvalidateBookCache、InvalidateConfig、InvalidateChapterContent
|
||||
|
||||
### OSS 上传
|
||||
|
||||
- **internal/oss**:LoadConfig、Upload、Delete;失败回退本地
|
||||
- 配置从 system_config.oss_config 读取
|
||||
|
||||
### /health
|
||||
|
||||
- 返回 database、redis 连接状态(ok/disconnected/disabled)
|
||||
|
||||
### 经验
|
||||
|
||||
- Redis 容灾:未配置或失败时回退 DB,不阻塞业务
|
||||
- 缓存 key:soul:{业务}:{标识}
|
||||
@@ -6,3 +6,6 @@
|
||||
| 2026-03-05 | 文章详情@某人:content 内嵌 @ 标记、miniprogram 添加好友接口 | [2026-03-05.md](./2026-03-05.md) |
|
||||
| 2026-03-10 | 管理端迁移 Mycontent-temp:接口边界不变;overview 聚合接口可选但需降级 | [2026-03-10.md](./2026-03-10.md) |
|
||||
| 2026-03-12 | persons token 字段与 DB 迁移;CKBLead 用 token 兑换 ckb_api_key | [2026-03-12.md](./2026-03-12.md) |
|
||||
| 2026-03-14 | 内容排名算法修正:排名分公式(阅读/新度/付款前 N 名),支持 hot_score 手动覆盖 | [2026-03-14.md](./2026-03-14.md) |
|
||||
| 2026-03-16 | ParseAutoLinkContent data-label;存客宝 create planType/sceneId/status | [2026-03-16.md](./2026-03-16.md) |
|
||||
| 2026-03-17 | 代付 PayNotify beneficiaryUserID 权益归发起人;gift-pay detail 返回 initiatorUserId | [2026-03-17.md](./2026-03-17.md) |
|
||||
|
||||
17
.cursor/agent/团队/evolution/2026-03-14.md
Normal file
17
.cursor/agent/团队/evolution/2026-03-14.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# 2026-03-14 - 内容排名算法跨端复用约定
|
||||
|
||||
## 业务规则
|
||||
|
||||
- **热度积分公式**:阅读权重×阅读排名分 + 新度权重×新度排名分 + 付款权重×付款排名分(三权重之和须为 1)
|
||||
- **排名分规则**:阅读量前 20 名(20~1 分)、最近更新前 30 篇(30~1 分)、付款数前 20 名(20~1 分)
|
||||
|
||||
## 跨端复用
|
||||
|
||||
- **管理端**:`/api/db/book?action=ranking` → `computeArticleRankingSections`
|
||||
- **小程序**:`/api/miniprogram/book/recommended` → `computeArticleRankingSections`(取前 3 条)
|
||||
- 两者共用同一套算法、权重配置(`article_ranking_weights`)、置顶配置(`pinned_section_ids`)
|
||||
|
||||
## 约定
|
||||
|
||||
- 排名算法修改只需改 soul-api 一处,管理端与小程序自动同步。
|
||||
- 管理端保存权重后必须调用 `loadRanking()` 刷新列表,否则用户看不到变化。
|
||||
12
.cursor/agent/团队/evolution/2026-03-16.md
Normal file
12
.cursor/agent/团队/evolution/2026-03-16.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# 团队 经验记录 - 2026-03-16
|
||||
|
||||
## TipTap Mention 显示规则
|
||||
|
||||
- **data-label 必填**:TipTap Mention 的 label 仅从 `data-label` 解析,不解析 span 内文本
|
||||
- 后端 ParseAutoLinkContent 输出 mention 时必须含 data-label,否则管理端重开后显示 token 而非名字
|
||||
|
||||
## new-soul 派对AI 与 Mycontent 关系(会议:new-soul 新需求与当前项目差异分析)
|
||||
|
||||
- new-soul 派对AI(魂AI)9 技能 5 组:魂资/魂流/魂产/魂码/魂质
|
||||
- 与 Mycontent 三端(soul-api、soul-admin、miniprogram)为同一业务不同层面:运营侧 vs 产品侧
|
||||
- 路径差异(Mac vs Windows)需在文档中说明
|
||||
66
.cursor/agent/团队/evolution/2026-03-17.md
Normal file
66
.cursor/agent/团队/evolution/2026-03-17.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# 团队 - 2026-03-17
|
||||
|
||||
## 代付美团式流程与权益归属约定
|
||||
|
||||
### 流程约定
|
||||
|
||||
1. **入口**:读页「找好友代付」→ 创建请求 → **跳转代付详情页**(不再弹窗)
|
||||
2. **代付页**:发起人看到「分享给好友」,好友看到「帮他付款」
|
||||
3. **后端**:detail 返回 `initiatorUserId`,前端据此区分
|
||||
|
||||
### 权益与分佣约定
|
||||
|
||||
- 代付订单:`order.user_id` = 发起人,`payer_user_id` = 代付人
|
||||
- 权益(全书、VIP、章节、余额充值)归属发起人
|
||||
- 分佣按发起人的推荐关系计算
|
||||
- PayNotify 中 openID 解析得到的是代付人,权益与分佣必须用 `order.user_id`
|
||||
|
||||
### 同时影响
|
||||
|
||||
- 小程序:代付详情页双态 UI、读页跳转
|
||||
- 后端:PayNotify beneficiaryUserID、detail initiatorUserId
|
||||
|
||||
---
|
||||
|
||||
## 新版管理端迁移到稳定版(会议:2026-03-17)
|
||||
|
||||
### 决议
|
||||
|
||||
- **内容管理**:以稳定版为主,不采纳新版
|
||||
- **新版独有**:API 文档 Tab、api-docs 独立页、OSS 配置、编辑时手机号禁用、鉴权逻辑 → **全部吸纳**
|
||||
- **后端**:迁移前补 router(users/rfm、journey-stats、shensheshou 共 5 个)
|
||||
|
||||
### 影响角色
|
||||
|
||||
- 管理端开发工程师:主导迁移
|
||||
- 后端开发:router 补齐、ossConfig 确认
|
||||
- 测试人员:迁移后验收
|
||||
|
||||
---
|
||||
|
||||
## 稳定版源码质量优化(会议:2026-03-17)
|
||||
|
||||
- **原则**:增量修复、不改功能逻辑;高优安全项优先,中优可维护项次之,低优可后续迭代
|
||||
- **影响角色**:后端、管理端、小程序、测试
|
||||
|
||||
---
|
||||
|
||||
## 会议收尾(2026-03-17)
|
||||
|
||||
- 源码优化 10 项全部完成;功能测试流程定稿;开发环境测试 10 通过 2 跳过
|
||||
|
||||
---
|
||||
|
||||
## 性能优化与 Redis 缓存方案落地(2026-03-17)
|
||||
|
||||
### 架构约定
|
||||
|
||||
- **Redis 容灾**:不可用时回退 DB,不阻塞业务
|
||||
- **缓存 key**:soul:{业务}:{标识}
|
||||
- **OSS 上传**:优先 OSS,失败回退本地
|
||||
|
||||
### 影响角色
|
||||
|
||||
- 后端开发:cache、oss 包;/health 增强
|
||||
- 管理端开发工程师:OSS 配置后上传自动优先 OSS
|
||||
- 测试人员:test_upload.py、/health 验证、部署后回归缓存接口
|
||||
@@ -7,3 +7,6 @@
|
||||
| 2026-03-05 | 分支冲突后各端完整性自查流程 | [2026-03-05.md](./2026-03-05.md) |
|
||||
| 2026-03-10 | 管理端迁移 Mycontent-temp:菜单/布局新规范基线与入口收敛规则 | [2026-03-10.md](./2026-03-10.md) |
|
||||
| 2026-03-12 | 密钥/token 设计:关联小程序 key、@ 人物 token,不暴露真实密钥、服务端兑换 | [2026-03-12.md](./2026-03-12.md) |
|
||||
| 2026-03-14 | 内容排名算法跨端复用:管理端内容排行与小程序精选推荐共用 computeArticleRankingSections | [2026-03-14.md](./2026-03-14.md) |
|
||||
| 2026-03-16 | TipTap Mention 需 data-label,否则显示 token | [2026-03-16.md](./2026-03-16.md) |
|
||||
| 2026-03-17 | 代付美团式流程与权益归属约定:读页→代付页→分享;权益/分佣归发起人 | [2026-03-17.md](./2026-03-17.md) |
|
||||
|
||||
40
.cursor/agent/小程序开发工程师/evolution/2025-03-14-文本长按复制.md
Normal file
40
.cursor/agent/小程序开发工程师/evolution/2025-03-14-文本长按复制.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# 阅读页文本长按选中复制
|
||||
|
||||
> 问题→解决闭环,已升级 miniprogram-dev SKILL
|
||||
|
||||
---
|
||||
|
||||
## 问题
|
||||
|
||||
小程序阅读页正文长按时无法选中、复制文本。
|
||||
|
||||
---
|
||||
|
||||
## 解决方案
|
||||
|
||||
使用 `text` 组件的 **`user-select`** 属性(基础库 2.12.1+,官方推荐;`selectable` 已废弃):
|
||||
|
||||
```html
|
||||
<text user-select>{{seg.text}}</text>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 实施范围(read.wxml)
|
||||
|
||||
- 章节标题:`<text class="chapter-title" user-select>`
|
||||
- 正文片段:text / mention / linkTag 均加 `user-select`
|
||||
- 预览段落:`<text user-select>{{item}}</text>`(原为 view 内直接 `{{item}}`,需用 text 包裹)
|
||||
|
||||
---
|
||||
|
||||
## 备选方案
|
||||
|
||||
- **selectable**:已废弃但多数环境仍可用,若 `user-select` 导致布局异常(inline-block 换行)可回退
|
||||
- **wx.setClipboardData + bindlongpress**:iOS 原生选中失效时,可做长按整段复制兜底
|
||||
|
||||
---
|
||||
|
||||
## Skill 升级
|
||||
|
||||
已写入 miniprogram-dev SKILL §10 文本可选与复制。
|
||||
@@ -0,0 +1,90 @@
|
||||
# 联网吸收:微信小程序最新开发规则与 API(2025-03)
|
||||
|
||||
> 来源:微信开放文档、基础库更新日志、Skyline 文档、隐私合规指南等
|
||||
|
||||
---
|
||||
|
||||
## 一、基础库版本与更新节奏
|
||||
|
||||
- **当前最新**:v3.14.2(2026-01-22),v3.14.3 灰度中
|
||||
- **建议**:在 `app.json` 中设置 `"useExtendedLib": { "weui": true }` 或指定 `libVersion`,关注灰度版本说明
|
||||
- **兼容**:使用 `wx.canIUse('api.xxx')` 做能力检测,避免在低版本报错
|
||||
|
||||
---
|
||||
|
||||
## 二、新增 / 重要 API(基础库 3.14 系列)
|
||||
|
||||
| API | 用途 | 基础库 |
|
||||
|-----|------|--------|
|
||||
| `wx.rewriteRoute` | 路由重写 | 3.14+ |
|
||||
| `wx.openOfficialAccountProfile` | 打开公众号 | 3.14+ |
|
||||
| `wx.openOfficialAccountChat` | 跳转公众号会话 | 3.14+ |
|
||||
| `wx.openInquiriesTopic` | 跳转问一问话题 | 3.14.0 |
|
||||
| `wx.loadBuiltInFontFace` | 加载微信内置字体 | 3.14+ |
|
||||
| `wx.onUserOffTranslation` | 监听用户关闭翻译 | 3.14.3 灰度 |
|
||||
|
||||
**其他能力**:
|
||||
- 鼠标右键点击事件支持(PC 端)
|
||||
- 图片分享朋友圈
|
||||
- 半屏小程序 `openEmbeddedMiniProgram` 上限提升到 100
|
||||
- TCPSocket 支持 `TCP_NODELAY`
|
||||
|
||||
---
|
||||
|
||||
## 三、Skyline 渲染引擎(可选升级)
|
||||
|
||||
- **定位**:新一代渲染引擎,以性能为首要目标,仍用 WXML/WXSS
|
||||
- **配置**:页面级 `page.json` 中 `"renderer": "skyline"`
|
||||
- **性能**:启动耗时降约 20%,跳页耗时降约 50%;长列表 `scroll-view` 仅渲染屏内节点
|
||||
- **注意**:CSS 特性精简,只保留更现代的集合;鸿蒙 OS 已灰度支持
|
||||
- **Soul 项目**:当前为 WebView 渲染,若需性能优化可逐步按页面接入 Skyline
|
||||
|
||||
---
|
||||
|
||||
## 四、隐私合规(2025 重要变更)
|
||||
|
||||
### 4.1 核心变化:从集中授权改为按需授权
|
||||
|
||||
- **旧**:首次启动一次性请求所有权限
|
||||
- **新**:必须在用户**实际触发相关功能时**才发起对应授权请求
|
||||
- **影响**:需拆分授权逻辑到具体业务场景,不能集中在 `app.onLaunch` 里
|
||||
|
||||
### 4.2 必须完成的步骤
|
||||
|
||||
1. **后台配置**:在小程序管理后台填写《小程序用户隐私保护指引》,声明处理的用户信息类型及用途
|
||||
2. **查询与展示**:`wx.getPrivacySetting` 查询授权状态,`wx.openPrivacyContract` 打开隐私协议
|
||||
3. **获取同意**:使用 `<button open-type="agreePrivacyAuthorization">` 获取用户明示同意,用户点击后微信同步状态,开发者才可调用已声明的隐私接口
|
||||
|
||||
### 4.3 敏感权限
|
||||
|
||||
- 通讯录、位置、摄像头、麦克风、相册等**不会默认开启**
|
||||
- 需用户明确同意后才可调用
|
||||
- 需为「用户拒绝」设计降级方案
|
||||
|
||||
---
|
||||
|
||||
## 五、网络请求(wx.request)
|
||||
|
||||
- **官方**:`wx.request` 仍为主流,仅支持回调,不支持原生 Promise
|
||||
- **Soul 项目**:已用 `app.request` 封装,支持 Promise、统一 baseUrl、鉴权、错误处理,符合规范
|
||||
- **第三方**:若需更丰富能力(拦截器、重试等),可考虑 wechat-http、mini-quest 等
|
||||
|
||||
---
|
||||
|
||||
## 六、与 Soul 项目 SKILL 的衔接
|
||||
|
||||
| 联网吸收内容 | Soul miniprogram-dev SKILL 对应 |
|
||||
|-------------|--------------------------------|
|
||||
| 隐私按需授权 | 登录、手机号、推荐码等涉及隐私的接口,应在用户触发时再请求,避免启动时集中授权 |
|
||||
| Skyline 可选 | 当前 SKILL 未强制 Skyline;性能敏感页面可单独配置 `renderer: skyline` |
|
||||
| 新 API | 路由重写、公众号跳转等按需使用,调用前用 `wx.canIUse` 检测 |
|
||||
| 基础库版本 | 建议在项目文档中注明最低支持版本,便于兼容性排查 |
|
||||
|
||||
---
|
||||
|
||||
## 七、建议动作
|
||||
|
||||
1. **隐私合规**:检查 `app.js` 及登录/手机号/推荐码流程,确保按需授权,不在启动时集中请求
|
||||
2. **文档**:在 README 或开发文档中注明基础库最低版本(如 2.19.0 或 3.0.0)
|
||||
3. **能力检测**:新增依赖新 API 的功能时,使用 `wx.canIUse` 做降级
|
||||
4. **Skyline**:阅读页、章节列表等长列表页面可评估 Skyline 接入收益
|
||||
18
.cursor/agent/小程序开发工程师/evolution/2026-03-14.md
Normal file
18
.cursor/agent/小程序开发工程师/evolution/2026-03-14.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# 2026-03-14 - 我的页设置隐藏与资料引导场景梳理
|
||||
|
||||
## 1. 设置入口隐藏
|
||||
|
||||
- **需求**:我的页「设置」菜单项隐藏
|
||||
- **实现**:`my.wxml` 中设置菜单项加 `wx:if="{{false}}"`
|
||||
- **说明**:设置页仍存在,用户可通过推广页「去设置」等入口进入(如绑定微信号用于提现)
|
||||
|
||||
## 2. 资料修改引导场景(何时引导用户修改资料)
|
||||
|
||||
| 场景 | 位置 | 触发条件 | 行为 |
|
||||
|------|------|----------|------|
|
||||
| 登录后 | app.js `_ensureProfileCompletedAfterLogin` | 昵称空/默认/头像空 | Toast「请先完善头像和昵称」→ 跳转 profile-edit |
|
||||
| 阅读页 @某人 | read.js `_doMentionAddFriend` | 已登录但无手机/微信号 | 弹窗「完善资料」→ 确认跳转 profile-edit |
|
||||
| 找伙伴页 | match.js `ensureContactInfo` | 已登录但无手机/微信号 | 页面内弹窗填写联系方式(不跳转) |
|
||||
| 首页链接卡若 | index.js | 无手机/微信号 | 弹窗输入手机号(不跳转 profile-edit) |
|
||||
|
||||
- **判断依据**:`_isProfileIncomplete(user)` 检查 nickname、avatar;手机/微信号需单独拉 `user/profile` 接口判断。
|
||||
34
.cursor/agent/小程序开发工程师/evolution/2026-03-16.md
Normal file
34
.cursor/agent/小程序开发工程师/evolution/2026-03-16.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# 2026-03-16 编辑资料页分享名片
|
||||
|
||||
## 问题/场景
|
||||
|
||||
编辑资料页转发给朋友、分享到朋友圈时,需做特殊处理:直接变成「分享名片」,而非普通页面分享。分享标题、封面需体现用户身份与名片信息。
|
||||
|
||||
## 解决方案
|
||||
|
||||
1. **分享标题**:`昵称+为您分享名片`(如「少年梦想家为您分享名片」)
|
||||
2. **分享封面**:Canvas 绘制名片图(5:4 比例,符合微信分享图规范)
|
||||
- 布局:左头像(圆形)+ 右昵称 +「个人名片」副标题
|
||||
- 分隔线
|
||||
- 四栏信息:地区 | MBTI、行业 | 职位(标签灰、数值白,统一色值)
|
||||
3. **分享路径**:转发/朋友圈均指向 `member-detail?id=userId`,好友打开即见名片详情
|
||||
4. **朋友圈重定向**:分享带 `id` 时,`profile-edit` 的 `onLoad` 检测到 `options.id` 即 `redirectTo` 到 `member-detail`
|
||||
|
||||
## 技术要点
|
||||
|
||||
- **预生成**:资料加载完成后、头像更新后调用 `generateShareCard()`,将 `shareCardPath` 存入 data
|
||||
- **Canvas**:隐藏 canvas 500×400,`wx.createCanvasContext` + `ctx.draw(true)` + `wx.canvasToTempFilePath`
|
||||
- **头像下载**:网络头像需 `wx.downloadFile`,域名须配置 downloadFile 合法域名;失败时用昵称首字母占位
|
||||
- **文本截断**:`ctx.measureText` 超宽时截断加「…」
|
||||
|
||||
## 适用角色
|
||||
|
||||
小程序开发工程师
|
||||
|
||||
## 升级 Skill
|
||||
|
||||
miniprogram-dev SKILL 新增 §10 分享名片
|
||||
|
||||
## new-soul 派对AI 与小程序(会议:new-soul 新需求与当前项目差异分析)
|
||||
|
||||
- 派对AI 的小程序站管理与当前 miniprogram 一致,仅涉及发布流程,不改变小程序功能
|
||||
15
.cursor/agent/小程序开发工程师/evolution/2026-03-17.md
Normal file
15
.cursor/agent/小程序开发工程师/evolution/2026-03-17.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# 小程序开发工程师 经验记录 - 2026-03-17
|
||||
|
||||
## 稳定版源码质量优化(会议:2026-03-17)
|
||||
|
||||
- **payment.js**:确认无引用可删除(read.js 直接调 /api/miniprogram/pay)
|
||||
- **goToMatch**:my.js 重复定义,删除一个
|
||||
- **备份文件**:删除 read.js.backup、referral.wxss.backup
|
||||
- **appId 等**:优先从 config 的 mpConfig 读取,保留兜底
|
||||
- **totalSections**:从 book/stats 或 all-chapters 动态获取,保留 62 兜底
|
||||
|
||||
---
|
||||
|
||||
## 会议收尾(2026-03-17)
|
||||
|
||||
- 源码优化 5 项全部完成;开发环境测试通过
|
||||
@@ -2,9 +2,14 @@
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
| 2025-03-14 | 联网吸收:基础库 3.14、Skyline、隐私按需授权、新 API | [2025-03-14-联网吸收小程序最新开发规则与API.md](./2025-03-14-联网吸收小程序最新开发规则与API.md) |
|
||||
| 2025-03-14 | 阅读页文本长按选中复制:text 组件 user-select | [2025-03-14-文本长按复制.md](./2025-03-14-文本长按复制.md) |
|
||||
| 2026-02-28 | input 边距口诀、match 资源对接弹窗修正 | [2026-02-28.md](./2026-02-28.md) |
|
||||
| 2026-03-03 | 我的页面卡片区边距优化,16rpx 推荐值 | [2026-03-03.md](./2026-03-03.md) |
|
||||
| 2026-03-05 | 分支合并后核心流程自测;app.json 拆行;orders 接口确认 | [2026-03-05.md](./2026-03-05.md) |
|
||||
| 2026-03-05 | 文章详情@某人高亮与一键加好友(解析@、调添加好友接口) | [2026-03-05.md](./2026-03-05.md) |
|
||||
| 2026-03-10 | 管理端迁移 Mycontent-temp:关注内容产物格式与阅读页解析兼容回归 | [2026-03-10.md](./2026-03-10.md) |
|
||||
| 2026-03-12 | 链接标签 mpKey、@ 人物 token 兑换:contentParser、onLinkTagTap、onMentionTap | [2026-03-12.md](./2026-03-12.md) |
|
||||
| 2026-03-14 | 我的页设置入口隐藏;资料修改引导场景梳理(登录后、@某人、找伙伴、链接卡若) | [2026-03-14.md](./2026-03-14.md) |
|
||||
| 2026-03-16 | 编辑资料页分享名片:转发/朋友圈特殊处理,Canvas 绘制封面,标题「昵称+为您分享名片」 | [2026-03-16.md](./2026-03-16.md) |
|
||||
| 2026-03-17 | 代付美团式:读页→代付页→分享;详情页双态(发起人/好友);目录 loading、最新新增 5 条折叠 | [2026-03-17.md](./2026-03-17.md) |
|
||||
|
||||
91
.cursor/agent/开发助理/evolution/2026-03-16-交互习惯分析.md
Normal file
91
.cursor/agent/开发助理/evolution/2026-03-16-交互习惯分析.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# 用户交互习惯分析(基于 agent-transcripts 抽样)
|
||||
|
||||
> 乘风发起,读取 97 个 agent 会话记录,抽样分析后总结。用于优化 agent 响应策略与 Skill 设计。
|
||||
|
||||
---
|
||||
|
||||
## 一、角色与触发词使用习惯
|
||||
|
||||
| 触发词/角色 | 使用场景 | 期望动作 |
|
||||
|-------------|----------|----------|
|
||||
| **乘风** | 开会、同步进度、协调开发、总结经验 | 老板分身主持,协调各角色 |
|
||||
| **开会** | 需求评审、方案讨论、进度同步 | 按 team-meeting SKILL 主持多角色会议 |
|
||||
| **吸收经验** | 功能完成、讨论完毕 | 经验入库 + Skill 升级 + 同步需求文档 |
|
||||
| **橙子 / 小橙** | 记录、同步文档、会议收尾 | 文档同步、纪要生成、索引更新 |
|
||||
| **加个需求:xxx** | 新增功能 | 产品经理三端分析 → 功能规划 → 指派 |
|
||||
| **变更完成 / 检查一下** | 代码改完 | 过 change-checklist 三端关联检查 |
|
||||
|
||||
---
|
||||
|
||||
## 二、表达方式偏好
|
||||
|
||||
### 1. 直接点名角色
|
||||
- 如:「小程序工程师」「后端工程师」「管理端工程师」「测试工程师」
|
||||
- 期望:agent 按该角色 Skill 执行,不混用其他端逻辑
|
||||
|
||||
### 2. @ 文件引用
|
||||
- 如:@new-soul、@scripts、@soul-admin、@开发文档
|
||||
- 期望:agent 读取并理解引用内容,作为上下文执行任务
|
||||
|
||||
### 3. 任务导向、先分析再实现
|
||||
- 典型句式:「帮我对比」「整理出迁移清单」「分析有没有逻辑盲点」「从经营角度看看」
|
||||
- 期望:先出方案/文档,再写代码;不直接动手改
|
||||
|
||||
### 4. 图片辅助反馈
|
||||
- 经常截图 + 文字描述问题(如「@匹配有问题」「弹窗太大」「封面图要长这样」)
|
||||
- 期望:agent 结合截图理解 UI/交互问题,给出针对性修改
|
||||
|
||||
---
|
||||
|
||||
## 三、工作流程偏好
|
||||
|
||||
| 阶段 | 习惯 | 说明 |
|
||||
|------|------|------|
|
||||
| **需求** | 以需求驱动、以界面定需求 | 不凭空加功能,需求与实现可追溯 |
|
||||
| **分析** | 先对比、出方案、写文档 | 迁移清单、逻辑盲点、技术协调、经营建议 |
|
||||
| **实现** | 小步迭代、可读性优先 | 函数单一职责,避免深层嵌套 |
|
||||
| **验收** | 测试 → 吸收经验 → 同步文档 | 闭环:经验入库、Skill 升级、需求汇总更新 |
|
||||
| **会议** | 开会 → 各角色发言 → 决议 → 橙子总结 | 会议结束触发收尾流程 |
|
||||
|
||||
---
|
||||
|
||||
## 四、沟通风格
|
||||
|
||||
- **简洁**:如「帮我处理」「帮我测试一下」「修复」
|
||||
- **追问细节**:如「界面有什么变化」「有逻辑盲点吗」「从经营角度看看」
|
||||
- **强调合理性**:如「产品经理要根据实际情况判断,不能随意增加管理列表」
|
||||
- **确认后执行**:如「先帮我对比」「整理出迁移清单」——先出结果再决定是否实现
|
||||
|
||||
---
|
||||
|
||||
## 五、技术偏好(Soul 项目)
|
||||
|
||||
- **三端隔离**:小程序只调 `/api/miniprogram/*`,管理端只调 `/api/admin/*`、`/api/db/*`
|
||||
- **存客宝对接**:Person、LinkTag、ckb_api_key、planType、sceneId、status 等参数约定
|
||||
- **测试规范**:scripts/test 目录,miniapp / web / process 分类,pytest + requests,运行前显式提示测试环境
|
||||
|
||||
---
|
||||
|
||||
## 六、反馈与确认习惯
|
||||
|
||||
| 用户表达 | 触发动作 |
|
||||
|----------|----------|
|
||||
| 「搞定了」「可以了」「解决了」 | 经验自动收集(老板分身-索引.mdc) |
|
||||
| 「会议结束」「散会」 | 助理橙子会议收尾 |
|
||||
| 「吸收经验」「同步到需求文档」 | 经验入库 + 需求汇总更新 |
|
||||
| 「不要记录」「不用沉淀」 | 不触发经验入库 |
|
||||
|
||||
---
|
||||
|
||||
## 七、Agent 响应建议
|
||||
|
||||
1. **先理解再动手**:用户说「帮我xxx」时,先确认范围、出方案,再写代码
|
||||
2. **按角色执行**:用户点名角色时,必须 Read 对应 Skill,按规范执行
|
||||
3. **文档先行**:迁移、重构类任务,先出清单/分析文档,再实现
|
||||
4. **闭环收尾**:功能完成时主动提示「可以说吸收经验同步到文档」
|
||||
5. **图片理解**:用户发截图时,结合截图分析问题,不只看文字
|
||||
|
||||
---
|
||||
|
||||
**来源**:agent-transcripts 抽样(约 15 个会话),结合经验清单与项目索引交叉验证。
|
||||
**适用**:开发助理、老板分身、各角色 agent 的响应策略优化。
|
||||
9
.cursor/agent/开发助理/evolution/2026-03-17.md
Normal file
9
.cursor/agent/开发助理/evolution/2026-03-17.md
Normal file
@@ -0,0 +1,9 @@
|
||||
# 开发助理 经验记录 - 2026-03-17
|
||||
|
||||
## 会议收尾(2026-03-17)
|
||||
|
||||
- **纪要**:2026-03-17_会议收尾-源码优化完成与测试流程定稿.md
|
||||
- **经验入库**:各角色 evolution 已追加收尾经验
|
||||
- **项目索引**:后端、管理端、小程序、测试、助理橙子已更新
|
||||
- **会议索引**:README.md 已追加
|
||||
- **开发文档**:运营与变更第十七部分已追加
|
||||
@@ -4,3 +4,4 @@
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
| 2026-03-16 | 用户交互习惯分析(基于 agent-transcripts) | 2026-03-16-交互习惯分析.md |
|
||||
|
||||
@@ -40,6 +40,18 @@
|
||||
|
||||
| 2026-03-12 | 后端、团队 | 业务规则 | api-dev SKILL、team three-tier-arch | 9.9 买断统一由后端折叠为 hasFullBook/has_full_book,小程序和管理端只认该信号;可通过用户资料开关 OR 订单实现赠送全书 |
|
||||
| 2026-03-13 | 小程序、后端、团队 | 业务规则 | api-dev SKILL、miniprogram-dev SKILL、three-tier-arch SKILL | 文章详情预览统一由后端按 50% 截取,小程序按 accessState 使用预览/全文,外层 content 与 data.content 始终一致以避免泄露全文 |
|
||||
| 2025-03-14 | 小程序 | 最佳实践 | miniprogram-dev SKILL §10 | 阅读页文本长按选中复制:text 组件 user-select(selectable 已废弃),正文/标题/预览均加 user-select |
|
||||
| 2026-03-14 | 后端、管理端、小程序、团队 | 业务规则/bug 修复 | - | 内容排名算法修正(排名分公式);保存权重后 loadRanking 刷新;我的页设置隐藏;资料引导场景梳理 |
|
||||
| 2026-03-16 | 软件测试 | 知识沉淀 | testing SKILL | scripts 目录与测试关联:本地启动.sh 联调必备、飞书脚本非回归范围、soul-api/scripts 与根 scripts 区分 |
|
||||
| 2026-03-16 | 软件测试 | 目录约定 | testing SKILL §5 | scripts/test:miniapp 小程序接口测试、web 管理端测试;测试工程师在此编写用例 |
|
||||
| 2026-03-16 | 软件测试 | 目录约定 | testing SKILL §5 | scripts/test/process:流程测试,跨端多接口串联(下单→支付→分润等) |
|
||||
| 2026-03-16 | 软件测试 | 配置约定 | testing SKILL | pytest 架构、配置从 soul-api/.env* 读取、SOUL_TEST_ENV 必显;运行前报告头部显示测试环境,避免误测正式库 |
|
||||
| 2026-03-16 | 小程序 | 最佳实践 | miniprogram-dev SKILL §10 | 编辑资料页分享名片:转发/朋友圈特殊处理,Canvas 绘制 5:4 封面,标题「昵称+为您分享名片」,路径 member-detail |
|
||||
| 2026-03-16 | 开发助理 | 交互习惯分析 | - | 乘风读取 agent-transcripts 抽样分析:角色触发词、表达方式、工作流程、沟通风格、技术偏好、Agent 响应建议 |
|
||||
| 2026-03-17 | 小程序、后端、团队 | 业务规则/bug 修复 | - | 代付美团式:读页→代付页→分享;PayNotify beneficiaryUserID 权益归发起人;detail 返回 initiatorUserId;目录 loading、最新新增 5 条折叠 |
|
||||
| 2026-03-17 | 小程序 | 业务规则 | - | 代付统一到代付页:gift=1&ref 打开 read 时 redirectTo 代付页,禁止在阅读页代付 |
|
||||
| 2026-03-17 | 软件测试 | 流程定稿 | testing SKILL | 功能测试流程:成功 ☑️、失败列问题、最终报告;scripts/test/功能测试流程.md、测试报告-环境与用例清单.md |
|
||||
| 2026-03-17 | 后端、团队 | 架构/最佳实践 | api-dev SKILL | Redis 缓存:parts/hot/recommended/stats/config/章节 content;容灾回退 DB;OSS 上传;/health 返回 database/redis 状态 |
|
||||
|
||||
---
|
||||
|
||||
@@ -50,4 +62,4 @@
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-13(文章预览规则统一、小程序与后端对齐)
|
||||
**最后更新**:2026-03-17(会议收尾:源码优化完成与测试流程定稿)
|
||||
|
||||
@@ -21,9 +21,12 @@ Soul 创业派对产品定位:面向创业者的社区/工具型小程序。
|
||||
| 2026-03-05 | 文章详情@某人加好友方案讨论:验收标准、添加好友接口 path 待确认 | 待续 |
|
||||
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp,新菜单/布局与入口收敛验收口径确定 | 待续 |
|
||||
| 2026-03-11 | 以界面定需求文档建立;需求基准以《以界面定需求》为准 | 已完成 |
|
||||
| 2026-03-16 | 乘风发起例行开发进度同步 | 已完成 |
|
||||
| 2026-03-16 | 会议:new-soul 新需求与当前项目差异分析 | 已完成 |
|
||||
| 2026-03-17 | 会议:稳定版源码质量优化;验收标准功能不变、三端联调通过 | 待续 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-11
|
||||
**最后更新**:2026-03-17
|
||||
|
||||
@@ -17,9 +17,16 @@
|
||||
| 2026-02-26 | 项目索引初始化;经验库五角色目录结构搭建;SKILL 补充角色映射表与跨端写入规则 | 已完成 |
|
||||
| 2026-02-28 | .cursor 按 cursor标准模板 重构:agent 目录、config、evolution.py、meeting | 已完成 |
|
||||
| 2026-03-11 | 会议收尾:开发团队对齐业务逻辑与以界面定需求;纪要生成、各角色经验入库、项目索引与会议索引更新 | 已完成 |
|
||||
| 2026-03-16 | 乘风发起例行开发进度同步 | 已完成 |
|
||||
| 2026-03-16 | 乘风读取 agent-transcripts 分析交互习惯,总结经验并吸收 | 已完成 |
|
||||
| 2026-03-17 | 吸收需求:代付美团式流程、PayNotify 权益归属、目录 loading、最新新增 5 条折叠 → 开发文档与 agent | 已完成 |
|
||||
| 2026-03-17 | 乘风吸收经验与交互:迁移完成度与待办清单、运营与变更第十二部分 | 已完成 |
|
||||
| 2026-03-17 | 吸收新需求:代付统一到代付页(gift=1&ref redirectTo)→ 需求汇总、找朋友代付流程、运营与变更 | 已完成 |
|
||||
| 2026-03-17 | 会议收尾:新版管理端迁移到稳定版实施方案确认;纪要、各角色经验入库、项目索引更新 | 已完成 |
|
||||
| 2026-03-17 | 会议收尾:源码优化完成与测试流程定稿;纪要、经验入库、开发文档同步 | 已完成 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-11
|
||||
**最后更新**:2026-03-17(会议收尾:源码优化完成与测试流程定稿)
|
||||
|
||||
@@ -27,9 +27,18 @@ soul-api(Go + Gin + GORM + MySQL)提供三组路由:`/api/miniprogram/*`
|
||||
| 2026-03-12 | persons 表新增 token 字段(add-persons-token.sql);CKBLead 用 token 兑换 ckb_api_key | 已完成 |
|
||||
| 2026-03-12 | 9.9 买断后端开关方案:users 增手动 fullbook 开关,purchase-status/check-purchased 折叠为统一 hasFullBook/has_full_book,小程序免改即支持赠送全书 | 已完成 |
|
||||
| 2026-03-13 | 文章详情预览统一与安全:previewContent 改为截取正文前 50%,findChapterAndRespond 保证外层 content 与 data.content 一致,未授权只返回预览 | 已完成 |
|
||||
| 2026-03-14 | 内容排名算法修正:computeSectionsWithHotScore 改为排名分公式(阅读/新度/付款前 N 名得分),支持手动 hot_score 覆盖 | 已完成 |
|
||||
| 2026-03-16 | 乘风发起例行开发进度同步 | 已完成 |
|
||||
| 2026-03-16 | ParseAutoLinkContent 添加 data-label;存客宝 create planType=1 sceneId=9 status=1 | 已完成 |
|
||||
| 2026-03-16 | 会议:new-soul 新需求与当前项目差异分析;content_upload.py 与 chapters 一致性待核对 | 待续 |
|
||||
| 2026-03-17 | 代付 PayNotify 权益归属修复:beneficiaryUserID(代付=发起人);gift-pay detail 返回 initiatorUserId | 已完成 |
|
||||
| 2026-03-17 | 会议:新版管理端迁移;router 补齐 users/rfm、journey-stats、shensheshou 共 5 个;确认 ossConfig | 进行中 |
|
||||
| 2026-03-17 | 会议:稳定版源码质量优化;敏感配置生产强制校验、新增 /api/admin/user/track、AdminWithdrawTest 环境限制 | 已完成 |
|
||||
| 2026-03-17 | 会议收尾:源码优化 10 项全部完成;开发环境测试 10 通过 2 跳过 | 已完成 |
|
||||
| 2026-03-17 | 性能优化会议:Redis 缓存接入(parts/hot/recommended/stats/config/章节 content)、容灾回退 DB;OSS 上传接入;/health 返回 database/redis 状态 | 已完成 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-13
|
||||
**最后更新**:2026-03-17
|
||||
|
||||
@@ -24,9 +24,14 @@ Soul 创业派对全项目架构与约定:路由隔离(miniprogram/admin/db
|
||||
| 2026-03-12 | 密钥/token 设计:关联小程序 key、@ 人物 token;不暴露真实密钥、服务端兑换 | 已完成 |
|
||||
| 2026-03-12 | 9.9 买断团队约定:后端统一输出 hasFullBook/has_full_book,小程序和管理端只认该信号;支持通过用户资料开关 OR 订单赠送全书且不影响 VIP 逻辑 | 已完成 |
|
||||
| 2026-03-13 | 文章详情预览规则统一:预览长度由后端统一按 50% 计算,小程序按 accessState 切换预览/全文,接口约定 content 与 data.content 始终一致 | 已完成 |
|
||||
| 2026-03-14 | 内容排名算法跨端复用:管理端内容排行与小程序精选推荐共用 computeArticleRankingSections,排名分公式、权重配置统一 | 已完成 |
|
||||
| 2026-03-16 | 乘风发起例行开发进度同步 | 已完成 |
|
||||
| 2026-03-16 | TipTap Mention 需 data-label 规则;链接人与事与存客宝对接优化会议收尾 | 已完成 |
|
||||
| 2026-03-17 | 代付美团式流程与权益归属约定:读页→代付页→分享;权益/分佣归发起人;PayNotify beneficiaryUserID | 已完成 |
|
||||
| 2026-03-17 | 性能优化与 Redis 缓存方案落地:Redis 容灾回退 DB、OSS 上传容灾;/health 返回 database/redis 状态 | 已完成 |
|
||||
|
||||
> **格式说明**:每次架构级讨论后在此追加一行,日期格式 YYYY-MM-DD
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-13
|
||||
**最后更新**:2026-03-17
|
||||
|
||||
@@ -29,9 +29,19 @@
|
||||
| 2026-03-11 | 以界面定需求:小程序界面清单纳入《以界面定需求》;展示以用户资料为准,与现有实现一致 | 已完成 |
|
||||
| 2026-03-12 | 链接标签 mpKey 兑换 appId;@ 人物 token 兑换 ckb_api_key;contentParser、onLinkTagTap、onMentionTap | 已完成 |
|
||||
| 2026-03-13 | 阅读页文章预览与付费解锁对齐:预览长度改由后端统一计算,前端按 accessState 显示预览/全文,避免 data.content 泄露全文 | 已完成 |
|
||||
| 2025-03-14 | 阅读页文本长按选中复制:text 组件 user-select,已升级 SKILL §10 | 已完成 |
|
||||
| 2026-03-14 | 我的页设置入口隐藏(wx:if);资料修改引导场景梳理(登录后、@某人、找伙伴、链接卡若) | 已完成 |
|
||||
| 2026-03-16 | 乘风发起例行开发进度同步 | 已完成 |
|
||||
| 2026-03-16 | 编辑资料页分享名片:转发/朋友圈改为分享名片,Canvas 封面(头像+昵称+四栏信息),路径 member-detail | 已完成 |
|
||||
| 2026-03-16 | 会议:new-soul 新需求与当前项目差异分析;派对AI 小程序站管理与当前一致 | 已完成 |
|
||||
| 2026-03-17 | 代付美团式:读页→创建请求→跳转代付详情页;详情页双态(发起人分享/好友帮他付款);目录 loading、首页最新新增 5 条折叠 | 已完成 |
|
||||
| 2026-03-17 | 代付统一到代付页:gift=1&ref 打开 read 时 redirectTo 代付页,禁止在阅读页代付 | 已完成 |
|
||||
| 2026-03-17 | 代付页营销:章节标题+20%内容预览;我的代付列表点击进详情;页面协调 | 已完成 |
|
||||
| 2026-03-17 | 会议:稳定版源码质量优化;删除 payment.js、goToMatch 重复、备份文件;config 读取、totalSections 动态化 | 已完成 |
|
||||
| 2026-03-17 | 会议收尾:源码优化 5 项全部完成;开发环境测试通过 | 已完成 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-13
|
||||
**最后更新**:2026-03-17
|
||||
|
||||
@@ -20,7 +20,17 @@
|
||||
| 2026-03-05 | 分支冲突后功能完整性分析会议:制定「分支合并后回归清单」 | 待续 |
|
||||
| 2026-03-05 | 文章详情@某人加好友方案讨论:@ 展示与添加好友用例、联调与回归 | 待续 |
|
||||
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp;回归重点为菜单一致性、隐藏路由可达性、鉴权跳转 | 待续 |
|
||||
| 2026-03-16 | 乘风发起例行开发进度同步 | 已完成 |
|
||||
| 2026-03-16 | scripts 目录知识吸收:本地启动、飞书脚本、联调环境准备 | 已完成 |
|
||||
| 2026-03-16 | scripts/test 测试用例目录约定:miniapp 小程序接口、web 管理端 | 已完成 |
|
||||
| 2026-03-16 | scripts/test/process 流程测试目录:跨端业务流程 | 已完成 |
|
||||
| 2026-03-16 | pytest 架构、配置从项目读取、运行前显示测试环境 | 已完成 |
|
||||
| 2026-03-16 | 文章 @某人 自动创建存客宝:用例编写、执行、报告;归档规则 | 已完成 |
|
||||
| 2026-03-16 | 会议:new-soul 新需求与当前项目差异分析;引入派对AI 时回归文章上传/飞书推送/小程序展示 | 已完成 |
|
||||
| 2026-03-17 | 会议:稳定版源码质量优化;每项小回归、全部完成后完整三端联调 | 待续 |
|
||||
| 2026-03-17 | 会议收尾:功能测试流程定稿、测试报告模板、开发环境 10 通过 2 跳过 | 已完成 |
|
||||
| 2026-03-17 | 性能优化会议:test_upload.py 6 用例;/health 可验证 database/redis;部署后回归缓存接口 | 已完成 |
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-10
|
||||
**最后更新**:2026-03-17
|
||||
|
||||
@@ -8,6 +8,13 @@
|
||||
|
||||
管理端(React + Vite + Tailwind)主要功能:用户管理、订单管理、提现审核、VIP 管理、内容/章节管理、配置项管理、数据统计。调用 `/api/admin/*` 与 `/api/db/*` 接口,JWT Bearer 鉴权。
|
||||
|
||||
### 项目路径定义
|
||||
|
||||
| 版本 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| **稳定版(主用)** | `soul-admin/` | 根目录,线上部署 |
|
||||
| **新版(参考)** | `new-soul/soul-admin/` | 迁移时对照,含 ApiDocsPage 完整版、OSS region 等 |
|
||||
|
||||
---
|
||||
|
||||
## 开发进度
|
||||
@@ -24,9 +31,21 @@
|
||||
| 2026-03-10 | Toast 通知系统落地:创建 utils/toast.ts(纯原生),全系统 18 文件约 90 处 alert 全部替换为 toast.success/error/info | 已完成 |
|
||||
| 2026-03-11 | 以界面定需求:管理端界面清单纳入《以界面定需求》,作为验收基准 | 已完成 |
|
||||
| 2026-03-12 | ContentPage TypeScript 严格类型修复;关联小程序 key、@ 人物 token 设计(链接标签存 key、PersonItem.id=token) | 已完成 |
|
||||
| 2026-03-14 | 排名算法权重保存后刷新:handleSaveRankingWeights 成功后 loadRanking + 关闭弹窗,列表立即更新 | 已完成 |
|
||||
| 2026-03-16 | 乘风发起例行开发进度同步 | 已完成 |
|
||||
| 2026-03-16 | 链接人与事:table 布局、planId/apiKey 列、复制图标、删除 Dialog 弹窗 | 已完成 |
|
||||
| 2026-03-16 | 会议:new-soul 新需求与当前项目差异分析;派对AI 不新增管理端需求 | 已完成 |
|
||||
| 2026-03-17 | 会议:新版管理端迁移到稳定版实施方案确认;新版独有全部吸纳,内容管理以稳定版为主 | 已完成 |
|
||||
| 2026-03-17 | 吸收新版管理端定义(new-soul/soul-admin);迁移 ApiDocsPage 完整版、OSS region、鉴权失败 clearAdminToken | 已完成 |
|
||||
| 2026-03-17 | 修复 DistributionPage Order.description;用户余额人工调整(后端 adjust API + 用户详情入口);代付列表页(后端 gift-pay-requests + 推广中心 Tab) | 已完成 |
|
||||
| 2026-03-17 | 会议:稳定版源码质量优化;UserDetailModal 改 /api/admin/user/track、RichEditor HTML 转义 | 已完成 |
|
||||
| 2026-03-17 | 会议收尾:源码优化已落地;开发环境测试通过 | 已完成 |
|
||||
| 2026-03-17 | 性能优化会议:OSS 配置后上传自动优先 OSS,失败回退本地;无需前端改动 | 已完成 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-12
|
||||
**最后更新**:2026-03-17
|
||||
|
||||
> 注:soul-admin 构建仍有 DistributionPage Order.description 类型错误(与本次迁移无关),待修复。
|
||||
|
||||
17
.cursor/agent/管理端开发工程师/evolution/2026-03-14.md
Normal file
17
.cursor/agent/管理端开发工程师/evolution/2026-03-14.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# 2026-03-14 - 内容排行权重保存后刷新
|
||||
|
||||
## 问题 / 场景
|
||||
|
||||
- 管理端「排名算法」弹窗修改权重并保存后,内容排行榜列表和排序不更新。
|
||||
- 原因:`handleSaveRankingWeights` 成功时只调用了 `loadList()`(章节树),未调用 `loadRanking()`(内容排行榜)。
|
||||
|
||||
## 解决方案
|
||||
|
||||
- 保存成功后:
|
||||
1. `setShowRankingAlgorithmModal(false)` 关闭弹窗
|
||||
2. `loadList()` 刷新章节树(含 hotScore)
|
||||
3. `loadRanking()` 刷新内容排行榜
|
||||
|
||||
## 代码位置
|
||||
|
||||
- `soul-admin/src/pages/content/ContentPage.tsx`:`handleSaveRankingWeights`
|
||||
16
.cursor/agent/管理端开发工程师/evolution/2026-03-16.md
Normal file
16
.cursor/agent/管理端开发工程师/evolution/2026-03-16.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# 管理端开发工程师 经验记录 - 2026-03-16
|
||||
|
||||
## 链接人与事列表优化
|
||||
|
||||
- **table 布局**:列表改用 `<table>` 替代 flex,列头与数据对齐
|
||||
- **新增列**:planId、apiKey
|
||||
- **apiKey 复制**:列前增加复制图标,点击复制到剪贴板并 toast 提示
|
||||
- **删除确认**:用 Dialog 弹窗替代 confirm(),二次确认文案清晰
|
||||
|
||||
## 删除弹窗尺寸
|
||||
|
||||
- max-w-md、p-4、gap-3,避免弹窗过大
|
||||
|
||||
## new-soul 派对AI 与管理端(会议:new-soul 新需求与当前项目差异分析)
|
||||
|
||||
- 派对AI 不新增管理端需求,管理端以当前项目为准
|
||||
19
.cursor/agent/管理端开发工程师/evolution/2026-03-17.md
Normal file
19
.cursor/agent/管理端开发工程师/evolution/2026-03-17.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# 管理端开发工程师 经验记录 - 2026-03-17
|
||||
|
||||
## 稳定版源码质量优化(会议:2026-03-17)
|
||||
|
||||
- **UserDetailModal**:改为调用 `/api/admin/user/track`(后端新增后同步改)
|
||||
- **RichEditor**:@mention 弹窗对 `item.name`、`item.label` 做 HTML 转义,防 XSS,不改 @mention 行为
|
||||
|
||||
---
|
||||
|
||||
## 会议收尾(2026-03-17)
|
||||
|
||||
- 源码优化已落地;开发环境测试通过
|
||||
|
||||
---
|
||||
|
||||
## 性能优化会议(2026-03-17)
|
||||
|
||||
- **OSS 上传**:系统设置保存 OSS 配置后,上传接口自动优先 OSS;失败回退本地
|
||||
- 无需前端改动,后端 upload handler 已支持
|
||||
@@ -3,6 +3,8 @@
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
| 2026-03-12 | ContentPage TypeScript 严格类型修复;关联小程序 key、@ 人物 token 设计 | [2026-03-12.md](./2026-03-12.md) |
|
||||
| 2026-03-14 | 排名算法权重保存后 loadRanking 刷新、关闭弹窗 | [2026-03-14.md](./2026-03-14.md) |
|
||||
| 2026-03-05 | 分支合并后全功能自测,404/异常接口记录 | [2026-03-05.md](./2026-03-05.md) |
|
||||
| 2026-03-05 | 文章详情@某人:编辑页插入 @用户、保存约定 content 格式 | [2026-03-05.md](./2026-03-05.md) |
|
||||
| 2026-03-10 | 管理端迁移 Mycontent-temp 菜单/布局:主导航收敛、Settings Tab 承载 author/admin | [2026-03-10.md](./2026-03-10.md) |
|
||||
| 2026-03-16 | 链接人与事:table 布局、planId/apiKey 列、复制图标、删除 Dialog 弹窗 | [2026-03-16.md](./2026-03-16.md) |
|
||||
|
||||
103
.cursor/agent/软件测试/evolution/2026-03-16-scripts目录与测试关联.md
Normal file
103
.cursor/agent/软件测试/evolution/2026-03-16-scripts目录与测试关联.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# 软件测试 经验记录 - 2026-03-16
|
||||
|
||||
## scripts 目录与测试关联
|
||||
|
||||
测试工程师需了解项目根目录 `scripts/` 下的辅助脚本,以便在联调、回归、环境准备时正确使用。
|
||||
|
||||
---
|
||||
|
||||
### 1. 本地启动脚本(联调必备)
|
||||
|
||||
| 脚本 | 用途 | 测试关联 |
|
||||
|------|------|----------|
|
||||
| `本地启动.sh` | 一键启动 soul-api(8080)+ soul-admin(5174) | **三端联调前**:先执行此脚本,确保后端与管理端在本地运行;小程序需配置本地 API 地址 |
|
||||
|
||||
**用法**:`./scripts/本地启动.sh` 或 `bash scripts/本地启动.sh`
|
||||
**前置**:Mac/Linux 环境;soul-api 需能连接数据库;首次会编译 `soul-api-mac`
|
||||
**验证**:访问 http://localhost:5174,默认账号 admin / admin123
|
||||
|
||||
---
|
||||
|
||||
### 2. 飞书相关脚本(非核心业务,可了解)
|
||||
|
||||
| 脚本/目录 | 用途 | 测试关联 |
|
||||
|-----------|------|----------|
|
||||
| `feishu_export/` | 书稿导出 md,供飞书知识库同步 | 与 Soul 三端业务无直接关系,回归可不覆盖 |
|
||||
| `sync_book_to_feishu_export.py` | 从书稿目录导出 md 到 feishu_export | 同上 |
|
||||
| `feishu_wiki_upload.py` | 上传全书到飞书知识库 | 同上 |
|
||||
| `send_chapter_poster_to_feishu.py` | 生成章节海报并推送到飞书群 | 若海报含小程序码,可顺带验证二维码可访问性 |
|
||||
|
||||
---
|
||||
|
||||
### 3. Git 推送脚本
|
||||
|
||||
| 脚本 | 用途 | 测试关联 |
|
||||
|------|------|----------|
|
||||
| `gitea_push_once.sh` | 首次推送到 Gitea 仓库 | 与功能测试无关,部署/发布流程用 |
|
||||
|
||||
---
|
||||
|
||||
### 4. 测试工程师使用建议
|
||||
|
||||
- **联调前**:优先使用 `本地启动.sh` 启动后端与管理端,再测小程序、管理端功能
|
||||
- **回归范围**:scripts 内飞书、Gitea 脚本不纳入三端功能回归清单
|
||||
- **环境依赖**:`本地启动.sh` 依赖 Go 编译、pnpm、数据库可连;测试环境需提前确认
|
||||
|
||||
---
|
||||
|
||||
### 5. 测试用例目录 `scripts/test/`(测试工程师主战场)
|
||||
|
||||
| 子目录 | 用途 | 对应端 |
|
||||
|--------|------|--------|
|
||||
| **miniapp/** | 小程序接口测试 | miniprogram,API:/api/miniprogram/* |
|
||||
| **web/** | 管理端测试 | soul-admin,API:/api/admin/*、/api/db/* |
|
||||
| **process/** | 流程测试 | 跨端,多接口串联 |
|
||||
|
||||
**约定**:测试工程师在此编写与维护测试用例,miniapp 放小程序接口、web 放管理端、process 放跨端业务流程。
|
||||
|
||||
**环境配置**:必须明确指定测试环境(SOUL_TEST_ENV=local|souldev|soulapi 或 SOUL_API_BASE),运行前会打印「测试环境: xxx」横幅,避免误测正式库。配置可来自 soul-api/.env* 或 scripts/test/.env.test。
|
||||
|
||||
---
|
||||
|
||||
### 6. pytest + requests 架构与配置约定
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| config.py | 从项目 soul-api/.env* 或 .env.test 读取;SOUL_TEST_ENV / SOUL_API_BASE |
|
||||
| conftest.py | base_url、admin_token、miniapp_token;pytest_report_header 显示环境横幅 |
|
||||
| util.py | admin_headers、miniapp_headers |
|
||||
| requirements-test.txt | pytest、requests |
|
||||
|
||||
**配置优先级**:SOUL_TEST_ENV > SOUL_API_BASE > .env.test > soul-api/.env* > 默认 local。
|
||||
|
||||
**运行前必看**:pytest 报告头部会显示「测试环境: 本地/测试/正式 (URL)」,确认无误后再执行。
|
||||
|
||||
---
|
||||
|
||||
### 7. 测试用例归档与复用规则
|
||||
|
||||
| 场景 | 归档目录 | 示例 |
|
||||
|------|----------|------|
|
||||
| 管理端 + 后端混合 | process/ | 文章 @某人 自动创建 Person + 存客宝 |
|
||||
| 仅小程序接口 | miniapp/ | 登录、VIP、阅读 |
|
||||
| 仅管理端/后端 | web/ | 鉴权、CRUD |
|
||||
|
||||
**需求变更**:用例随需求更新;无变更时直接复用。
|
||||
|
||||
---
|
||||
|
||||
### 8. 与 soul-api/scripts 的区别
|
||||
|
||||
| 位置 | 内容 | 测试关联 |
|
||||
|------|------|----------|
|
||||
| `scripts/`(项目根) | 本地启动、飞书同步、Gitea 推送、**test/** | 见上文 |
|
||||
| `scripts/test/` | **测试用例**:miniapp、web、process;pytest 架构 | 测试工程师在此写用例 |
|
||||
| `soul-api/scripts/` | SQL 迁移、Python 脚本等 | 数据库迁移、后端运维;测试时若涉及表结构变更,需关注对应 SQL |
|
||||
|
||||
---
|
||||
|
||||
### 9. 示例:文章 @某人 自动创建(2026-03-16)
|
||||
|
||||
- **用例**:`scripts/test/process/test_article_mention_ckb_flow.py`
|
||||
- **报告**:`scripts/test/process/2026-03-16-文章@某人自动创建-测试报告.md`
|
||||
- **结论**:后端逻辑正确,会调用存客宝创建计划;存客宝 API 返回 400 导致失败,需排查 CKB 配置或 deviceGroups 空值
|
||||
7
.cursor/agent/软件测试/evolution/2026-03-16.md
Normal file
7
.cursor/agent/软件测试/evolution/2026-03-16.md
Normal file
@@ -0,0 +1,7 @@
|
||||
# 软件测试 经验记录 - 2026-03-16
|
||||
|
||||
## new-soul 派对AI 与测试关注点(会议:new-soul 新需求与当前项目差异分析)
|
||||
|
||||
- 引入派对AI 流程时需回归:文章上传、飞书推送、小程序展示
|
||||
- 关注 content_upload.py 与 soul-api 数据流一致性,避免双写冲突
|
||||
- 环境差异:派对AI 为 Mac 路径,当前为 Windows,需确认是否同一代码库不同环境
|
||||
31
.cursor/agent/软件测试/evolution/2026-03-17.md
Normal file
31
.cursor/agent/软件测试/evolution/2026-03-17.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# 软件测试 经验记录 - 2026-03-17
|
||||
|
||||
## 新版管理端迁移验收(会议:实施方案确认)
|
||||
|
||||
- **验收清单**:按《新版管理端迁移到稳定版-需求评估》§七
|
||||
- **回归范围**:提现、分销、找伙伴、导师、设置等
|
||||
- **风险**:合并时避免误覆盖稳定版独有逻辑,建议 diff 逐模块核对
|
||||
- **三端联调**:管理端 ↔ soul-api 重点验证;用户规则、订单、余额展示
|
||||
|
||||
---
|
||||
|
||||
## 稳定版源码质量优化(会议:2026-03-17)
|
||||
|
||||
- **回归重点**:支付流程、管理端用户详情行为轨迹、我的页找伙伴/推广/搜索、首页目录搜索
|
||||
- **策略**:每项优化完成后小回归,全部完成后完整三端联调
|
||||
|
||||
---
|
||||
|
||||
## 会议收尾(2026-03-17)
|
||||
|
||||
- **功能测试流程定稿**:`scripts/test/功能测试流程.md` — 成功 ☑️、失败列问题、最终报告
|
||||
- **测试报告模板**:`scripts/test/测试报告-环境与用例清单.md` — 环境、用例、结果记录
|
||||
- **开发环境测试**:10 通过、2 跳过、0 失败
|
||||
|
||||
---
|
||||
|
||||
## 性能优化会议(2026-03-17)
|
||||
|
||||
- **test_upload.py**:6 个用例(上传成功、鉴权、校验、删除)
|
||||
- **/health**:可验证 database、redis 连接状态
|
||||
- **部署后回归**:parts、hot、config、章节阅读等缓存接口
|
||||
@@ -2,7 +2,11 @@
|
||||
|
||||
| 日期 | 摘要 | 文件 |
|
||||
|------|------|------|
|
||||
| 2026-03-15 | **全站深度测试(42个问题)**:管理端20+页面截图测试、35个API端点、25个小程序页面代码审查、25张数据库表;严重11/高13/中12/低6;沉淀安全测试/API测试/小程序测试/数据库测试方法论 | [2026-03-15-全站深度测试42问题.md](./2026-03-15-全站深度测试42问题.md) |
|
||||
| 2026-03-10 | 管理端迁移 Mycontent-temp:菜单一致性、隐藏路由可达性、鉴权与跳转回归 | [2026-03-10.md](./2026-03-10.md) |
|
||||
| 2026-03-05 | 分支合并后回归清单制定;三端联调验证 | [2026-03-05.md](./2026-03-05.md) |
|
||||
| 2026-03-05 | 文章详情@某人:@ 展示与添加好友用例、联调与回归点 | [2026-03-05.md](./2026-03-05.md) |
|
||||
| 2026-03-10 | 管理端迁移 Mycontent-temp:菜单一致性、隐藏路由可达性、鉴权与跳转回归 | [2026-03-10.md](./2026-03-10.md) |
|
||||
| 2026-03-16 | scripts 目录与测试关联:本地启动、飞书脚本、联调前环境准备 | [2026-03-16-scripts目录与测试关联.md](./2026-03-16-scripts目录与测试关联.md) |
|
||||
| 2026-03-16 | scripts/test 测试用例目录:miniapp 小程序接口、web 管理端 | [2026-03-16-scripts目录与测试关联.md](./2026-03-16-scripts目录与测试关联.md) |
|
||||
| 2026-03-16 | scripts/test/process 流程测试:跨端多接口串联 | [2026-03-16-scripts目录与测试关联.md](./2026-03-16-scripts目录与测试关联.md) |
|
||||
| 2026-03-16 | pytest 架构、配置从项目读取、运行前显示测试环境 | [2026-03-16-scripts目录与测试关联.md](./2026-03-16-scripts目录与测试关联.md) |
|
||||
| 2026-03-16 | 测试用例归档规则:混合→process、纯端→miniapp/web;需求变更时更新 | [2026-03-16-scripts目录与测试关联.md](./2026-03-16-scripts目录与测试关联.md) |
|
||||
|
||||
74
.cursor/docs/目录无法加载-排查分析.md
Normal file
74
.cursor/docs/目录无法加载-排查分析.md
Normal file
@@ -0,0 +1,74 @@
|
||||
# 正式版小程序「目录无法加载数据」排查分析
|
||||
|
||||
## 一、数据流梳理
|
||||
|
||||
| 页面/时机 | 接口 | 用途 |
|
||||
|----------|------|------|
|
||||
| App onLaunch | `GET /api/miniprogram/book/all-chapters` | 预加载全书章节到 globalData.bookData |
|
||||
| 目录页 onLoad | `GET /api/miniprogram/book/parts` | **主接口**:懒加载篇章列表(不含章节详情) |
|
||||
| 目录页展开篇章 | `GET /api/miniprogram/book/chapters-by-part?partId=xxx` | 按篇章拉取章节列表 |
|
||||
|
||||
**目录页展示依赖的是 `book/parts`**,不依赖 `all-chapters`。`all-chapters` 失败只会影响首页等处的预加载,目录页应能独立加载。
|
||||
|
||||
---
|
||||
|
||||
## 二、后端接口验证结果
|
||||
|
||||
运行 `SOUL_TEST_ENV=soulapi python scripts/test/check-catalog-api.py` 实测:
|
||||
|
||||
- **book/parts**:✅ 正常,返回 6 个篇章、90 个章节、5 个固定模块
|
||||
- **all-chapters**:偶发 SSL 连接中断(大响应体时)
|
||||
- **health**:偶发 SSL 握手超时
|
||||
|
||||
**结论**:正式环境 soulapi 的 `book/parts` 接口可用且数据正常,后端不是主要瓶颈。
|
||||
|
||||
---
|
||||
|
||||
## 三、可能原因与排查步骤
|
||||
|
||||
### 1. baseUrl 指向错误
|
||||
|
||||
- **现象**:正式版请求到 souldev 或 localhost
|
||||
- **处理**:`app.js` 中 baseUrl 改为注释切换方式,正式环境使用 `https://soulapi.quwanzhi.com`
|
||||
|
||||
### 2. 服务器域名未配置(优先排查)
|
||||
|
||||
- **现象**:正式版请求失败,开发工具勾选「不校验合法域名」时正常
|
||||
- **处理**:微信公众平台 → 开发 → 开发管理 → 开发设置 → 服务器域名 → **request 合法域名**
|
||||
- **必须包含**:`https://soulapi.quwanzhi.com`
|
||||
- **注意**:正式版、体验版都会校验,缺配置会导致请求被拦截
|
||||
|
||||
### 3. 正式环境数据库为空
|
||||
|
||||
- **现象**:接口返回 `parts: []`、`totalSections: 0`
|
||||
- **排查**:执行诊断脚本,若 parts 为空则检查正式库 `chapters` 表
|
||||
- **处理**:确认正式库已导入 `soul_miniprogram.sql` 及必要迁移脚本
|
||||
|
||||
### 4. SSL/网络不稳定
|
||||
|
||||
- **现象**:偶发连接中断、超时
|
||||
- **排查**:多次调用诊断脚本,观察是否间歇失败
|
||||
- **处理**:检查正式服务器 SSL 配置、反向代理、超时设置
|
||||
|
||||
### 5. 前端错误处理导致无提示
|
||||
|
||||
- **现象**:请求失败但用户只看到空白
|
||||
- **代码**:`chapters.js` 的 `loadParts` 在 catch 中 `setData({ bookData: [], totalSections: 0 })`,不弹窗
|
||||
- **建议**:可在 catch 中增加 `wx.showToast({ title: '加载失败,请重试', icon: 'none' })` 便于用户感知
|
||||
|
||||
---
|
||||
|
||||
## 四、建议操作顺序
|
||||
|
||||
1. **确认 request 合法域名**:在微信公众平台添加 `https://soulapi.quwanzhi.com`
|
||||
2. **本地验证接口**:`SOUL_TEST_ENV=soulapi python scripts/test/check-catalog-api.py`
|
||||
3. **正式版真机测试**:清除小程序缓存后重新打开,观察目录页是否加载
|
||||
4. **若仍失败**:在 `chapters.js` 的 `loadParts` 中加 `console.log` 或 `wx.showModal` 输出错误信息,便于定位
|
||||
|
||||
---
|
||||
|
||||
## 五、相关文件
|
||||
|
||||
- 小程序:`miniprogram/app.js`(baseUrl)、`miniprogram/pages/chapters/chapters.js`(loadParts)
|
||||
- 后端:`soul-api/internal/handler/book.go`(BookParts、BookChaptersByPart)
|
||||
- 诊断脚本:`scripts/test/check-catalog-api.py`
|
||||
123
.cursor/meeting/2026-03-16_new-soul新需求与当前项目差异分析.md
Normal file
123
.cursor/meeting/2026-03-16_new-soul新需求与当前项目差异分析.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 会议纪要 - 2026-03-16 | new-soul 新需求与当前项目差异分析
|
||||
|
||||
> 本文件由**助理橙子**在会议结束后自动生成。
|
||||
|
||||
---
|
||||
|
||||
## 基本信息
|
||||
|
||||
- **时间**:2026-03-16
|
||||
- **议题**:new-soul 新需求分析与当前项目 Mycontent 的差异
|
||||
- **触发方式**:开会,所有人都参加,@new-soul 这是新需求
|
||||
- **参与角色**:产品经理、后端开发、管理端开发工程师、小程序开发工程师、测试人员
|
||||
|
||||
---
|
||||
|
||||
## 各角色发言
|
||||
|
||||
### 【产品经理】
|
||||
|
||||
**定位差异**:
|
||||
- **new-soul 派对AI**:内容运营侧 AI 助手,服务于《一场soul的创业实验》的派对→录屏→剪辑→成片→分发→文章→小程序全链路。
|
||||
- **当前 Mycontent**:产品侧,面向创业者的社区/工具型小程序,核心是内容→会员→导师变现、存客宝对接、分销等。
|
||||
|
||||
**业务范围**:
|
||||
- 派对AI 覆盖:运营报表、飞书管理、文章写作、视频剪辑、素材库上传、多平台分发、Soul 账号注册、小程序站管理(9 技能 5 组)。
|
||||
- 当前项目:三端代码 + 存客宝、链接人与事、VIP、分销等业务功能。
|
||||
|
||||
**结论**:两者是同一业务的不同层面(运营 vs 产品),非替代关系。
|
||||
|
||||
### 【后端开发】
|
||||
|
||||
**技术差异**:
|
||||
- 派对AI 依赖 `content_upload.py` 直连腾讯云 MySQL 写入 `soul_miniprogram.chapters`;路径为 Mac(`/Users/karuo/...`)。
|
||||
- 当前项目:soul-api(Go/Gin/GORM),通过 `/api/miniprogram/*`、`/api/admin/*`、`/api/db/*` 提供接口。
|
||||
|
||||
**重叠点**:小程序站管理技能引用的 soul-api、soul-admin、miniprogram 与当前三端一致;数据库同为 `soul_miniprogram`。
|
||||
|
||||
**风险**:`content_upload.py` 直连 DB 与 soul-api 并存,存在双写风险;路径为 Mac,当前环境为 Windows,需统一或适配。
|
||||
|
||||
### 【管理端开发工程师】
|
||||
|
||||
派对AI 未单独定义管理端功能,仅通过「小程序站管理」引用 soul-admin。当前项目管理端(链接人与事、存客宝、VIP、推广中心等)为完整实现。**结论**:派对AI 不新增管理端需求。
|
||||
|
||||
### 【小程序开发工程师】
|
||||
|
||||
派对AI 的小程序站管理覆盖上传、部署、版本管理,与当前 miniprogram 一致。当前项目 C 端功能(文章阅读、@某人、存客宝留资、VIP、分销等)已实现。**结论**:派对AI 不改变小程序功能,仅涉及发布流程。
|
||||
|
||||
### 【测试人员】
|
||||
|
||||
1. **环境**:派对AI 为 Mac 路径,当前为 Windows,需确认是否同一代码库不同环境。
|
||||
2. **数据流**:`content_upload.py` 直写 DB vs soul-api 接口,需避免冲突。
|
||||
3. **回归**:若引入派对AI 流程,需回归文章上传、飞书推送、小程序展示。
|
||||
|
||||
---
|
||||
|
||||
## 讨论过程
|
||||
|
||||
- **产品经理 → 后端**:`content_upload.py` 是否应逐步迁移到 soul-api 接口?
|
||||
- **后端**:短期可保留直连,中长期规划为通过 soul-api admin/db 接口写入,统一数据入口。
|
||||
- **小程序 → 产品**:需确认 chapters 表结构与 `content_upload.py` 写入格式一致。
|
||||
- **后端**:需核对 `content_upload.py` 字段与 chapters 表、soul-api 模型一致性。
|
||||
|
||||
---
|
||||
|
||||
## 会议决议
|
||||
|
||||
1. **定位**:new-soul 派对AI 为运营侧 AI 助手,当前 Mycontent 为产品侧三端项目,二者互补,非替代。
|
||||
2. **三端**:小程序站管理技能与 soul-api、soul-admin、miniprogram 一致,无需调整三端代码。
|
||||
3. **路径**:派对AI 使用 Mac 路径,当前为 Windows;需在文档或配置中说明环境差异或提供路径映射。
|
||||
4. **数据**:`content_upload.py` 直连 DB 与 soul-api 并存,需核对 chapters 表结构与字段一致性。
|
||||
5. **待确认**:`content_upload.py` 与 soul-api 的 chapters 模型是否完全一致?是否规划将文章上传迁移到 soul-api 接口?
|
||||
|
||||
---
|
||||
|
||||
## 待办事项
|
||||
|
||||
| 责任角色 | 任务 | 优先级 | 截止建议 |
|
||||
|---------|------|--------|---------|
|
||||
| 后端开发 | 核对 content_upload.py 与 chapters 表/soul-api 模型一致性 | 中 | 2026-03-20 |
|
||||
| 产品经理 | 确认文章上传是否规划迁移到 soul-api 接口 | 低 | 待定 |
|
||||
| 助理橙子 | 在开发文档中补充 new-soul 与 Mycontent 关系说明 | 低 | 2026-03-18 |
|
||||
|
||||
---
|
||||
|
||||
## 问题与作答区
|
||||
|
||||
| # | 问题 | 责任角色 | 作答 |
|
||||
|---|------|---------|------|
|
||||
| 1 | content_upload.py 与 soul-api 的 chapters 模型是否完全一致? | 后端开发 | (待补充) |
|
||||
| 2 | 是否规划将文章上传迁移到 soul-api 接口? | 产品经理 | (待补充) |
|
||||
| 3 | new-soul 派对AI 与 Mycontent 是否为同一代码库、不同环境(Mac vs Windows)? | 产品经理 | (待补充) |
|
||||
|
||||
---
|
||||
|
||||
## 各角色经验与业务理解更新
|
||||
|
||||
### 产品经理
|
||||
|
||||
- new-soul 派对AI 与 Mycontent 为同一业务的不同层面:运营侧 vs 产品侧,互补非替代。
|
||||
|
||||
### 后端开发
|
||||
|
||||
- content_upload.py 直连 DB 与 soul-api 并存,需核对 chapters 表结构;中长期可规划迁移到 soul-api 接口。
|
||||
|
||||
### 管理端开发工程师
|
||||
|
||||
- 派对AI 不新增管理端需求,管理端以当前项目为准。
|
||||
|
||||
### 小程序开发工程师
|
||||
|
||||
- 派对AI 的小程序站管理与当前 miniprogram 一致,仅涉及发布流程。
|
||||
|
||||
### 测试人员
|
||||
|
||||
- 引入派对AI 流程时需回归:文章上传、飞书推送、小程序展示;关注 content_upload.py 与 soul-api 数据流一致性。
|
||||
|
||||
### 团队共享
|
||||
|
||||
- new-soul 派对AI(魂AI)9 技能 5 组:魂资/魂流/魂产/魂码/魂质;与 Mycontent 三端(soul-api、soul-admin、miniprogram)为同一业务不同层面,路径差异(Mac vs Windows)需在文档中说明。
|
||||
|
||||
---
|
||||
|
||||
*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/2026-03-16.md`*
|
||||
85
.cursor/meeting/2026-03-16_链接人与事与存客宝对接优化.md
Normal file
85
.cursor/meeting/2026-03-16_链接人与事与存客宝对接优化.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# 会议纪要 - 2026-03-16 | 链接人与事与存客宝对接优化
|
||||
|
||||
> 本文件由**助理橙子**在会议结束后自动生成。
|
||||
|
||||
---
|
||||
|
||||
## 基本信息
|
||||
|
||||
- **时间**:2026-03-16
|
||||
- **议题**:链接人与事列表优化、存客宝对接参数、@mention 显示异常修复
|
||||
- **触发方式**:会议结束,总结会议
|
||||
- **参与角色**:管理端开发工程师、后端工程师、团队
|
||||
|
||||
---
|
||||
|
||||
## 各角色发言
|
||||
|
||||
> 本次为开发会话总结,非正式多角色会议。按完成事项归类。
|
||||
|
||||
### 【管理端开发工程师】
|
||||
|
||||
- 链接人与事列表改为 `<table>` 布局,解决列头与数据对齐问题
|
||||
- 新增 planId、apiKey 两列展示
|
||||
- apiKey 列增加复制图标,点击复制到剪贴板
|
||||
- 删除操作改为 Dialog 二次确认弹窗,替代原生 confirm
|
||||
- 弹窗尺寸优化:max-w-md、p-4、gap-3,避免过大
|
||||
|
||||
### 【后端工程师】
|
||||
|
||||
- 存客宝创建计划参数调整:planType=1、sceneId=9、scenario=9、status=1
|
||||
- ParseAutoLinkContent 输出 mention span 时增加 `data-label`,修复 TipTap 显示 token 而非名字的问题
|
||||
- 已损坏内容(span 内为 token)自动修复:用 token 查 persons 取真实名字补回 data-label
|
||||
|
||||
### 【团队共享】
|
||||
|
||||
- TipTap Mention 需 `data-label` 属性:仅从 data-label 解析显示名,缺则回退显示 data-id(token)
|
||||
|
||||
---
|
||||
|
||||
## 讨论过程
|
||||
|
||||
(开发会话,用户逐项提出需求并实现)
|
||||
|
||||
---
|
||||
|
||||
## 会议决议
|
||||
|
||||
1. **链接人与事列表**:使用 table 布局,展示 token、@的人、获客计划活动名、planId、apiKey、操作
|
||||
2. **存客宝创建计划**:planType=1、sceneId=9、status=1
|
||||
3. **@mention 存储格式**:span 必须含 `data-label` 存显示名,否则 TipTap 会显示 token
|
||||
|
||||
---
|
||||
|
||||
## 待办事项
|
||||
|
||||
(无待办,原待确认项已确认为代码 bug 并修复)
|
||||
|
||||
---
|
||||
|
||||
## 问题与作答区
|
||||
|
||||
| # | 问题 | 责任角色 | 作答 |
|
||||
|---|------|---------|------|
|
||||
| 1 | CKBLead 接口 401 无效的 apiKey | 后端 | **已修复**(代码 bug,通过 planType/sceneId/status 等参数修正) |
|
||||
| 2 | sceneId=9 与 planType=1 在存客宝业务含义 | 后端 | **已修复**(代码已按 planType=1、sceneId=9、status=1 实现) |
|
||||
|
||||
---
|
||||
|
||||
## 各角色经验与业务理解更新
|
||||
|
||||
### 管理端开发工程师
|
||||
|
||||
- 链接人与事列表用 table 布局;apiKey 列需复制图标;删除用 Dialog 二次确认
|
||||
|
||||
### 后端工程师
|
||||
|
||||
- ParseAutoLinkContent 输出 mention 必须含 data-label;存客宝 create 需 planType=1 sceneId=9 status=1;已损坏 mention 可查 persons 补回 label
|
||||
|
||||
### 团队共享
|
||||
|
||||
- TipTap Mention 的 label 仅从 data-label 解析,不解析 span 内文本
|
||||
|
||||
---
|
||||
|
||||
*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/2026-03-16.md`*
|
||||
90
.cursor/meeting/2026-03-17_会议收尾-源码优化完成与测试流程定稿.md
Normal file
90
.cursor/meeting/2026-03-17_会议收尾-源码优化完成与测试流程定稿.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# 会议收尾 - 2026-03-17 | 源码优化完成与测试流程定稿
|
||||
|
||||
> 本文件由**助理橙子**在会议结束后自动生成。对应会议:2026-03-17 稳定版源码质量优化方案讨论与开发安排。
|
||||
|
||||
---
|
||||
|
||||
## 基本信息
|
||||
|
||||
- **时间**:2026-03-17
|
||||
- **议题**:会议收尾 — 源码质量优化完成、开发环境测试、功能测试流程定稿、开发文档同步
|
||||
- **触发方式**:结束会议、沉淀经验、开发部门同步需求
|
||||
- **参与角色**:产品经理、后端开发、管理端开发工程师、小程序开发工程师、测试人员、助理橙子
|
||||
|
||||
---
|
||||
|
||||
## 收尾结论
|
||||
|
||||
### 1. 源码质量优化(10 项全部完成)
|
||||
|
||||
| 端 | 任务 | 状态 |
|
||||
|----|------|------|
|
||||
| 后端 | 敏感配置生产环境强制校验(config.go) | ☑️ 已完成 |
|
||||
| 后端 | 新增 GET /api/admin/user/track + AdminAuth | ☑️ 已完成 |
|
||||
| 后端 | AdminWithdrawTest 环境限制 | ☑️ 已完成 |
|
||||
| 管理端 | UserDetailModal 改为 /api/admin/user/track | ☑️ 已完成 |
|
||||
| 管理端 | RichEditor name/label HTML 转义 | ☑️ 已完成 |
|
||||
| 小程序 | 删除 payment.js | ☑️ 已完成 |
|
||||
| 小程序 | 删除 goToMatch 重复定义 | ☑️ 已完成 |
|
||||
| 小程序 | 删除 read.js.backup、referral.wxss.backup | ☑️ 已完成 |
|
||||
| 小程序 | appId 等从 config 读取 | ☑️ 已完成 |
|
||||
| 小程序 | totalSections 动态获取 | ☑️ 已完成 |
|
||||
|
||||
### 2. 开发环境测试
|
||||
|
||||
- **环境**:local (http://localhost:8080)
|
||||
- **结果**:10 通过、2 跳过、0 失败
|
||||
- **跳过**:test_dev_login_as(需 SOUL_MINIPROGRAM_DEV_USER_ID)、test_backfill_persons_ckb_api_key(需 CKB 配置)
|
||||
|
||||
### 3. 测试流程与文档
|
||||
|
||||
| 产出 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| 功能测试流程 | scripts/test/功能测试流程.md | 环境准备→自动化→手工验证→问题汇总→报告;成功 ☑️,失败列问题 |
|
||||
| 测试报告模板 | scripts/test/测试报告-环境与用例清单.md | 环境、用例清单、结果记录、归档说明 |
|
||||
|
||||
### 4. 开发文档同步
|
||||
|
||||
- **运营与变更**:新增第十七部分「源码优化完成与测试流程定稿」
|
||||
- **需求汇总**:源码优化为内部质量项,无新增需求条目
|
||||
|
||||
---
|
||||
|
||||
## 问题与作答区
|
||||
|
||||
| # | 问题 | 责任角色 | 作答 |
|
||||
|---|------|---------|------|
|
||||
| 1 | 生产环境判断:是否以 MODE=release 为准? | 后端开发 | (待补充) |
|
||||
| 2 | dev/login-as 后端限制方案:环境变量 or IP 白名单? | 后端开发 | (待补充) |
|
||||
|
||||
---
|
||||
|
||||
## 各角色经验与业务理解更新
|
||||
|
||||
### 产品经理
|
||||
|
||||
- 源码质量优化验收:10 项全部完成,功能不变;测试流程与报告模板已定稿
|
||||
|
||||
### 后端开发
|
||||
|
||||
- 源码优化已落地:config 生产校验、admin/user/track、AdminWithdrawTest 环境限制
|
||||
|
||||
### 管理端开发工程师
|
||||
|
||||
- UserDetailModal、RichEditor 优化已落地;开发环境测试通过
|
||||
|
||||
### 小程序开发工程师
|
||||
|
||||
- payment.js 删除、goToMatch 去重、备份清理、config 读取、totalSections 动态化已落地
|
||||
|
||||
### 测试人员
|
||||
|
||||
- 功能测试流程定稿:☑️ 成功、失败列问题、最终报告;开发环境 10 通过 2 跳过
|
||||
|
||||
### 助理橙子
|
||||
|
||||
- 会议收尾:纪要、经验入库、项目索引、会议索引、开发文档同步
|
||||
|
||||
---
|
||||
|
||||
*会议收尾由助理橙子执行 | 各角色经验已同步至 agent/{角色}/evolution/2026-03-17.md*
|
||||
101
.cursor/meeting/2026-03-17_性能优化与Redis缓存方案落地.md
Normal file
101
.cursor/meeting/2026-03-17_性能优化与Redis缓存方案落地.md
Normal file
@@ -0,0 +1,101 @@
|
||||
# 会议纪要 - 2026-03-17 | 性能优化与 Redis 缓存方案落地
|
||||
|
||||
> 本文件由**助理橙子**在会议结束后自动生成。
|
||||
|
||||
---
|
||||
|
||||
## 基本信息
|
||||
|
||||
- **时间**:2026-03-17
|
||||
- **议题**:三端性能优化、Redis 缓存接入、OSS 上传、健康检查增强
|
||||
- **参与角色**:后端开发、管理端开发工程师、小程序开发工程师、测试人员、助理橙子
|
||||
|
||||
---
|
||||
|
||||
## 会议决议
|
||||
|
||||
### 1. Redis 缓存接入(已完成)
|
||||
|
||||
| 接口 | 路由 | TTL | 失效触发 |
|
||||
|------|------|-----|----------|
|
||||
| 目录 | `/api/miniprogram/book/parts` | 10min | 章节增删改 |
|
||||
| 热门 | `/api/miniprogram/book/hot` | 5min | 章节更新 |
|
||||
| 推荐 | `/api/miniprogram/book/recommended` | 5min | 章节更新 |
|
||||
| 统计 | `/api/miniprogram/book/stats` | 5min | 章节更新 |
|
||||
| 配置 | `/api/miniprogram/config` | 10min | 配置变更 |
|
||||
| 正文 | `/api/book/chapter/by-mid/:mid` | 30min | 章节内容更新 |
|
||||
|
||||
### 2. Redis 容灾
|
||||
|
||||
- Redis 未配置或连接失败时自动回退 DB,不阻塞业务
|
||||
- 读写失败仅打日志,不向上抛出
|
||||
|
||||
### 3. OSS 上传接入(已完成)
|
||||
|
||||
- 管理端图片上传支持阿里云 OSS
|
||||
- 未配置或失败时回退本地磁盘
|
||||
- 删除支持 OSS URL 与本地路径
|
||||
|
||||
### 4. /health 接口增强(已完成)
|
||||
|
||||
- 返回 `database`、`redis` 连接状态(ok / disconnected / disabled)
|
||||
|
||||
### 5. Redis 配置
|
||||
|
||||
- `.env.production`、`.env.development` 增加 REDIS_URL
|
||||
- 服务器 Redis:端口 6379,密码 ckb@!(URL 编码 ckb%40%21)
|
||||
|
||||
### 6. 迁移功能变更清单(2026-03-17)
|
||||
|
||||
1. Redis 缓存接入:目录、热门/推荐/统计、config、章节正文
|
||||
2. Redis 容灾:未配置或失败时回退 DB
|
||||
3. OSS 上传接入:管理端图片支持阿里云 OSS,容灾回退本地
|
||||
4. /health 接口增强:返回 database、redis 连接状态
|
||||
5. Redis 配置:.env 增加 REDIS_URL,服务器密码 ckb@!
|
||||
6. 文件上传测试:新增 test_upload.py 共 6 个用例
|
||||
7. 缓存失效策略:章节/内容/配置变更时自动失效对应 Redis 缓存
|
||||
|
||||
---
|
||||
|
||||
## 待办事项
|
||||
|
||||
| 责任角色 | 任务 | 优先级 | 截止建议 |
|
||||
|---------|------|--------|---------|
|
||||
| 后端开发 | 部署后验证 Redis 连接(/health 显示 redis: ok) | 中 | 部署后 |
|
||||
| 测试人员 | 部署后回归缓存接口(parts、hot、config、章节阅读) | 中 | 部署后 |
|
||||
|
||||
---
|
||||
|
||||
## 问题与作答区
|
||||
|
||||
| # | 问题 | 责任角色 | 作答 |
|
||||
|---|------|---------|------|
|
||||
| 1 | Redis 与 soul-api 跨机部署时,REDIS_URL 中 host 填 Redis 服务器 IP 是否已文档化? | 后端开发 | (待补充) |
|
||||
|
||||
---
|
||||
|
||||
## 各角色经验与业务理解更新
|
||||
|
||||
### 后端开发
|
||||
|
||||
- internal/cache 包:Get/Set/Del、GetString/SetString;KeyBookParts、KeyChapterContent 等
|
||||
- 缓存失效:InvalidateBookParts、InvalidateBookCache、InvalidateConfig、InvalidateChapterContent
|
||||
- 章节正文缓存:先查元数据(不含 content),再取 content(Redis 或 DB)
|
||||
|
||||
### 管理端开发工程师
|
||||
|
||||
- OSS 配置在系统设置保存后,上传接口自动优先 OSS;无需前端改动
|
||||
|
||||
### 测试人员
|
||||
|
||||
- test_upload.py:6 个用例覆盖上传成功、鉴权、校验、删除
|
||||
- /health 可验证 database、redis 连接状态
|
||||
|
||||
### 团队共享
|
||||
|
||||
- Redis 容灾约定:不可用时回退 DB,不阻塞业务
|
||||
- 缓存 key 规范:soul:{业务}:{标识}
|
||||
|
||||
---
|
||||
|
||||
*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/2026-03-17.md`*
|
||||
106
.cursor/meeting/2026-03-17_新版管理端迁移到稳定版实施方案确认.md
Normal file
106
.cursor/meeting/2026-03-17_新版管理端迁移到稳定版实施方案确认.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# 会议纪要 - 2026-03-17 | 新版管理端迁移到稳定版实施方案确认
|
||||
|
||||
> 本文件由**助理橙子**在会议结束后自动生成。
|
||||
|
||||
---
|
||||
|
||||
## 基本信息
|
||||
|
||||
- **时间**:2026-03-17
|
||||
- **议题**:新版管理端迁移到稳定版 - 确认实施方案
|
||||
- **触发方式**:乘风调动开发人员开会,并确认实施方案
|
||||
- **参与角色**:产品经理、后端开发、管理端开发工程师、小程序开发工程师、测试人员
|
||||
|
||||
---
|
||||
|
||||
## 各角色发言
|
||||
|
||||
### 【产品经理】
|
||||
|
||||
需求基准以稳定版小程序为准;内容管理以稳定版为主;验收标准见《需求评估》§七;RFM、journey、神射手是否保留需运营确认。
|
||||
|
||||
### 【后端开发】
|
||||
|
||||
以稳定版为主,后端无需新增接口;若保留 RFM/journey/神射手需补 5 个 router;OSS 需确认 /api/admin/settings 是否支持 ossConfig;建议先补 router 再迁移。
|
||||
|
||||
### 【管理端开发工程师】
|
||||
|
||||
内容管理以稳定版为准不覆盖;必须保留用户详情余额、订单支付方式/代付、RechargeAlert、LinkedMp 等;可吸纳编辑禁用、鉴权、API 文档、OSS;按模块分批合并。
|
||||
|
||||
### 【小程序开发工程师】
|
||||
|
||||
本次主要影响管理端,小程序无需改动;迁移后做三端联调验证用户规则、订单、余额。
|
||||
|
||||
### 【测试人员】
|
||||
|
||||
按《需求评估》§七验收;回归提现、分销、找伙伴等;合并时避免误覆盖稳定版独有逻辑。
|
||||
|
||||
---
|
||||
|
||||
## 讨论过程
|
||||
|
||||
- 乘风确认:后端 router 补齐建议迁移前完成
|
||||
- 产品经理:OSS 按实际部署需求,用户决议「新版有的就迁移」→ OSS 纳入
|
||||
- 管理端:同意 OSS 纳入,新版独有能力全部吸纳
|
||||
|
||||
---
|
||||
|
||||
## 会议决议
|
||||
|
||||
1. **新版有的就迁移**:API 文档 Tab、api-docs 独立页、OSS 配置、编辑时手机号禁用、鉴权逻辑优化,全部吸纳到稳定版
|
||||
2. **内容管理**:以稳定版为主,不采纳新版
|
||||
3. **后端 router**:迁移前补齐 users/rfm、users/journey-stats、shensheshou 共 5 个路由(若运营使用)
|
||||
4. **实施顺序**:Phase 0 后端补 router → Phase 1 基础模块 → Phase 2 业务模块 → Phase 3 内容保持 → Phase 4 验收
|
||||
|
||||
---
|
||||
|
||||
## 待办事项(乘风指派)
|
||||
|
||||
| 责任角色 | 任务 | 优先级 | 截止建议 |
|
||||
|---------|------|--------|---------|
|
||||
| 后端开发 | soul-api router 注册 users/rfm、users/journey-stats、shensheshou 共 5 个路由 | 高 | 迁移前 |
|
||||
| 后端开发 | 确认 /api/admin/settings 是否支持 ossConfig,若不支持则补充 | 中 | 迁移前 |
|
||||
| 管理端开发工程师 | 从 new-soul/soul-admin 迁移:ApiDocsPage、OSS 配置、api-docs 路由、编辑时手机号禁用、鉴权逻辑 | 高 | - |
|
||||
| 管理端开发工程师 | 以稳定版为基准合并,内容管理不覆盖,其他模块选择性合并 | 高 | - |
|
||||
| 测试人员 | 迁移完成后按《需求评估》§七执行验收,三端联调 | 中 | 迁移后 |
|
||||
|
||||
---
|
||||
|
||||
## 问题与作答区
|
||||
|
||||
| # | 问题 | 责任角色 | 作答 |
|
||||
|---|------|---------|------|
|
||||
| 1 | RFM、用户旅程、神射手是否继续使用? | 产品/运营 | (待补充) |
|
||||
| 2 | /api/admin/settings 是否已支持 ossConfig? | 后端开发 | (待补充) |
|
||||
|
||||
---
|
||||
|
||||
## 各角色经验与业务理解更新
|
||||
|
||||
### 产品经理
|
||||
|
||||
- 新版管理端迁移以稳定版为基准,内容管理以稳定版为主;新版独有能力(API 文档、OSS、编辑禁用、鉴权)全部吸纳
|
||||
|
||||
### 后端开发
|
||||
|
||||
- 迁移前需补 router:users/rfm、users/journey-stats、shensheshou 共 5 个;需确认 settings 的 ossConfig 支持
|
||||
|
||||
### 管理端开发工程师
|
||||
|
||||
- 迁移策略:内容管理不覆盖;其他模块以稳定版为主;吸纳新版 ApiDocsPage、OSS、编辑禁用、鉴权;按模块分批合并
|
||||
|
||||
### 小程序开发工程师
|
||||
|
||||
- 管理端迁移不影响小程序;迁移后做三端联调验证
|
||||
|
||||
### 测试人员
|
||||
|
||||
- 验收按《需求评估》§七;合并时需 diff 核对避免误覆盖
|
||||
|
||||
### 团队共享
|
||||
|
||||
- 新版管理端迁移到稳定版:内容管理以稳定版为主,新版独有能力全部吸纳;详见 agent/团队/evolution/2026-03-17.md
|
||||
|
||||
---
|
||||
|
||||
*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/2026-03-17.md`*
|
||||
113
.cursor/meeting/2026-03-17_稳定版源码质量优化方案讨论与开发安排.md
Normal file
113
.cursor/meeting/2026-03-17_稳定版源码质量优化方案讨论与开发安排.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# 会议纪要 - 2026-03-17 | 稳定版源码质量优化方案讨论与开发安排
|
||||
|
||||
> 本文件由**助理橙子**在会议结束后自动生成。
|
||||
|
||||
---
|
||||
|
||||
## 基本信息
|
||||
|
||||
- **时间**:2026-03-17
|
||||
- **议题**:稳定版源码质量优化方案讨论与开发安排(基于源码质量分析报告,不影响现有功能)
|
||||
- **触发方式**:开会讨论
|
||||
- **参与角色**:产品经理、后端开发、管理端开发工程师、小程序开发工程师、测试人员
|
||||
|
||||
---
|
||||
|
||||
## 各角色发言
|
||||
|
||||
### 【产品经理】
|
||||
|
||||
从需求与业务角度,本次优化聚焦**安全与可维护性**,不涉及新功能,用户无感知。建议按优先级分批处理:高优(安全)→ 中优(代码质量)→ 低优(性能/结构)。验收标准:优化后现有功能行为不变,三端联调通过。
|
||||
|
||||
### 【后端开发】
|
||||
|
||||
高优:1)敏感配置在 `config.go` 中,生产环境(MODE=release)强制校验,缺则 Fatal;2)新增 `GET /api/admin/user/track` 并加 AdminAuth,原 `/api/user/track` 保留给小程序 POST 埋点。中优:AdminWithdrawTest 加环境限制。低优:DBUsersList 拆分可后续做。
|
||||
|
||||
### 【管理端开发工程师】
|
||||
|
||||
中优:1)后端提供 `/api/admin/user/track` 后,UserDetailModal 改为调用新路径;2)RichEditor 对 name/label 做 HTML 转义防 XSS。低优:上传逻辑抽公共方法可后续做。
|
||||
|
||||
### 【小程序开发工程师】
|
||||
|
||||
高优:1)payment.js 确认无引用可删除;2)goToMatch 重复定义删除一个;3)删除 read.js.backup、referral.wxss.backup。中优:appId 等从 config 读取、totalSections 动态获取。dev/login-as 由后端限制即可。
|
||||
|
||||
### 【测试人员】
|
||||
|
||||
回归重点:支付流程、管理端用户详情行为轨迹、我的页找伙伴/推广/搜索、首页目录搜索。建议每项完成后小回归,全部完成后完整三端联调。
|
||||
|
||||
---
|
||||
|
||||
## 讨论过程
|
||||
|
||||
- 后端确认 `/api/admin/user/track` 参数与现 `/api/user/track` 一致(userId、phone、limit),管理端仅改 URL 即可
|
||||
- 小程序确认 payment.js 无 require 引用,可安全删除
|
||||
- 产品确认按优先级分批,低优可放入后续迭代
|
||||
|
||||
---
|
||||
|
||||
## 会议决议
|
||||
|
||||
1. **高优(本周完成)**:后端敏感配置生产强制校验、新增 `/api/admin/user/track`;管理端 UserDetailModal 改路径;小程序删除 payment.js、goToMatch 重复、备份文件
|
||||
2. **中优(下周完成)**:后端 AdminWithdrawTest 环境限制;管理端 RichEditor 转义;小程序 config 读取、totalSections 动态化
|
||||
3. **低优(后续迭代)**:DBUsersList 拆分、上传逻辑抽公共、config 缓存
|
||||
4. **原则**:所有改动为增量修复,不改现有功能逻辑;每项完成后小回归,全部完成后完整联调
|
||||
|
||||
---
|
||||
|
||||
## 待办事项
|
||||
|
||||
| 责任角色 | 任务 | 优先级 | 截止建议 |
|
||||
|---------|------|--------|---------|
|
||||
| 后端开发 | 敏感配置生产环境强制校验(config.go) | 高 | 本周 |
|
||||
| 后端开发 | 新增 GET /api/admin/user/track + AdminAuth | 高 | 本周 |
|
||||
| 后端开发 | AdminWithdrawTest 环境限制 | 中 | 下周 |
|
||||
| 管理端开发工程师 | UserDetailModal 改为 /api/admin/user/track | 高 | 本周 |
|
||||
| 管理端开发工程师 | RichEditor name/label HTML 转义 | 中 | 下周 |
|
||||
| 小程序开发工程师 | 删除 payment.js | 高 | 本周 |
|
||||
| 小程序开发工程师 | 删除 goToMatch 重复定义 | 高 | 本周 |
|
||||
| 小程序开发工程师 | 删除 read.js.backup、referral.wxss.backup | 高 | 本周 |
|
||||
| 小程序开发工程师 | appId 等从 config 读取 | 中 | 下周 |
|
||||
| 小程序开发工程师 | totalSections 动态获取 | 中 | 下周 |
|
||||
| 测试人员 | 每项完成后小回归 | - | 持续 |
|
||||
| 测试人员 | 全部完成后三端联调 | - | 下周 |
|
||||
|
||||
---
|
||||
|
||||
## 问题与作答区
|
||||
|
||||
| # | 问题 | 责任角色 | 作答 |
|
||||
|---|------|---------|------|
|
||||
| 1 | 生产环境判断:是否以 MODE=release 为准? | 后端开发 | (待补充) |
|
||||
| 2 | dev/login-as 后端限制方案:环境变量 or IP 白名单? | 后端开发 | (待补充) |
|
||||
|
||||
---
|
||||
|
||||
## 各角色经验与业务理解更新
|
||||
|
||||
### 产品经理
|
||||
|
||||
- 源码质量优化按安全→可维护→性能分批,验收标准为功能不变、三端联调通过
|
||||
|
||||
### 后端开发
|
||||
|
||||
- 敏感配置生产环境缺则 Fatal;user/track 查询迁至 admin 组并加鉴权;AdminWithdrawTest 非 develop 拒绝
|
||||
|
||||
### 管理端开发工程师
|
||||
|
||||
- UserDetailModal 调用 /api/admin/user/track;RichEditor @mention 需对 name/label 做 HTML 转义防 XSS
|
||||
|
||||
### 小程序开发工程师
|
||||
|
||||
- payment.js 废弃可删;goToMatch 去重;备份文件清理;appId 等优先从 config 读取;totalSections 动态获取
|
||||
|
||||
### 测试人员
|
||||
|
||||
- 源码优化类改动需每项小回归 + 全部完成后完整三端联调,重点覆盖支付、用户详情、我的页、搜索
|
||||
|
||||
### 团队共享
|
||||
|
||||
- 源码质量优化原则:增量修复、不改功能逻辑;高优安全项优先,中优可维护项次之,低优可后续迭代
|
||||
|
||||
---
|
||||
|
||||
*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/2026-03-17.md`*
|
||||
@@ -73,3 +73,9 @@ YYYY-MM-DD_会议主题.md
|
||||
| 2026-03-10 | 文章详情三端功能对齐与开发(@mention/#linkTag/图片) | 产品、后端、管理端、小程序 | [2026-03-10_文章详情三端功能对齐与开发.md](2026-03-10_文章详情三端功能对齐与开发.md) |
|
||||
| 2026-03-10 | Toast 通知系统全局落地 & hot_score 数据库迁移 | 管理端、后端、团队 | [2026-03-10_Toast通知系统全局落地.md](2026-03-10_Toast通知系统全局落地.md) |
|
||||
| 2026-03-11 | 开发团队对齐业务逻辑与以界面定需求·会议收尾 | 产品、后端、管理端、小程序、团队 | [2026-03-11_开发团队对齐业务逻辑与以界面定需求会议收尾.md](2026-03-11_开发团队对齐业务逻辑与以界面定需求会议收尾.md) |
|
||||
| 2026-03-16 | 链接人与事与存客宝对接优化 | 管理端、后端、团队 | [2026-03-16_链接人与事与存客宝对接优化.md](2026-03-16_链接人与事与存客宝对接优化.md) |
|
||||
| 2026-03-16 | new-soul 新需求与当前项目差异分析 | 产品、后端、管理端、小程序、测试 | [2026-03-16_new-soul新需求与当前项目差异分析.md](2026-03-16_new-soul新需求与当前项目差异分析.md) |
|
||||
| 2026-03-17 | 新版管理端迁移到稳定版实施方案确认 | 产品、后端、管理端、小程序、测试 | [2026-03-17_新版管理端迁移到稳定版实施方案确认.md](2026-03-17_新版管理端迁移到稳定版实施方案确认.md) |
|
||||
| 2026-03-17 | 稳定版源码质量优化方案讨论与开发安排 | 产品、后端、管理端、小程序、测试 | [2026-03-17_稳定版源码质量优化方案讨论与开发安排.md](2026-03-17_稳定版源码质量优化方案讨论与开发安排.md) |
|
||||
| 2026-03-17 | 会议收尾:源码优化完成与测试流程定稿 | 产品、后端、管理端、小程序、测试、助理橙子 | [2026-03-17_会议收尾-源码优化完成与测试流程定稿.md](2026-03-17_会议收尾-源码优化完成与测试流程定稿.md) |
|
||||
| 2026-03-17 | 性能优化与 Redis 缓存方案落地 | 后端、管理端、小程序、测试、助理橙子 | [2026-03-17_性能优化与Redis缓存方案落地.md](2026-03-17_性能优化与Redis缓存方案落地.md) |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
description: Soul 创业派对开发团队多角色会议触发器。开个会、团队会议、需求评审、方案讨论时加载 SKILL-团队会议
|
||||
globs: ["**"]
|
||||
alwaysApply: false
|
||||
alwaysApply: true
|
||||
---
|
||||
|
||||
# Soul 创业派对 - 会议触发器
|
||||
|
||||
@@ -15,9 +15,10 @@ alwaysApply: true
|
||||
| 子项目 | 目录 | 用途 | 后端对接 |
|
||||
|--------|------|------|----------|
|
||||
| 小程序 | miniprogram/ | 微信原生小程序 C 端 | soul-api |
|
||||
| 管理端 | soul-admin/ | React 管理后台 | soul-api |
|
||||
| 管理端 | soul-admin/ | React 管理后台(稳定版,主用) | soul-api |
|
||||
| API 后端 | soul-api/ | Go + Gin + GORM 接口服务 | - |
|
||||
| 预览/参考 | next-project/ | 仅预览,非线上 | 不依赖 |
|
||||
| **新版管理端** | **new-soul/soul-admin/** | 新版参考实现,迁移时对照 | soul-api |
|
||||
|
||||
## 核心原则
|
||||
|
||||
@@ -60,5 +61,7 @@ alwaysApply: true
|
||||
| 变更完成、检查一下、准备提交 | `e:\Gongsi\Mycontent\.cursor\skills\change-checklist\SKILL.md` |
|
||||
| 开个会、开会、团队会议、乘风开会、需求评审、方案讨论、大家一起讨论 | `e:\Gongsi\Mycontent\.cursor\skills\team-meeting\SKILL.md`(老板分身/乘风主持) |
|
||||
| 会议结束、散会、会开完了 | `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md`(会议收尾) |
|
||||
| **加个需求**、加个需求:xxx | `e:\Gongsi\Mycontent\.cursor\skills\product-manager\SKILL.md`(产品经理三端分析 → 功能规划 → 指派) |
|
||||
| **新版分析**、版本对比、迁移分析、甲方代码分析、快速分析新版、抽取需求 | `e:\Gongsi\Mycontent\.cursor\skills\new-version-analyze\SKILL.md`(新版快速分析 → 差异清单 → 接口冲突 → 迁移迭代) |
|
||||
|
||||
**注意**:「必须 Read」= 使用 Read 工具读取**绝对路径**的完整文件内容后执行,不可跳过或仅凭记忆。
|
||||
|
||||
@@ -6,7 +6,7 @@ alwaysApply: true
|
||||
# 老板分身 - 能力与约束(Soul 创业派对)
|
||||
|
||||
> **老板分身权限最高**:协调所有智能体(小程序开发工程师、管理端开发工程师、后端工程师、产品经理、开发助理等)。其他 agent 执行任务时遵循本规则;老板分身可调度、协调、指派任一角色。
|
||||
> **激活方式**:用户说「老板」「分身」「乘风」「架构」「帮我协调」时,从旁观者转为主动参与。**开会时**:用户说「开会」「开个会」「团队会议」「乘风开会」等,老板分身(乘风)作为主持人自动读取并执行 `.cursor/skills/team-meeting/SKILL.md` 中的会议协议。
|
||||
> **激活方式**:用户说「老板」「分身」「乘风」「架构」「帮我协调」时,从旁观者转为主动参与。**开会时**:用户说「开会」「开个会」「团队会议」「乘风开会」「需求评审」「方案讨论」等表达开会意图时,**必须先**用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\team-meeting\SKILL.md` 完整内容,然后由老板分身(乘风)按该协议主持多角色会议,不可仅回复而不执行流程。
|
||||
> **会话自检**:仅沿用本项目 `.cursor/` 下的 rules、skills、agent;忽略与本项目无关的全局 rules/skills。
|
||||
> **角色驱动**:Soul 角色与 agent 映射见 `config/paths.py` 的 ROLE_TO_AGENT。
|
||||
|
||||
|
||||
@@ -76,12 +76,43 @@ description: Soul 创业派对小程序开发规范。在 miniprogram/ 下编辑
|
||||
|
||||
---
|
||||
|
||||
## 8. 何时使用本 Skill
|
||||
## 8. 平台合规与能力检测(2025 起)
|
||||
|
||||
- **隐私按需授权**:涉及用户信息的接口(登录、手机号、位置等)必须在用户**实际触发功能时**再请求授权,禁止在 `app.onLaunch` 中集中请求。需配置《小程序用户隐私保护指引》,使用 `<button open-type="agreePrivacyAuthorization">` 获取同意。
|
||||
- **能力检测**:使用新 API 前用 `wx.canIUse('api.xxx')` 检测,低版本做降级。
|
||||
- **Skyline(可选)**:性能敏感页面可在 `page.json` 中配置 `"renderer": "skyline"`,仍使用 WXML/WXSS。
|
||||
|
||||
---
|
||||
|
||||
## 9. 文本可选与复制(阅读类内容)
|
||||
|
||||
- **长按选中复制**:需支持长按选中的文本用 `<text user-select>...</text>`(基础库 2.12.1+,`selectable` 已废弃)。
|
||||
- **适用**:章节标题、正文段落、@ 提及、# 链接标签、预览内容等。
|
||||
- **注意**:`user-select` 会使 text 显示为 inline-block,若布局异常可回退 `selectable`;iOS 原生选中失效时可用 `bindlongpress` + `wx.setClipboardData` 做整段复制兜底。
|
||||
|
||||
---
|
||||
|
||||
## 10. 分享名片(编辑资料页)
|
||||
|
||||
- **场景**:编辑资料页转发/朋友圈做特殊处理,直接变成分享名片。
|
||||
- **标题**:`昵称+为您分享名片`(如「少年梦想家为您分享名片」)。
|
||||
- **封面**:Canvas 绘制 5:4 封面图,布局:左头像(圆形)+ 右昵称 +「个人名片」副标题 + 分隔线 + 四栏信息(地区、MBTI、行业、职位)。
|
||||
- **路径**:`member-detail?id=userId`,好友打开即见名片详情。
|
||||
- **预生成**:资料加载完成后、头像更新后调用 `generateShareCard()`,将 `shareCardPath` 存入 data;`onShareAppMessage`/`onShareTimeline` 返回 `imageUrl: shareCardPath`。
|
||||
- **朋友圈重定向**:分享带 `id` 时,`profile-edit` 的 `onLoad` 检测 `options.id` 即 `redirectTo` 到 `member-detail`。
|
||||
- **头像**:网络头像需 `wx.downloadFile`,域名须配置 downloadFile 合法域名;失败时用昵称首字母占位。
|
||||
|
||||
---
|
||||
|
||||
## 11. 何时使用本 Skill
|
||||
|
||||
- 在 **miniprogram/** 下新增或修改页面、组件、utils 时。
|
||||
- 在小程序内新增或修改任何网络请求路径时(必须保持 `/api/miniprogram/...`)。
|
||||
- 做阅读、支付、推荐、提现等与 soul-api 对接的功能时。
|
||||
- 做登录、手机号、推荐码等涉及用户信息的授权时(遵循 §8 隐私按需授权)。
|
||||
- 做表单、input/textarea 样式时(遵循 §6,用 view 包裹,padding 写在 view 上)。
|
||||
- 做个人中心、设置页布局时(遵循 §7,卡片区边距 16rpx)。
|
||||
- 做阅读、文章等需长按复制的文本时(遵循 §9,text 加 user-select)。
|
||||
- 做编辑资料页分享名片时(遵循 §10)。
|
||||
|
||||
遵循本 Skill 可保证小程序只与 soul-api 的 miniprogram 路由组对接,避免与管理端或 next-project 接口混用。
|
||||
|
||||
284
.cursor/skills/new-version-analyze/SKILL.md
Normal file
284
.cursor/skills/new-version-analyze/SKILL.md
Normal file
@@ -0,0 +1,284 @@
|
||||
---
|
||||
description: 新版快速分析 Skill。甲方/第三方 AI 写的新版本,逻辑不完善、接口不规范、存在逻辑冲突时使用。快速分析、体验评估、逻辑补齐、抽取需求在稳定版迭代。Use when 新版分析、版本对比、迁移分析、甲方代码分析、快速分析新版、new-soul 分析.
|
||||
---
|
||||
# SKILL - 新版快速分析(甲方代码迁移)
|
||||
|
||||
> 针对「甲方/第三方用 AI 写的新版本,逻辑不完善、接口不规范、存在逻辑冲突」的场景,快速分析、抽取需求、在稳定版迭代。
|
||||
|
||||
---
|
||||
|
||||
## 1. 何时使用本 Skill
|
||||
|
||||
| 触发词 | 场景 |
|
||||
|--------|------|
|
||||
| **新版分析**、**版本对比**、**迁移分析** | 需要系统对比 new-soul 与稳定版 |
|
||||
| **甲方代码分析**、**快速分析新版** | 对方改了代码,逻辑不完善、接口不规范 |
|
||||
| **@new-soul 分析**、**抽取需求** | 从新版抽取需求,在稳定版更新迭代 |
|
||||
|
||||
**典型困境**:
|
||||
- 对方有改接口,但不符合规范(路由、响应格式、鉴权)
|
||||
- 存在逻辑冲突(如余额消费不写 orders、分润规则不统一)
|
||||
- 纯界面需求变更,底层逻辑未考虑
|
||||
- **稳定版也有新增功能,甲方版本并未更新** → 功能对齐与取舍需明确
|
||||
- 需要在短时间内补齐完整逻辑
|
||||
|
||||
---
|
||||
|
||||
## 2. 核心原则
|
||||
|
||||
| 原则 | 说明 |
|
||||
|------|------|
|
||||
| **稳定版为基准** | 稳定版是生产环境,逻辑已验证;新版只做增量补齐 |
|
||||
| **接口不以新版为准** | 新版接口编写必然很多没考虑(路由、鉴权、事务、分润、幂等)。**接口设计必须以稳定版规范为准**,按 api-dev SKILL 重新设计,不照搬新版实现 |
|
||||
| **界面当需求,逻辑自己写** | 对方界面/交互可参考,业务逻辑按规范重写 |
|
||||
| **先分析再实现** | 先出清单、方案、冲突表,再写代码 |
|
||||
| **规范优先** | 接口不符合规范的一律按 api-dev/miniprogram-dev 修正 |
|
||||
| **最小功能迁移** | 按最小功能单元迁移,**每个功能迁移后都能完整运行**;界面修改可先迁,大逻辑排后 |
|
||||
|
||||
**接口处理方式**:新版接口仅作「能力参考」(知道要什么),实现时在稳定版 soul-api 中**按规范从零设计**,不直接复用新版代码。
|
||||
|
||||
---
|
||||
|
||||
## 2.5 保护区域(迁移时禁止动或慎动)
|
||||
|
||||
**以下模块是稳定版核心逻辑,新需求迁移时务必谨慎,不得影响:**
|
||||
|
||||
| 保护区域 | 说明 | 处理方式 |
|
||||
|----------|------|----------|
|
||||
| **文章详情 @/# 标签** | @某人、#链接标签、contentParser、onMentionTap、onLinkTagTap、存客宝对接 | **禁止动**。迁移时不得修改 read 页的 @/# 解析与点击逻辑 |
|
||||
| **分销** | 推荐码绑定、分润计算、referral 相关接口与订单关联 | **禁止动**。新增功能(如余额消费)若涉及购买,必须与分销逻辑兼容,不得覆盖或冲突 |
|
||||
| **支付** | 微信支付、pay 接口、PayNotify 回调、订单创建与状态 | **禁止动**。余额支付等新增支付方式需在现有支付流程上**扩展**,不得替换或破坏原有逻辑 |
|
||||
|
||||
**迁移前检查**:若新版改动涉及 read 页正文、contentParser、ckb/lead、referral、pay、orders,必须**逐行对比**,确认不覆盖保护区域。有冲突时以稳定版为准。
|
||||
|
||||
---
|
||||
|
||||
## 2.6 迁移前必做:需求评审
|
||||
|
||||
**迁移前必须先做需求评审,评审通过后再开始迁移。**
|
||||
|
||||
| 步骤 | 动作 | 产出 |
|
||||
|------|------|------|
|
||||
| 1 | 需求评审 | 召集评审,明确迁移范围与优先级 |
|
||||
| 2 | 列出功能点 | 逐项列出:新增功能、修改功能、移除功能 |
|
||||
| 3 | 列出样式变更 | 逐项列出:布局、配色、文案、交互变化 |
|
||||
| 4 | 逐一确认 | 每个功能点、每项样式变更经确认后再迁 |
|
||||
| 5 | 开始迁移 | 评审通过后,按确认清单逐项迁移 |
|
||||
|
||||
**产出文档**:`开发文档/新版迁移-需求评审清单.md`(功能点 + 样式变更表,含确认状态)
|
||||
|
||||
---
|
||||
|
||||
## 2.7 迁移顺序(最小功能 + 可运行优先)
|
||||
|
||||
| 顺序 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| **先迁** | 界面修改 | 纯 WXML/WXSS/布局、文案、样式,不涉及新接口或新逻辑 → 可直接迁移 |
|
||||
| **后迁** | 大逻辑 | 涉及新接口、DB、事务、支付、分润等 → 排后,逐个迁移 |
|
||||
|
||||
**原则**:
|
||||
- 按**最小功能**拆:一个功能 = 一个可独立运行、可验证的单元
|
||||
- 每次迁移后**必须能完整运行**:迁完即测,不积压半成品
|
||||
- 界面优先:先迁界面类,快速见效;大逻辑逐个排期,降低风险
|
||||
|
||||
---
|
||||
|
||||
## 3. 功能对齐与取舍(必做)
|
||||
|
||||
**背景**:稳定版有新增功能,甲方版本未同步;甲方版本也有新功能。需先做**双向对齐**,再决定取舍。
|
||||
|
||||
### 3.0 功能三向分类
|
||||
|
||||
| 分类 | 说明 | 取舍原则 |
|
||||
|------|------|----------|
|
||||
| **仅稳定版有** | 你已开发,甲方未更新 | **保留**,不因迁移而删除 |
|
||||
| **仅新版有** | 甲方新增,稳定版无 | 按需求评估:有价值则迁(界面当需求,逻辑重写);无价值则弃 |
|
||||
| **两者共有** | 同一功能,实现不同 | **以稳定版为准**;若新版交互更好,可只迁界面/交互,逻辑仍用稳定版 |
|
||||
|
||||
### 3.0.1 取舍决策表(产出)
|
||||
|
||||
| 功能 | 分类 | 取舍 | 理由 |
|
||||
|------|------|------|------|
|
||||
| 链接人与事 | 仅稳定版有 | 保留 | 已上线,甲方无 |
|
||||
| 钱包/余额 | 仅新版有 | 迁移 | 有业务价值,按规范重写 |
|
||||
| 首页精选展开 | 两者共有 | 迁界面、逻辑用稳定版 | 新版交互可参考,数据源用 book/recommended 或 hot |
|
||||
|
||||
**产出**:在功能差异清单中增加「分类」「取舍」「理由」三列。
|
||||
|
||||
---
|
||||
|
||||
## 4. 分析流程(五步)
|
||||
|
||||
### 4.1 第一步:快速摸底(1~2 小时)
|
||||
|
||||
**动作**:**双向对比** new-soul 与稳定版,建立差异清单(含功能三向分类)
|
||||
|
||||
| 对比维度 | 产出 |
|
||||
|----------|------|
|
||||
| **页面** | 新增/移除/改版页面列表 |
|
||||
| **接口** | 新增/修改/删除的 API 列表 |
|
||||
| **字段** | 请求/响应/DB 字段差异 |
|
||||
| **功能分类** | 仅稳定版有 / 仅新版有 / 两者共有 |
|
||||
| **标注** | 每个变更:✅ 可用 / ⚠️ 不完整 / ❌ 逻辑错误 |
|
||||
|
||||
**产出文档**:`开发文档/新版迁移-功能差异清单.md`(可复用已有迁移文档补充)
|
||||
|
||||
---
|
||||
|
||||
### 4.2 第二步:逻辑分层检查
|
||||
|
||||
对每个功能按三层过一遍,避免漏改:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────┐
|
||||
│ 界面层:WXML/WXSS/JS、事件、数据绑定 │ ← 对方常只改这里
|
||||
├─────────────────────────────────────┤
|
||||
│ 接口层:调哪个 API、入参、返回、错误 │ ← 易漏:参数、鉴权、响应格式
|
||||
├─────────────────────────────────────┤
|
||||
│ 数据层:DB 表、字段、事务、幂等 │ ← 易漏:orders、分润、状态机
|
||||
└─────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**检查项**:
|
||||
- 界面改了,接口是否已提供且规范?
|
||||
- 接口改了,DB/事务是否已同步?
|
||||
- 是否有逻辑冲突(如 consume 不写 orders)?
|
||||
|
||||
---
|
||||
|
||||
### 4.3 第三步:体验评估
|
||||
|
||||
| 维度 | 检查点 |
|
||||
|------|--------|
|
||||
| **交互** | 加载态、空态、错误态是否完整 |
|
||||
| **反馈** | 操作成功/失败是否有提示 |
|
||||
| **边界** | 未登录、余额不足、网络失败等处理 |
|
||||
| **一致性** | 与稳定版其他页面的风格、文案是否统一 |
|
||||
|
||||
**产出**:在差异清单中增加「体验评估」列
|
||||
|
||||
---
|
||||
|
||||
### 4.4 第四步:接口规范与冲突清单
|
||||
|
||||
**默认立场**:新版接口**不照搬**。从新版只提取「需要什么能力」,在稳定版按 api-dev 规范**重新设计**。
|
||||
|
||||
**接口规范检查**(以 api-dev SKILL 为准):
|
||||
|
||||
| 维度 | 稳定版约定 | 检查 |
|
||||
|------|------------|------|
|
||||
| 路由分组 | miniprogram / admin / db | 小程序是否只调 miniprogram |
|
||||
| 响应格式 | `{ success, data, message }` | 是否统一 |
|
||||
| 鉴权 | Bearer token、openId | 是否按约定 |
|
||||
| 命名 | REST、资源名 | 是否统一 |
|
||||
|
||||
**逻辑冲突识别**:
|
||||
|
||||
| 冲突类型 | 示例 | 处理原则 |
|
||||
|----------|------|----------|
|
||||
| 数据不一致 | 余额扣了不写 orders | 同一事务内补齐 |
|
||||
| 规则不统一 | 微信支付有分润、余额消费没有 | 统一规则 |
|
||||
| 字段语义冲突 | 同一字段不同含义 | 定死语义,全项目统一 |
|
||||
| 幂等缺失 | 回调重复执行 | 加幂等(订单号去重) |
|
||||
|
||||
**产出文档**:`开发文档/新版迁移-接口规范与冲突清单.md`
|
||||
|
||||
---
|
||||
|
||||
### 4.5 第五步:抽取需求,排期迭代
|
||||
|
||||
**动作**:
|
||||
1. 从差异清单中抽取「可迁移需求」
|
||||
2. 排除:技术债、规则不清、与稳定版冲突的部分
|
||||
3. 按**最小功能**拆分,保证每个任务迁移后能完整运行
|
||||
4. 排期顺序:**界面修改优先** → 大逻辑排后;P0(逻辑不通)→ P1(功能缺失)→ P2(优化)
|
||||
5. 写入需求汇总,形成迁移任务清单
|
||||
|
||||
**产出**:
|
||||
- `开发文档/1、需求/需求汇总.md` 追加需求
|
||||
- `开发文档/新版迁移-开发方案与清单.md` 或等价迁移清单
|
||||
|
||||
---
|
||||
|
||||
## 5. 产出物模板
|
||||
|
||||
### 5.1 功能差异清单(表格)
|
||||
|
||||
| 功能 | 分类 | 取舍 | 页面 | 接口 | 数据 | 甲方实现 | 体验 | 迁移动作 |
|
||||
|------|------|------|------|------|------|----------|------|----------|
|
||||
| 链接人与事 | 仅稳定版有 | 保留 | - | - | - | - | - | 不删 |
|
||||
| 钱包 | 仅新版有 | 迁移 | wallet | balance/* | user_balance | ⚠️ 不完整 | 待补空态 | 迁界面+补 consume 写 orders |
|
||||
|
||||
### 5.2 接口规范与冲突清单(表格)
|
||||
|
||||
| 接口 | 甲方实现 | 规范要求 | 冲突说明 | 处理 |
|
||||
|------|----------|----------|----------|------|
|
||||
| POST balance/consume | 只扣余额 | 扣余额+写 orders | check-purchased 判未购买 | 重写 consume |
|
||||
|
||||
### 5.3 需求评审清单(迁移前必产出)
|
||||
|
||||
| 类型 | 项 | 说明 | 确认 |
|
||||
|------|-----|------|------|
|
||||
| 功能点 | 钱包页 | 新增余额、充值、交易记录 | ☐ |
|
||||
| 功能点 | 我的页余额入口 | 第 4 项统计,点击进 wallet | ☐ |
|
||||
| 样式变更 | 首页精选展开 | 默认 3 条,可展开更多 | ☐ |
|
||||
| 样式变更 | Banner 按钮文案 | 「开始阅读」→「点击阅读」 | ☐ |
|
||||
|
||||
**确认**:每个项经评审确认后再迁;未确认不迁。
|
||||
|
||||
### 5.4 功能闭环 Checklist(每功能必过)
|
||||
|
||||
```
|
||||
□ 界面:页面、交互、数据绑定
|
||||
□ 接口:API 存在、参数正确、响应格式规范
|
||||
□ 数据:DB/事务/幂等
|
||||
□ 边界:未登录、余额不足、网络失败
|
||||
□ 三端:小程序+后端+管理端(如需)是否都改到
|
||||
□ 保护区域:未动 @/#、分销、支付 核心逻辑;若涉及则在原逻辑上扩展
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 与其它 Skill 的衔接
|
||||
|
||||
| 阶段 | 衔接 Skill |
|
||||
|------|------------|
|
||||
| 分析完成,开始实现 | **change-checklist**:变更完成必过三端关联检查 |
|
||||
| 实现完成,经验沉淀 | **assistant-doc-sync**:吸收经验、同步需求文档 |
|
||||
| 新增需求需三端规划 | **product-manager**:加个需求 → 三端分析 → 指派 |
|
||||
| 跨端功能开发 | **role-flow-control**:后端先行 → 小程序 → 管理端 |
|
||||
| 需求评审 | **team-meeting**:开会、需求评审 → 各角色发言 → 形成决议 |
|
||||
|
||||
---
|
||||
|
||||
## 7. 执行顺序(单次分析)
|
||||
|
||||
1. **Read 本 Skill** 完整内容
|
||||
2. **功能对齐与取舍**:先做三向分类(仅稳定版有/仅新版有/两者共有),产出取舍决策表
|
||||
3. **快速摸底**:双向对比 new-soul 与稳定版,产出/更新功能差异清单(含分类、取舍列)
|
||||
4. **逻辑分层**:每个功能过三层(界面/接口/数据)
|
||||
5. **体验评估**:补充空态、错误态、边界处理
|
||||
6. **接口规范与冲突**:产出接口规范与冲突清单
|
||||
7. **抽取需求**:写入需求汇总,形成迁移任务清单
|
||||
8. **需求评审(迁移前必做)**:列出功能点 + 样式变更,逐一确认,产出评审清单
|
||||
9. **回复用户**:给出分析摘要 + 文档路径 + 建议执行顺序;**迁移须在需求评审通过后开始**
|
||||
|
||||
---
|
||||
|
||||
## 8. 文档写入位置
|
||||
|
||||
| 文档 | 路径 |
|
||||
|------|------|
|
||||
| 功能差异清单 | `开发文档/新版迁移-功能差异清单.md` |
|
||||
| 接口规范与冲突 | `开发文档/新版迁移-接口规范与冲突清单.md` |
|
||||
| 迁移方案/清单 | `开发文档/新版迁移-开发方案与清单.md` 或 `新版功能迁移到稳定版方案.md` |
|
||||
| **需求评审清单** | `开发文档/新版迁移-需求评审清单.md`(功能点 + 样式变更,含确认状态) |
|
||||
| 需求汇总 | `开发文档/1、需求/需求汇总.md` |
|
||||
|
||||
若已有同名文档,在其基础上**追加或更新**,不重复创建。
|
||||
|
||||
---
|
||||
|
||||
## 9. 一句话总结
|
||||
|
||||
**迁移前必做需求评审**:列出功能点 + 样式变更,逐一确认后再迁。先做功能对齐与取舍,评审通过后按最小功能迁移;界面修改先迁、大逻辑排后;@/#、分销、支付为保护区域;用五步分析产出差异清单、接口冲突表、评审清单,再按 checklist 逐功能闭环。
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: soul-product-manager
|
||||
description: Soul 创业派对产品经理需求与验收。需求分析、需求文档、验收标准、与开发对接。Use when 需求分析, 需求文档, 验收, 产品经理.
|
||||
description: Soul 创业派对产品经理需求与验收。需求分析、需求文档、验收标准、与开发对接。Use when 需求分析, 需求文档, 验收, 产品经理, 加个需求.
|
||||
---
|
||||
|
||||
# Soul 创业派对 - 产品经理 Skill
|
||||
@@ -9,6 +9,65 @@ description: Soul 创业派对产品经理需求与验收。需求分析、需
|
||||
|
||||
---
|
||||
|
||||
## 0. 加个需求流水线(优先执行)
|
||||
|
||||
当用户说**「加个需求:xxxxxxx」**(具体内容)时,产品经理**必须**执行以下流程,确保三端功能闭环。
|
||||
|
||||
### 0.1 触发与解析
|
||||
|
||||
- **触发词**:`加个需求`、`加个需求:xxx`(理解意图即可)
|
||||
- **解析**:提取用户描述的具体功能或变更点
|
||||
|
||||
### 0.2 三端分析(功能闭环)
|
||||
|
||||
对每个需求,**必须**分析三端各自需要哪些调整:
|
||||
|
||||
| 端 | 分析要点 | 典型产出 |
|
||||
|----|----------|----------|
|
||||
| **小程序** | 新增/改版页面、交互、调用的 miniprogram 接口 | 页面路径、功能要点、接口依赖 |
|
||||
| **管理端** | 是否**确有**管理能力需求? | 新增列表/表单、配置项、审核、统计、开关(无则写「无」) |
|
||||
| **后端** | 接口、数据模型、路由分组 | miniprogram/admin/db 接口契约、表/字段变更 |
|
||||
|
||||
**判断原则**:
|
||||
|
||||
- 新增功能 → 常伴随:管理端**配置项**(开关、文案、规则)、**列表/审核**(若涉及用户提交)、**统计**(若涉及数据展示)
|
||||
- 若仅小程序展示 → 可能只需 miniprogram 接口,管理端无变更
|
||||
- 若涉及业务规则/开关 → 管理端「系统设置」或独立配置页;后端 config 或专用表
|
||||
|
||||
**合理性约束(必守)**:
|
||||
|
||||
- **按实际情况判断**,不因需求表述而过度设计。例如:单纯改文案、改按钮文字、改提示语 → **不需要**新增管理列表、文案管理、配置项;直接改前端代码即可。
|
||||
- 管理端/后端调整**仅在确有管理或数据需求时**才规划:需要运营配置、需要审核、需要统计、需要多端复用同一文案等。
|
||||
- 不确定时,优先给出**最小可行方案**,避免为小改动堆砌管理能力。
|
||||
|
||||
### 0.3 功能规划与协调变更
|
||||
|
||||
1. **输出需求分析**:写入 `临时需求池/YYYY-MM-DD-需求简述.md` 或追加到 `需求汇总.md` 需求清单
|
||||
2. **三端任务拆分**:按上表列出「小程序任务」「管理端任务」「后端任务」
|
||||
3. **协调变更**:若需更新《以界面定需求》,同步更新界面清单与业务逻辑
|
||||
4. **指派**:明确各任务对应角色(小程序开发工程师、管理端开发工程师、后端工程师),并给出执行顺序建议(通常:后端 → 小程序;管理端视依赖可并行或后置)
|
||||
|
||||
### 0.4 产出模板
|
||||
|
||||
```
|
||||
【需求】用户描述
|
||||
【三端分析】
|
||||
- 小程序:xxx
|
||||
- 管理端:xxx(若无则写「无」)
|
||||
- 后端:xxx
|
||||
【任务指派】
|
||||
1. 后端:xxx
|
||||
2. 小程序:xxx
|
||||
3. 管理端:xxx(若需要)
|
||||
【文档更新】以界面定需求 / 需求汇总 / 临时需求池
|
||||
```
|
||||
|
||||
### 0.5 与 role-flow-control 的配合
|
||||
|
||||
本流水线与 `SKILL-role-flow-control` 协同:产品经理完成三端分析与指派后,开发执行时按 role-flow-control 的协同流程(需求分析 → 并行开发 → 管理端启动 → 联调)推进。
|
||||
|
||||
---
|
||||
|
||||
## 1. 职责范围
|
||||
|
||||
| 职责 | 说明 | 产出 |
|
||||
@@ -62,10 +121,11 @@ description: Soul 创业派对产品经理需求与验收。需求分析、需
|
||||
|
||||
## 6. 何时选用
|
||||
|
||||
- 用户说**「加个需求:xxx」**时:执行 §0 加个需求流水线(三端分析 → 功能规划 → 指派)
|
||||
- 编辑 `开发文档/1、需求/`、`临时需求池/`、`开发文档/10、项目管理/` 时
|
||||
- 进行需求分析、需求文档编写、验收标准定义时
|
||||
- 用户说「需求分析」「产品经理」「验收」时
|
||||
|
||||
---
|
||||
|
||||
**更新日期**:2026-02
|
||||
**更新日期**:2026-03
|
||||
|
||||
@@ -1,225 +1,88 @@
|
||||
---
|
||||
name: soul-tester
|
||||
description: Soul 创业派对测试人员。全站深度测试、功能测试、回归测试、三端联调验证、安全审计。Use when 测试, 测试用例, 回归测试, 功能测试, QA, 全站测试, 深度测试.
|
||||
version: "2.0"
|
||||
updated: "2026-03-15"
|
||||
description: Soul 创业派对测试人员。功能测试、回归测试、三端(小程序、管理端、API)联调验证。Use when 测试, 测试用例, 回归测试, 功能测试, QA.
|
||||
---
|
||||
|
||||
# Soul 创业派对 - 测试 Skill v2.0
|
||||
# Soul 创业派对 - 测试人员 Skill
|
||||
|
||||
> **定位**:Soul 创业派对项目的专业测试规范。基于 2026-03-15 全站深度测试经验沉淀,覆盖管理端、小程序、API、数据库四个维度。
|
||||
>
|
||||
> **核心原则**:逐页逐按钮逐功能,三端隔离验证,数据交叉校验,安全必查。
|
||||
当你在**功能测试、回归测试、三端联调验证**时,使用本 Skill。测试人员负责小程序、管理端、API 的功能与集成测试,不参与源码编写。
|
||||
|
||||
---
|
||||
|
||||
## 1. 测试范围
|
||||
## 1. 职责范围
|
||||
|
||||
| 端 | 目录 | API 路径 | 数据表 |
|
||||
|----|------|----------|--------|
|
||||
| 管理端 | soul-admin/ | /api/admin/*, /api/db/* | 25 张表 |
|
||||
| 小程序 | miniprogram/ | /api/miniprogram/* | 同上 |
|
||||
| API 后端 | soul-api/ | 全部 | 同上 |
|
||||
| 数据库 | MySQL | — | users, chapters, orders 等 25 张 |
|
||||
| 职责 | 说明 | 产出 |
|
||||
|------|------|------|
|
||||
| 功能测试 | 按需求验证功能正确性 | 测试用例、通过/失败记录 |
|
||||
| 回归测试 | 变更后验证原有功能未破坏 | 回归清单、测试报告 |
|
||||
| 三端联调 | 小程序↔API、管理端↔API 数据流验证 | 联调记录 |
|
||||
| Bug 反馈 | 复现步骤、环境、期望 vs 实际 | Bug 列表、复现说明 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 测试执行检查清单(每次必做)
|
||||
## 2. 测试范围
|
||||
|
||||
### 2.1 环境检查(Step 0)
|
||||
- [ ] 后端 API 运行(`curl localhost:8080/health`)
|
||||
- [ ] 管理端前端运行(`curl localhost:5174`)
|
||||
- [ ] 数据库连接正常(通过 /api/book/stats 间接验证)
|
||||
- [ ] OSS 配置状态(/api/admin/settings → ossConfig 有值)
|
||||
|
||||
### 2.2 管理端页面检查(24 个页面/子Tab)
|
||||
|
||||
**登录**
|
||||
- [ ] 登录页 UI 完整(表单、按钮、品牌标识)
|
||||
- [ ] 错误凭据有明确错误提示
|
||||
- [ ] 正确凭据登录成功跳转
|
||||
- [ ] **路由守卫**:未登录直接访问 /dashboard 应跳转 /login
|
||||
|
||||
**仪表盘**
|
||||
- [ ] 4 个统计卡片数据正确(用户数、收入、订单数、转化率)
|
||||
- [ ] 最近订单列表有数据
|
||||
- [ ] 新注册用户列表**用户名不应显示为"-"**
|
||||
- [ ] 分类标签点击统计有数据或合理空状态提示
|
||||
|
||||
**内容管理**(5 个 Tab)
|
||||
- [ ] 章节管理:树结构完整,篇/章/节层级
|
||||
- [ ] 内容排行榜:排名、浏览量、付费数、热度完整
|
||||
- [ ] 内容搜索:搜索框可用
|
||||
- [ ] 链接人与事:AI 列表展示
|
||||
- [ ] 链接标签:标签 CRUD
|
||||
|
||||
**用户管理**(2 个 Tab)
|
||||
- [ ] 用户列表:昵称、手机号、付费状态、分销、分页
|
||||
- [ ] 用户旅程:8 阶段漏斗数据
|
||||
|
||||
**找伙伴**(5 个 Tab)
|
||||
- [ ] 数据统计:匹配次数、用户数、AI 获客
|
||||
- [ ] 匹配记录:列表展示
|
||||
- [ ] 匹配池设置:来源池、基础设置
|
||||
- [ ] 导师管理:导师列表和价格
|
||||
- [ ] 团队招募:招募记录
|
||||
|
||||
**推广中心**(5 个 Tab)
|
||||
- [ ] 数据概览:今日/本月/累计统计
|
||||
- [ ] 订单管理:订单列表、搜索、分页
|
||||
- [ ] 绑定管理:绑定关系列表
|
||||
- [ ] 提现审核:提现记录和审核功能
|
||||
- [ ] 推广设置:收益率、提现规则
|
||||
|
||||
**系统设置**(4 个 Tab)
|
||||
- [ ] 系统设置:功能开关、价格、OSS、小程序配置
|
||||
- [ ] 作者详情:基本信息、统计、亮点
|
||||
- [ ] 管理员:管理员列表
|
||||
- [ ] API 文档:接口文档完整
|
||||
|
||||
### 2.3 API 端点检查(35+ 端点)
|
||||
|
||||
**公开 API(无需 Token)**
|
||||
- [ ] GET /health → 200
|
||||
- [ ] GET /api/config → 200,配置完整
|
||||
- [ ] GET /api/book/all-chapters → 200,章节数与 DB 一致
|
||||
- [ ] GET /api/book/hot → 200,热度排行有数据
|
||||
- [ ] GET /api/book/recommended → 200
|
||||
- [ ] GET /api/book/search?q=创业 → 200,有结果(注意返回字段是 `results` 不是 `data`)
|
||||
- [ ] GET /api/book/search?q= → 200,空结果
|
||||
- [ ] GET /api/book/stats → 200,交叉验证章节数
|
||||
|
||||
**小程序 API(无需 Token)**
|
||||
- [ ] GET /api/miniprogram/config → 200
|
||||
- [ ] GET /api/miniprogram/book/hot → 200
|
||||
- [ ] GET /api/miniprogram/book/stats → 200
|
||||
- [ ] GET /api/miniprogram/mentors → 200
|
||||
- [ ] GET /api/miniprogram/vip/members → 200
|
||||
|
||||
**管理端 API(需 Token)**
|
||||
- [ ] POST /api/admin → 登录获取 token
|
||||
- [ ] GET /api/admin/dashboard/stats → 200
|
||||
- [ ] GET /api/admin/chapters → 200
|
||||
- [ ] GET /api/admin/users → 200
|
||||
- [ ] GET /api/admin/orders → 200(注意返回字段 `orders` 不是 `data`)
|
||||
- [ ] GET /api/admin/track/stats → 200
|
||||
- [ ] GET /api/admin/settings → 200(**检查 OSS 密钥是否脱敏**)
|
||||
- [ ] GET /api/admin/referral-settings → 200
|
||||
- [ ] GET /api/admin/author-settings → 200
|
||||
|
||||
**DB API(需 Token)**
|
||||
- [ ] GET /api/db/book?action=list → 200
|
||||
- [ ] GET /api/db/ckb-leads → 200
|
||||
- [ ] GET /api/db/ckb-plan-stats → 200
|
||||
- [ ] GET /api/db/vip-roles → 200
|
||||
- [ ] GET /api/db/mentors → 200
|
||||
- [ ] GET /api/db/persons → 200
|
||||
|
||||
**安全测试**
|
||||
- [ ] 无 Token → /api/admin/settings → 401
|
||||
- [ ] 错误 Token → /api/admin/settings → 401
|
||||
- [ ] POST /api/admin 空 body → 错误提示
|
||||
- [ ] POST /api/upload 非图片 → 拒绝
|
||||
|
||||
### 2.4 数据库检查
|
||||
|
||||
- [ ] 25 张表结构完整(AutoMigrate 无报错)
|
||||
- [ ] 关键数据量核对:chapters/users/orders 与 API 一致
|
||||
- [ ] 无重复订单号
|
||||
- [ ] stats vs all-chapters 章节数交叉验证
|
||||
- [ ] orders vs dashboard 收入交叉验证
|
||||
|
||||
### 2.5 小程序代码审查(25 个页面)
|
||||
|
||||
- [ ] 所有页面 API 路径遵循 `/api/miniprogram/*`(不混调 admin/db)
|
||||
- [ ] 无废弃 API 使用(wx.getUserProfile / wx.createCanvasContext)
|
||||
- [ ] 模块导入方式统一(不混用 import/require 和 export default/module.exports)
|
||||
- [ ] 无未使用工具文件(检查 utils/ 下每个文件是否被引用)
|
||||
- [ ] 无硬编码(baseUrl/appId/mchId/微信号/日期)
|
||||
- [ ] 无 mock/test/debug 代码残留
|
||||
- [ ] 无过多 console.log 调试日志
|
||||
- [ ] 核心流程完整:登录→阅读→购买→VIP→分销→提现→匹配
|
||||
| 端 | 目录 | API 路径 | 重点 |
|
||||
|----|------|----------|------|
|
||||
| 小程序 | miniprogram/ | /api/miniprogram/* | 登录、支付、推荐码、VIP、阅读、分享 |
|
||||
| 管理端 | soul-admin/ | /api/admin/*、/api/db/* | 内容管理、用户、订单、提现、VIP 角色、推广设置 |
|
||||
| API 后端 | soul-api/ | 全部 | 接口契约、鉴权、分润、支付回调 |
|
||||
|
||||
---
|
||||
|
||||
## 3. 安全必查项(每次必做)
|
||||
## 3. 测试原则
|
||||
|
||||
| 检查项 | 方法 | 标准 |
|
||||
|--------|------|------|
|
||||
| OSS 密钥脱敏 | GET /api/admin/settings 查 ossConfig | accessKeySecret 不应返回明文 |
|
||||
| 管理端登录守卫 | 直接访问 /dashboard | 应跳转 /login |
|
||||
| Token 有效性 | 过期/错误 Token 访问管理 API | 返回 401 |
|
||||
| 上传文件类型限制 | POST /api/upload 上传 .txt | 应拒绝 |
|
||||
| 支付参数来源 | 审查小程序支付代码 | 参数必须从后端获取 |
|
||||
| 小程序敏感信息 | 审查 app.js | appId/mchId 不应硬编码 |
|
||||
- **路径隔离**:小程序只调 miniprogram;管理端只调 admin/db;不得混用。
|
||||
- **鉴权**:需登录接口需带 token;401 时正确跳转登录。
|
||||
- **数据流**:下单→支付→回调→分润;推荐码绑定→访问记录;VIP 资料保存→排行展示。
|
||||
- **变更检查**:开发完成变更后,可参考 soul-change-checklist 做关联检查,避免遗漏。
|
||||
|
||||
---
|
||||
|
||||
## 4. 经验库(持续沉淀)
|
||||
## 4. 常用测试场景
|
||||
|
||||
### 4.1 API 响应字段陷阱
|
||||
| 场景 | 验证点 |
|
||||
|------|--------|
|
||||
| 小程序登录 | 微信登录、手机号、token 持久化 |
|
||||
| 购买与支付 | 下单、微信支付、回调更新、购买状态 |
|
||||
| 推荐与分润 | 扫码/分享带 ref、绑定、分润计算 |
|
||||
| VIP 功能 | 开通、资料填写、头像上传、保存、排行展示 |
|
||||
| 管理端 CRUD | 列表、搜索、分页、新增、编辑、删除 |
|
||||
| 提现 | 申请、审核、状态流转、到账确认 |
|
||||
|
||||
不同端点返回字段名不一致,测试脚本解析前先确认结构:
|
||||
---
|
||||
|
||||
| 端点 | 数据字段 | 总数字段 |
|
||||
|------|----------|----------|
|
||||
| /api/book/search | `results` | `total` |
|
||||
| /api/admin/orders | `orders` | `total` |
|
||||
| /api/admin/users | `records` | `total` |
|
||||
| /api/admin/settings | 直接在根层 | — |
|
||||
| /api/book/hot | `data` | — |
|
||||
| /api/book/stats | `data` | — |
|
||||
## 5. 测试用例存放位置
|
||||
|
||||
### 4.2 OSS 上传测试四步法
|
||||
|
||||
1. **配置验证**:GET /api/admin/settings → ossConfig 有值
|
||||
2. **上传测试**:POST /api/upload -F file=@test.png → 返回 storage=oss
|
||||
3. **URL 可访问**:curl 返回的 URL → HTTP 200
|
||||
4. **ACL 策略**:阿里云新账号默认禁止公共访问,需用签名 URL
|
||||
|
||||
### 4.3 小程序代码审查 grep 命令
|
||||
|
||||
```bash
|
||||
# 废弃 API 检查
|
||||
grep -rn "getUserProfile\|createCanvasContext" miniprogram/
|
||||
|
||||
# 模块语法混用
|
||||
grep -rn "export default" miniprogram/utils/
|
||||
|
||||
# 硬编码检查
|
||||
grep -rn "apiBase\|hardcode\|28533368\|2025-01-01" miniprogram/
|
||||
|
||||
# mock/test 残留
|
||||
grep -rn "mock\|Mock\|测试模式\|test mode" miniprogram/pages/
|
||||
|
||||
# console.log 统计
|
||||
grep -rc "console.log" miniprogram/pages/ | grep -v ":0$"
|
||||
```
|
||||
|
||||
### 4.4 通用经验(2026-03-15 沉淀)
|
||||
|
||||
| 经验 | 详情 |
|
||||
| 目录 | 用途 |
|
||||
|------|------|
|
||||
| 密钥返回前端必须脱敏 | 后端 settings API 返回 ossConfig/apiKey 等时,secret 类字段只返回 `****` |
|
||||
| SPA 管理端必须有路由守卫 | 未登录用户访问任何管理页面必须跳转 /login |
|
||||
| API 失败绝不伪装成功 | catch 中不可设置 success=true,必须真实反馈 |
|
||||
| 上线前清理 mock/test 代码 | `grep -r "mock\|test mode\|测试模式"` |
|
||||
| 上线前清理 console.log | `grep -rc "console.log"` |
|
||||
| 微信 API 每年检查废弃 | wx.getUserProfile(2022)、wx.createCanvasContext(即将) |
|
||||
| 三端路径隔离是底线 | 小程序只调 miniprogram,管理端只调 admin/db |
|
||||
| 聚合统计必须交叉验证 | stats 的数字要与 list API 返回的实际条数对比 |
|
||||
| 分页必须实际翻页验证 | 不只测第一页,要测 page=2 和超出范围的 page |
|
||||
| 签名 URL 有有效期 | OSS 私有 bucket 用签名 URL,注意设置足够长的过期时间 |
|
||||
| `scripts/test/miniapp/` | 小程序接口测试(/api/miniprogram/*) |
|
||||
| `scripts/test/web/` | 管理端测试(/api/admin/*、/api/db/*) |
|
||||
| `scripts/test/process/` | 流程测试(跨端多接口串联) |
|
||||
|
||||
测试工程师在此编写与维护测试用例,按 miniapp / web / process 分类存放。
|
||||
|
||||
**环境配置**:必须明确指定 SOUL_TEST_ENV(local/souldev/soulapi)或 SOUL_API_BASE;配置从 soul-api/.env* 或 .env.test 读取。运行前报告头部会显示「测试环境: xxx」,确认无误后再执行,避免误测正式库。
|
||||
|
||||
**归档规则**:管理端+后端混合 → process/;仅小程序 → miniapp/;仅管理端/后端 → web/。需求变更时更新用例,无变更则复用。
|
||||
|
||||
---
|
||||
|
||||
## 5. 产出与协同
|
||||
## 6. 产出与协同
|
||||
|
||||
| 产出 | 路径 |
|
||||
| 产出 | 说明 |
|
||||
|------|------|
|
||||
| 测试报告 | `开发文档/全站测试报告_YYYYMMDD.md` |
|
||||
| 截图存档 | 浏览器测试自动截图 |
|
||||
| 飞书通知 | 测试完成后发飞书开发群 |
|
||||
| 经验沉淀 | 本文件 §4 + `.cursor/agent/软件测试/evolution/` |
|
||||
| 测试用例 | 场景、步骤、期望结果,存放于 scripts/test/ |
|
||||
| 测试报告 | 通过率、失败用例、环境信息 |
|
||||
| Bug 列表 | 复现步骤、关联端、严重程度 |
|
||||
|
||||
**协同**:发现 Bug 时与对应角色对接(小程序/管理端/后端),验收前完成测试并输出报告。
|
||||
**协同**:发现 Bug 时与对应开发角色(小程序/管理端/后端)对接;验收前完成测试并输出报告。
|
||||
|
||||
---
|
||||
|
||||
## 7. 何时使用本 Skill
|
||||
|
||||
- 编写或执行测试用例时
|
||||
- 做回归测试、功能验证时
|
||||
- 三端联调、接口契约验证时
|
||||
- 说「测试」「测试用例」「回归测试」「功能测试」「QA」时
|
||||
|
||||
Reference in New Issue
Block a user