diff --git a/.cursor/agent/产品经理/evolution/2026-03-16.md b/.cursor/agent/产品经理/evolution/2026-03-16.md
new file mode 100644
index 00000000..19b7585b
--- /dev/null
+++ b/.cursor/agent/产品经理/evolution/2026-03-16.md
@@ -0,0 +1,7 @@
+# 产品经理 经验记录 - 2026-03-16
+
+## new-soul 派对AI 与 Mycontent 定位差异(会议:new-soul 新需求与当前项目差异分析)
+
+- **new-soul 派对AI**:内容运营侧 AI 助手,服务于《一场soul的创业实验》的派对→录屏→剪辑→成片→分发→文章→小程序全链路
+- **当前 Mycontent**:产品侧,面向创业者的社区/工具型小程序,核心是内容→会员→导师变现、存客宝对接、分销等
+- **结论**:两者是同一业务的不同层面(运营 vs 产品),互补非替代
diff --git a/.cursor/agent/产品经理/evolution/2026-03-17.md b/.cursor/agent/产品经理/evolution/2026-03-17.md
new file mode 100644
index 00000000..f7603afe
--- /dev/null
+++ b/.cursor/agent/产品经理/evolution/2026-03-17.md
@@ -0,0 +1,13 @@
+# 产品经理 经验记录 - 2026-03-17
+
+## 稳定版源码质量优化(会议:2026-03-17)
+
+- **验收标准**:优化后现有功能行为不变,三端联调通过
+- **优先级**:高优(安全)→ 中优(可维护)→ 低优(性能/结构)
+- **原则**:源码质量优化按安全→可维护→性能分批,用户无感知
+
+---
+
+## 会议收尾(2026-03-17)
+
+- 10 项优化全部完成;测试流程与报告模板已定稿;开发文档已同步
diff --git a/.cursor/agent/后端工程师/evolution/2026-03-14.md b/.cursor/agent/后端工程师/evolution/2026-03-14.md
new file mode 100644
index 00000000..b8db6779
--- /dev/null
+++ b/.cursor/agent/后端工程师/evolution/2026-03-14.md
@@ -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`)均复用该算法,修正后两端同步生效。
diff --git a/.cursor/agent/后端工程师/evolution/2026-03-16.md b/.cursor/agent/后端工程师/evolution/2026-03-16.md
new file mode 100644
index 00000000..0cbeba71
--- /dev/null
+++ b/.cursor/agent/后端工程师/evolution/2026-03-16.md
@@ -0,0 +1,17 @@
+# 后端工程师 经验记录 - 2026-03-16
+
+## ParseAutoLinkContent 必须输出 data-label
+
+- TipTap Mention 仅从 `data-label` 解析显示名,缺则回退显示 `data-id`(token)
+- 新建 mention 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 接口,统一数据入口
diff --git a/.cursor/agent/后端工程师/evolution/2026-03-17.md b/.cursor/agent/后端工程师/evolution/2026-03-17.md
new file mode 100644
index 00000000..c82615fe
--- /dev/null
+++ b/.cursor/agent/后端工程师/evolution/2026-03-17.md
@@ -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:{业务}:{标识}
diff --git a/.cursor/agent/后端工程师/evolution/索引.md b/.cursor/agent/后端工程师/evolution/索引.md
index 30ba6514..598379a7 100644
--- a/.cursor/agent/后端工程师/evolution/索引.md
+++ b/.cursor/agent/后端工程师/evolution/索引.md
@@ -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) |
diff --git a/.cursor/agent/团队/evolution/2026-03-14.md b/.cursor/agent/团队/evolution/2026-03-14.md
new file mode 100644
index 00000000..346a20cc
--- /dev/null
+++ b/.cursor/agent/团队/evolution/2026-03-14.md
@@ -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()` 刷新列表,否则用户看不到变化。
diff --git a/.cursor/agent/团队/evolution/2026-03-16.md b/.cursor/agent/团队/evolution/2026-03-16.md
new file mode 100644
index 00000000..95ed1a02
--- /dev/null
+++ b/.cursor/agent/团队/evolution/2026-03-16.md
@@ -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)需在文档中说明
diff --git a/.cursor/agent/团队/evolution/2026-03-17.md b/.cursor/agent/团队/evolution/2026-03-17.md
new file mode 100644
index 00000000..6c54aae8
--- /dev/null
+++ b/.cursor/agent/团队/evolution/2026-03-17.md
@@ -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 验证、部署后回归缓存接口
diff --git a/.cursor/agent/团队/evolution/索引.md b/.cursor/agent/团队/evolution/索引.md
index 88f99084..9d0b01f5 100644
--- a/.cursor/agent/团队/evolution/索引.md
+++ b/.cursor/agent/团队/evolution/索引.md
@@ -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) |
diff --git a/.cursor/agent/小程序开发工程师/evolution/2025-03-14-文本长按复制.md b/.cursor/agent/小程序开发工程师/evolution/2025-03-14-文本长按复制.md
new file mode 100644
index 00000000..c58cb917
--- /dev/null
+++ b/.cursor/agent/小程序开发工程师/evolution/2025-03-14-文本长按复制.md
@@ -0,0 +1,40 @@
+# 阅读页文本长按选中复制
+
+> 问题→解决闭环,已升级 miniprogram-dev SKILL
+
+---
+
+## 问题
+
+小程序阅读页正文长按时无法选中、复制文本。
+
+---
+
+## 解决方案
+
+使用 `text` 组件的 **`user-select`** 属性(基础库 2.12.1+,官方推荐;`selectable` 已废弃):
+
+```html
+{{seg.text}}
+```
+
+---
+
+## 实施范围(read.wxml)
+
+- 章节标题:``
+- 正文片段:text / mention / linkTag 均加 `user-select`
+- 预览段落:`{{item}}`(原为 view 内直接 `{{item}}`,需用 text 包裹)
+
+---
+
+## 备选方案
+
+- **selectable**:已废弃但多数环境仍可用,若 `user-select` 导致布局异常(inline-block 换行)可回退
+- **wx.setClipboardData + bindlongpress**:iOS 原生选中失效时,可做长按整段复制兜底
+
+---
+
+## Skill 升级
+
+已写入 miniprogram-dev SKILL §10 文本可选与复制。
diff --git a/.cursor/agent/小程序开发工程师/evolution/2025-03-14-联网吸收小程序最新开发规则与API.md b/.cursor/agent/小程序开发工程师/evolution/2025-03-14-联网吸收小程序最新开发规则与API.md
new file mode 100644
index 00000000..3067584a
--- /dev/null
+++ b/.cursor/agent/小程序开发工程师/evolution/2025-03-14-联网吸收小程序最新开发规则与API.md
@@ -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. **获取同意**:使用 `