更新管理端迁移Mycontent-temp的菜单与布局规范,确保主导航收敛并优化隐藏页面入口。新增相关会议记录与文档,反映团队讨论的最新决策与实施建议。

This commit is contained in:
Alex-larget
2026-03-10 18:06:10 +08:00
parent e23eba5d3e
commit aebb533507
82 changed files with 2376 additions and 1126 deletions

View File

@@ -0,0 +1,13 @@
# 产品经理 经验记录 - 2026-03-10
## 管理端迁移 Mycontent-temp信息架构与验收口径
- **主导航收敛**:侧栏只保留运营主链路 5 项(概览/内容/用户/找伙伴/推广),系统设置固定在底部;其余能力不删除但不占主导航入口。
- **入口承载策略**:非主菜单页面(订单/提现/推广设置/VIP角色/导师等)通过“概览卡片/页面内按钮/系统设置 Tab”进入确保可达且路径更短。
- **验收标准**
- 菜单与布局一致(新规范)
- 隐藏页面路由仍可访问(功能不丢)
- author/admin 设置统一在 `/settings?tab=...` 承载,旧路径可兼容跳转
> 详见会议纪要:`.cursor/meeting/2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md`

View File

@@ -4,3 +4,4 @@
|------|------|------|
| 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) |

View File

@@ -0,0 +1,36 @@
# 后端工程师 经验记录 - 2026-03-10
## 管理端迁移 Mycontent-temp后端视角注意点
- **接口边界不变**:管理端迁移/重构只允许调用 `/api/admin/*``/api/db/*``/api/orders`,严禁引入 `/api/miniprogram/*`
- **概览聚合接口可选**`/api/admin/dashboard/overview` 可作为“优化项”提供更轻量的统计聚合,但必须保留**降级策略**(用 `/api/db/users` + `/api/orders` 拼)以免阻塞前端迁移与部署节奏。
- **鉴权一致性**:页面入口/菜单变化不影响鉴权口径,仍以 `GET /api/admin` 作为 session/token 校验401 统一跳登录并清 token。
> 详见会议纪要:`.cursor/meeting/2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md`
---
## 新增聚合接口 UserDashboardStats
**场景**:小程序「我的」页需要一个聚合接口返回阅读统计,避免多次请求。
**接口**`GET /api/miniprogram/user/dashboard-stats?userId=xxx`
**数据来源**
- `readSectionIds` / `readCount``reading_progress` WHERE `user_id = userId`
- `totalReadMinutes``SUM(duration) / 60`(秒转分,最小值 1 分钟)
- `recentChapters``reading_progress` ORDER BY `last_open_at DESC` JOIN `chapters`(最近 5 条**去重**
- `matchHistory``match_records` COUNT WHERE `user_id = userId`
**三处 bug 修复点**(对比 Mycontent-temp 参考版发现):
| Bug | 错误做法 | 正确做法 |
|-----|---------|---------|
| 最近阅读重复 | 直接取前 5 条(同章节可重复) | `seenRecent` map 去重,保证 5 条不重复 |
| 阅读时长最小值 | 不足 60 秒返回 0 | `if totalReadSeconds > 0 && totalReadMinutes == 0 { totalReadMinutes = 1 }` |
| DB 错误状态码 | 返回 200 + `success:false` | 返回 HTTP 500 `InternalServerError` |
**规则沉淀**:新增聚合接口时,先参考已有版本实现,对比 diff 后修复潜在 bug再提交。
> 详见会议纪要:`.cursor/meeting/2026-03-10_小程序新旧版对比与dashboard接口新增.md`

View File

@@ -4,3 +4,4 @@
|------|------|------|
| 2026-03-05 | soul-api 合并状态确认orders、distribution 接口核对 | [2026-03-05.md](./2026-03-05.md) |
| 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) |

View File

@@ -75,3 +75,44 @@
- 后端 / 运维:需要在本地或服务器上快速拉起 macOS VM 做兼容性验证或演示。
- 团队:对外说明 **“我们不支持 Docker macOS统一用龙虾方案”**。
---
## 管理端迁移 Mycontent-temp菜单/布局新规范基线
### 决议(团队共享)
- **目标态基线**:以 `Mycontent-temp/soul-admin``AdminLayout` + `SettingsPage` 作为“新规范基线”,后续管理端所有菜单/布局调整按该基线执行,避免两套后台并行发散。
- **主导航收敛**:侧栏只保留 5 个主入口(概览/内容/用户/找伙伴/推广),系统设置固定底部,取消“更多”折叠入口。
- **功能不丢但入口收敛**:订单/提现/推广设置/VIP角色/导师等页面保留路由可达,入口通过概览卡片或页面内跳转承载;作者/管理员设置并入 `/settings?tab=author|admin`
### 实施建议
- 迁移时优先保证:**鉴权一致GET /api/admin**、**路由可达性**、**菜单一致性**,再逐步优化概览聚合接口与快捷入口。
---
## 新旧版代码对比方法论Mycontent-temp vs miniprogram
### 场景
存在两个并行代码库(主线 + 预览版),需要判断哪个版本更可靠,以及如何安全地吸收另一版的优点。
### 最佳实践
1. **批量 diff 优先于逐文件比较**:用 PowerShell 批量对比 WXSS/JS/WXML 文件,精确列出「相同/有差异」的文件清单,再聚焦差异文件逐一分析。
2. **以功能完整性为基准**:不以「新/旧」日期判断优劣,而以**功能是否完整**为主要依据本次判断旧版miniprogram才是功能更完整的版本。
3. **差异归类**
- **旧版有、新版没有** → 旧版是主线,保留旧版
- **新版有、旧版没有** → 评估是否需要移植(如 dashboard-stats 调用)
- **样式差异** → 对比具体行数,判断是改进还是遗漏
4. **接口对比时对照新版参考修复 bug**:新版的接口实现即使存在,也可能有遗漏;参考后自行修复(去重、最小值、错误码等)再提交。
### 适用场景
- 分支合并前的功能完整性分析
- 迁移预览版到主线时的取舍决策
- 跨版本 bug 溯源
> 同时影响:小程序开发工程师、后端工程师
> 详见会议纪要:`.cursor/meeting/2026-03-10_小程序新旧版对比与dashboard接口新增.md`

View File

@@ -5,3 +5,4 @@
| 日期 | 摘要 | 文件 |
|------|------|------|
| 2026-03-05 | 分支冲突后各端完整性自查流程 | [2026-03-05.md](./2026-03-05.md) |
| 2026-03-10 | 管理端迁移 Mycontent-temp菜单/布局新规范基线与入口收敛规则 | [2026-03-10.md](./2026-03-10.md) |

View File

@@ -0,0 +1,46 @@
# 小程序开发工程师 经验记录 - 2026-03-10
## 管理端迁移 Mycontent-temp小程序侧关注点
- **菜单/布局迁移不应影响小程序接口**:管理端仅重排入口与页面承载,禁止因此改动小程序端接口路径或混用 `/api/miniprogram/*`
- **内容编辑产物稳定性**:如果管理端迁移导致内容从 Markdown → HTMLTipTap或 mention/tag 的序列化结构变化,小程序阅读页解析必须同步升级并回归兼容。
- **验收建议**:迁移期间抽样验证“新编辑器保存的内容”在小程序阅读页可正常渲染与交互(@ 点击加好友、# 标签等)。
> 详见会议纪要:`.cursor/meeting/2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md`
---
## my.js 阅读统计改为后端接口loadDashboardStats 移植)
**场景**:旧版 `my.js``initUserStatus()` 用本地缓存随机数时间(`Math.floor(Math.random() * 200) + 50`)和标题占位(`章节 ${id}`)展示统计,不准确且不一致。
**解决方案**
1. 移植 Mycontent-temp 中的 `loadDashboardStats()` 方法
2. 调用 `/api/miniprogram/user/dashboard-stats?userId=xxx`
3. 同步 `readSectionIds``app.globalData` 和 Storage
4. 返回真实 `recentChapters`(含标题/mid`readCount``totalReadMinutes``matchHistory`
**initUserStatus 改造要点**
- `readCount` 初始化为 `0`(不再读本地缓存)
- `recentChapters` 初始化为 `[]`
- `totalReadTime` 初始化为 `0`(不再用随机数)
- 新增 `matchHistory: 0` 字段
- 登录状态下额外调用 `this.loadDashboardStats()`
**规则沉淀**`my.js` 阅读统计必须走后端接口,禁止用本地缓存 + 随机数占位展示统计数据。
---
## 富文本渲染现状(技术债,待实施)
**现状**`contentParser.js` 将 TipTap HTML 剥成纯文本,`<strong>`/`<h2>`/`<ul>` 等格式全部丢失,只保留 `@mention` 高亮。
**建议方案**(待实施):
- 有权限的完整内容改用 `<rich-text nodes="{{richNodes}}">` 渲染
- 预处理时将 TipTap mention span 替换为 `<span style="color:#00CED1">@昵称</span>`
- 付费墙预览段落保留纯文本
**验收前置问题**:确认 DB 中文章内容格式(纯文本 vs TipTap HTML是否真的用了格式化标记。
> 详见会议纪要:`.cursor/meeting/2026-03-10_小程序新旧版对比与dashboard接口新增.md`

View File

@@ -6,3 +6,4 @@
| 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) |

View File

@@ -25,7 +25,10 @@
| 2026-02-27 | 小程序、团队 | 最佳实践 | SKILL-小程序开发 §6、SKILL-管理端开发 §4.1 | 输入框 padding 用 view/div 包裹 |
| 2026-02-28 | 小程序、管理端 | 最佳实践 | miniprogram §6、admin §4.1 | input 边距口诀「外边包 view、内部 width 100%」match 弹窗已修正 |
| 2026-03-03 | 小程序 | 最佳实践 | miniprogram §8 | 我的页面卡片区边距 16rpx个人中心类页面布局规范 |
| 2026-03-10 | 团队 | 架构/运维约定 | lobster-macos-vm Skill | Windows 上统一使用 WSL2+QEMU+OneClick 的龙虾方案安装 macOS 虚拟机,禁止 Docker 直跑 macOS |
| 2026-03-10 | 团队 | 架构/运维约定 | lobster-macos-vm Skill | Windows 上统一使用 WSL2+QEMU+OneClick 的"龙虾"方案安装 macOS 虚拟机,禁止 Docker 直跑 macOS |
| 2026-03-10 | 小程序 | 最佳实践 | miniprogram-dev SKILL §my | my.js 阅读统计改为后端接口loadDashboardStats禁止用随机数时间/标题占位 |
| 2026-03-10 | 后端 | bug 修复 | api-dev SKILL | 聚合接口三处修复recentChapters 去重、totalReadMinutes 最小1分钟、DB 错误返回 500 |
| 2026-03-10 | 团队 | 方法论 | - | 新旧版代码对比:以功能完整性为基准,批量 diff + 分类取舍,不以日期判优劣 |
---

View File

@@ -19,9 +19,10 @@ Soul 创业派对产品定位:面向创业者的社区/工具型小程序。
| 2026-02-28 | stitch_soul 需求评审:内容→会员→导师变现路径,待产品补充正式需求文档 | 待续 |
| 2026-03-05 | 分支冲突后功能完整性分析会议:核对需求文档与实现一致性 | 待续 |
| 2026-03-05 | 文章详情@某人加好友方案讨论:验收标准、添加好友接口 path 待确认 | 待续 |
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp新菜单/布局与入口收敛验收口径确定 | 待续 |
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD状态用已完成 / 进行中 / 待续 / 搁置
---
**最后更新**2026-03-05
**最后更新**2026-03-10

View File

@@ -20,9 +20,11 @@ soul-apiGo + Gin + GORM + MySQL提供三组路由`/api/miniprogram/*`
| 2026-02-28 | stitch_soul 需求评审:需梳理 chapter/book/vip设计导师/预约/会员权益模型与接口 | 待续 |
| 2026-03-05 | 分支冲突后功能完整性分析会议:在 soul-api 确认合并状态,核对 orders、distribution 接口 | 待续 |
| 2026-03-05 | 文章详情@某人加好友方案讨论content 内嵌 @ 标记、miniprogram 添加好友接口 | 待续 |
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp后端接口边界不变overview 聚合接口可选但需降级 | 待续 |
| 2026-03-10 | 新增 GET /api/miniprogram/user/dashboard-stats聚合阅读统计接口含去重、min1分钟、500错误码修复 | 已完成 |
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD状态用已完成 / 进行中 / 待续 / 搁置
---
**最后更新**2026-03-05
**最后更新**2026-03-10dashboard-stats 接口新增完成)

View File

@@ -17,9 +17,11 @@ Soul 创业派对全项目架构与约定路由隔离miniprogram/admin/db
| 2026-02-27 | 项目索引初始化;团队经验库目录建立 | 已完成 |
| 2026-02-28 | stitch_soul 需求评审:内容→会员→导师变现路径,需与现有三端架构协同 | 已完成 |
| 2026-03-08 | 文章阅读付费规则澄清:免费章节以 free_chapters 为准VIP 全章免费;后端 book.go 合并配置修复 | 已完成 |
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp新菜单/布局作为团队规范基线,避免两套后台并行发散 | 待续 |
| 2026-03-10 | 新旧版代码对比方法论:以功能完整性而非日期判断优劣,批量 diff + 分类取舍 + 移植修复 | 已完成 |
> **格式说明**:每次架构级讨论后在此追加一行,日期格式 YYYY-MM-DD
---
**最后更新**2026-03-08
**最后更新**2026-03-10新旧版对比方法论沉淀

View File

@@ -23,9 +23,12 @@
| 2026-03-03 | 吸收经验我的页面卡片区边距优化16rpx 为个人中心类页面推荐值,已升级 SKILL §8 | 已完成 |
| 2026-03-05 | 分支冲突后功能完整性分析会议:修正 app.json 拆行、核心流程自测、确认 orders 接口 | 待续 |
| 2026-03-05 | 文章详情@某人加好友方案讨论:阅读页解析 @、高亮可点击、调添加好友接口 | 待续 |
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp小程序侧关注内容产物格式变化与阅读页兼容回归 | 待续 |
| 2026-03-10 | 移植 loadDashboardStats()my.js 阅读统计改为后端接口,去除随机数时间/标题占位 | 已完成 |
| 2026-03-10 | 富文本渲染技术债分析contentParser.js 剥除 HTML 格式,建议改 rich-text 组件(待实施) | 待续 |
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD状态用已完成 / 进行中 / 待续 / 搁置
---
**最后更新**2026-03-05
**最后更新**2026-03-10loadDashboardStats 移植完成)

View File

@@ -19,7 +19,8 @@
| 2026-02-28 | stitch_soul 需求评审:关键场景为阅读/付费/会员/导师预约/资料;待需求确定后补充联调用例 | 待续 |
| 2026-03-05 | 分支冲突后功能完整性分析会议:制定「分支合并后回归清单」 | 待续 |
| 2026-03-05 | 文章详情@某人加好友方案讨论@ 展示与添加好友用例、联调与回归 | 待续 |
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp回归重点为菜单一致性、隐藏路由可达性、鉴权跳转 | 待续 |
---
**最后更新**2026-03-05
**最后更新**2026-03-10

View File

@@ -20,9 +20,10 @@
| 2026-02-28 | stitch_soul 需求评审:待后端方案确定后规划章节/导师/会员/预约管理页面 | 待续 |
| 2026-03-05 | 分支冲突后功能完整性分析会议:全功能自测,记录 404/异常接口 | 待续 |
| 2026-03-05 | 文章详情@某人加好友方案讨论:编辑页插入 @用户、保存约定 content 格式 | 待续 |
| 2026-03-10 | 会议:管理端迁移 Mycontent-temp 新菜单/布局主导航收敛、author/admin 并入 Settings Tab | 待续 |
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD状态用已完成 / 进行中 / 待续 / 搁置
---
**最后更新**2026-03-05
**最后更新**2026-03-10

View File

@@ -0,0 +1,18 @@
# 管理端开发工程师 经验记录 - 2026-03-10
## 会议结论:管理端迁移 Mycontent-temp 菜单/布局
- **目标态基线**:以 `Mycontent-temp/soul-admin` 为“新规范基线”,旧 `soul-admin` 若继续演进则对齐其实现,避免两套后台信息架构发散。
- **菜单信息架构**
- 侧栏主菜单固定 5 项:数据概览 / 内容管理 / 用户管理 / 找伙伴 / 推广中心
- 系统设置固定在侧栏底部
- 取消「更多」折叠入口
- **路由与入口策略**
- `author-settings``admin-users` 不再作为独立菜单/页面入口,统一并入 `/settings?tab=author|admin`
- 订单/提现/推广设置/VIP角色/导师等页面**保留路由可达**,但不进入侧栏主菜单;入口通过概览卡片/页面内跳转承载
- **实现抓手**
- `AdminLayout.tsx`:用 `primaryMenuItems` 平铺主菜单Settings 单独固定
- `App.tsx`:对旧路径用 `Navigate` 做兼容跳转(减少断链风险)
> 详见会议纪要:`.cursor/meeting/2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md`

View File

@@ -4,3 +4,4 @@
|------|------|------|
| 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) |

View File

@@ -0,0 +1,12 @@
# 软件测试 经验记录 - 2026-03-10
## 管理端迁移 Mycontent-temp测试与回归关注点
- **菜单一致性**:侧栏必须是 5 个主入口 + 底部系统设置;不再出现“更多”折叠。
- **路由可达性回归**:菜单入口减少不等于功能减少,需要覆盖“隐藏路由仍可访问”的用例:
- 订单、提现、推广设置、VIP角色、导师、导师预约、二维码、站点、支付、API 文档、匹配记录等。
- **鉴权回归**:任意页面刷新都必须先 `GET /api/admin` 校验;失效则跳登录并清 token。
- **导航兼容**:旧路径(如 `/author-settings``/admin-users`)应跳转到 `/settings?tab=author|admin`
> 详见会议纪要:`.cursor/meeting/2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md`

View File

@@ -4,3 +4,4 @@
|------|------|------|
| 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) |

View File

@@ -0,0 +1,108 @@
# 会议纪要 - 2026-03-10 | 小程序新旧版对比分析 & dashboard-stats 接口新增
## 基本信息
- **时间**2026-03-10
- **议题**Mycontent-temp vs miniprogram 小程序新旧版功能/样式对比loadDashboardStats 移植;后端新增聚合接口
- **参与角色**:小程序开发工程师、后端工程师、团队(乘风)
---
## 讨论过程
### 一、新旧版小程序对比分析
用户指出 `Mycontent-temp/miniprogram` 为新版(仅供预览),`miniprogram` 为旧版(线上正确版本)。
**功能差异**(旧版反而功能更完整):
| 功能 | 新版 (Mycontent-temp) | 旧版 (miniprogram) |
|-----|------|------|
| 首页「我的阅读」进度卡 | ❌ 缺失 | ✅ 有(已读/待读/篇章/章节四统计) |
| 首页章数徽章/Banner篇章名 | ❌ 缺失 | ✅ 有 |
| 最新新增日期/描述 | ❌ 缺失 | ✅ 有 |
| 目录页 VIP 权限 | ❌ 无 isVip | ✅ 支持 isVip + isPremium 增值章节 |
| VIP 全局状态管理 | ❌ 不写 globalData | ✅ isVip/vipExpireDate 同步到 globalData + Storage |
| 阅读页 contentParagraphs fallback | ❌ 无 | ✅ 有降级渲染 |
| my.js 阅读统计 | ✅ loadDashboardStats后端接口| ❌ 本地缓存占位(随机时间/标题占位) |
**样式差异**(仅 2 处,全局 app.wxss 完全相同):
1. `chapters.wxss`:旧版多 `.tag-vip`(金色增值标签样式)
2. `read.wxss`:旧版 `.paragraph .mention``padding: 0 4rpx`
**结论**:新版的亮点仅为 `loadDashboardStats` 后端接口调用,其余功能旧版更完整。
### 二、my.js loadDashboardStats 移植
将 Mycontent-temp 中的 `loadDashboardStats()` 移植到旧版 `miniprogram/pages/my/my.js`
**改动:**
1. `initUserStatus()` 改造:去掉本地缓存占位(随机时间、标题 `章节 ${id}`),初始化清零后调 `loadDashboardStats()`
2. 新增 `loadDashboardStats()` 方法:调用 `/api/miniprogram/user/dashboard-stats?userId=xxx`,同步 `readSectionIds` 到 globalData 和 Storage获取真实 `recentChapters``readCount``totalReadMinutes``matchHistory`
### 三、后端 dashboard-stats 接口新增
`soul-api/internal/handler/user.go` 新增 `UserDashboardStats`,路由注册:`GET /api/miniprogram/user/dashboard-stats`
参考 Mycontent-temp 实现并优化了 3 处 bug
1. **去重**`seenRecent` map 防止同一章节重复出现在「最近阅读」
2. **最小 1 分钟**:阅读不足 60 秒时显示 1 分钟而非 0
3. **错误状态码**DB 失败返回 500 而非 200+`success:false`
编译通过,数据来源:
- `readSectionIds`/`readCount``reading_progress`
- `totalReadMinutes``duration` ÷ 60秒转分
- `recentChapters``reading_progress` JOIN `chapters`(最近 5 条去重)
- `matchHistory``match_records` 计数
### 四、富文本渲染现状分析(未实施,待办)
两版均为纯文本渲染TipTap HTML 格式(粗体、标题、列表、引用等)被 `contentParser.js` 全部剥除。
建议方案:用 `<rich-text>` 组件渲染 HTML@mention 替换为带颜色 span通过外层 bindtap + dataset 实现点击。**本次未实施。**
---
## 会议决议
1.**旧版miniprogram为线上正确版本**,新版仅供样式预览,不反向同步功能
2. ✅ **loadDashboardStats 已移植**到旧版 my.js阅读统计改为后端真实数据
3.**后端 dashboard-stats 接口已实现并编译通过**,可直接上线使用
4. ⬜ **富文本渲染**待后续迭代:用 `<rich-text>` 替换当前纯文本渲染
---
## 待办事项
| 责任角色 | 任务 | 状态 |
|---------|------|------|
| 小程序开发工程师 | 富文本渲染升级rich-text 组件 + mention 处理) | 待实施 |
| 后端工程师 | dashboard-stats 接口上线验证 | 待验证 |
| 小程序开发工程师 | 首页阅读进度卡确认是否需要(新版没有,旧版有) | 待确认 |
---
## 问题与作答区
| 编号 | 问题 | 作答 |
|------|------|------|
| Q1 | 内容在 DB 中是纯文本还是 TipTap HTML富文本渲染是否紧迫 | (待确认) |
| Q2 | 首页「我的阅读」进度卡是否保留?(新版已去掉) | (待确认) |
| Q3 | dashboard-stats 接口是否需要加缓存(高频调用场景)? | (待确认) |
---
## 各角色经验与业务理解更新
### 小程序开发工程师
- `my.js` 阅读统计来源改为后端接口,不再用本地缓存随机占位
- 富文本渲染为当前技术债,`contentParser.js` 仅剥 HTML 无格式保留
- 新旧版对比方法论:批量 WXSS/JS 文件 diff 精确定位差异
### 后端工程师
- 新增聚合接口时,优先参考已有实现版本,对比后修复 bug去重、min值、状态码
- `dashboard-stats` 数据模型reading_progress JOIN chapters + match_records count
### 团队
- Mycontent-temp 是预览分支,功能不及主线,不作为迁移基准
- 新旧版并存时,以功能更完整的主线版本为准,按需吸收新版的接口优化

View File

@@ -0,0 +1,82 @@
# 会议纪要 - 2026-03-10 | 文章详情三端功能对齐与开发
## 基本信息
- **时间**2026-03-10
- **议题**:文章详情 @某人/@linkTag/图片 三端功能对齐,发现 Bug完成开发
- **参与角色**:产品经理、后端开发、管理端开发工程师、小程序开发工程师
---
## 现状摸底(开发前)
| 功能 | 后端 | 管理端 | 小程序 | 状态 |
|---|---|---|---|---|
| @mention 存储格式 | content 字段存 TipTap HTML | RichEditor 插入 `<span data-type="mention">` | contentParser 解析 ✅ | ✅ 正常 |
| @mention 点击加好友 | CKBLead 接口 **只用全局 Key** | — | 已传 targetUserId后端接不住 | ❌ 缺密钥路由 |
| #linkTag 存储格式 | content 字段存 `<a href>` | insertLinkTag 插入标准 `<a>` | **未解析,直接被剥离** | ❌ 不可点 |
| 图片展示 | 存 `<img src>` | 编辑器支持上传插图 | **未解析,被剥离** | ❌ 不显示 |
| loadContent 重复定义 | — | — | 两个同名函数,旧版覆盖新版 | ❌ Bug |
---
## 本次完成的开发
### 后端soul-api
1. **`model/person.go`** 加 `CkbApiKey` 字段VARCHAR 100
2. **`handler/db_person.go`** `DBPersonSave` 接收并存储 `ckbApiKey`
3. **`model/ckb_lead.go`** 加 `TargetPersonID``Source` 字段落库
4. **`handler/ckb.go` `CKBLead`** 接收 `targetUserId`/`targetNickname`/`source`,查 `persons.ckb_api_key`,有则用,无则 fallback 全局 Key成功文案动态化"提交成功XXX 会尽快联系您"
5. **`scripts/add-persons-ckb-api-key.sql`** 手动迁移备用脚本
### 管理端soul-admin
1. **`components/RichEditor.tsx`** `PersonItem` 接口加 `ckbApiKey?: string`
2. **`pages/content/ContentPage.tsx`**
- `loadPersons` 映射 `ckbApiKey`
- `newPerson` state 加 `ckbApiKey`
- Person 配置卡片加「存客宝密钥」输入框(新建时可填)
- Person 列表每行加铅笔编辑按钮,展开内联输入框可直接修改密钥
- 密钥状态 badge有密钥显示绿色 `密钥 ✓`,无则灰色 `用默认密钥`
### 小程序miniprogram
1. **`utils/contentParser.js`** 全面重写:
- 新增 `parseBlockToSegments`:统一处理 mention / linkTag(span) / linkTag(a) / image 四种内联元素
- 新增解码工具函数 `decodeEntities`
- 纯图片行独立成段,不与文字混排
2. **`pages/read/read.js`**
- 删除重复的旧版 `loadContent`Bug覆盖新版
- 新版 `loadContent` 补全:成功后写本地缓存,缓存降级时恢复 partTitle/chapterTitle
- 新增 `onLinkTagTap`:内页路径直接 `navigateTo`,外链复制到剪贴板并提示
- 新增 `onImageTap`:点击图片全屏预览(`wx.previewImage`
3. **`pages/read/read.wxml`** 段落块新增渲染分支:
- `linkTag``<text class="link-tag" bindtap="onLinkTagTap">#{{label}}</text>`
- `image``<image class="content-image" bindtap="onImageTap">`
4. **`pages/read/read.wxss`** 新增 `.link-tag`(金色 #FFD700)、`.content-image`(宽度铺满)样式
---
## 完整加好友链路
```
管理端Person 配置填写存客宝密钥ckbApiKey
文章写入 content → "@[卡若](karuo)" / "#[标签名](url)" / <img src>
小程序 contentParser 解析 → segments
↓ 点击 @卡若
POST /api/miniprogram/ckb/lead
{ targetUserId: "karuo", targetNickname: "卡若", source: "article_mention" }
后端查 persons WHERE person_id='karuo' → 取 ckb_api_key
→ 有:用该人专属密钥推存客宝
→ 无fallback 全局 CKB_LEAD_API_KEY
落库 ckb_lead_recordstarget_person_id, source
```
---
## 待办
| 角色 | 任务 |
|---|---|
| 产品经理 | 确认 #linkTag 外链的交互体验(复制 vs 打开 webview是否符合预期 |
| 测试人员 | 联调:@某人点击 → 存客宝各渠道收线索;#标签点击 → 复制/跳转;图片点击 → 全屏预览 |

View File

@@ -0,0 +1,131 @@
# 会议纪要 - 2026-03-10 | 管理端迁移 Mycontent-temp 菜单/布局讨论
> 本文件由**助理橙子**在会议结束后自动生成。
---
## 基本信息
- **时间**2026-03-10 15:10
- **议题**:管理端改为使用 `Mycontent-temp/soul-admin` 这套“新菜单 + 新布局”规范;基于现有 `soul-admin` 功能,明确菜单/布局改造方式与功能适配点
- **触发方式**:开个会议研究下
- **参与角色**:产品经理、后端开发、管理端开发工程师、小程序开发工程师、测试人员
---
## 各角色发言
### 【产品经理】
- **目标**:后台的导航与信息架构要“更运营化”:核心入口更少、更聚焦;次要功能不消失但不占主导航。
- **新规范**(以 `Mycontent-temp/soul-admin/src/layouts/AdminLayout.tsx` 为准):
- 侧栏主菜单平铺 5 个:**数据概览 / 内容管理 / 用户管理 / 找伙伴 / 推广中心**
- **系统设置**固定在侧栏下方
- 原「更多」折叠的部分要么隐藏入口(从概览/页面内跳转进入),要么并入系统设置 Tab
- **验收**:菜单一致;旧功能可达;用户操作路径更短(尤其内容/找伙伴/推广)。
### 【后端开发】
- 管理端迁移/重构不改变接口边界:只允许 `/api/admin/*``/api/db/*``/api/orders`
- 路由与菜单调整不需要新增后端接口;若概览页需要聚合接口(如 `/api/admin/dashboard/overview`)可作为“优化项”,同时保留降级方案(用现有 users/orders 拼)。
- 需要注意“路由别名/跳转”不应影响鉴权:`GET /api/admin` 校验逻辑保持不变。
### 【管理端开发工程师】
- 新工程的关键差异点:
- `AdminLayout`:取消「更多」折叠,主菜单平铺;`/settings` 永远在底部。
- 路由:保留历史页面路由,但**不一定在菜单出现**`/author-settings``/admin-users` 变为 `Navigate``/settings?tab=author|admin`(页面承载搬到 Settings Tab
- 迁移策略建议:
- **以 `Mycontent-temp/soul-admin` 为“样板/目标态”**,把现有 `soul-admin` 中已实现的页面与功能对齐过去(或反向:把目标态布局/菜单 port 回现有项目)。
- 保持路由路径尽量不变(避免大量链接/收藏失效),通过菜单“入口收敛”达成产品目标。
### 【小程序开发工程师】
- 小程序侧只关心“内容编辑产物能否稳定下发/解析”,管理端菜单迁移不应改变内容接口或字段。
- 若管理端页面拆分导致内容结构改动(例如富文本 HTML、mention/tag 的数据结构),必须提前同步小程序解析策略并回归阅读页兼容。
### 【测试人员】
- 重点回归点:
- **路由可达性**:菜单入口虽减少,但旧页面必须仍能通过路由访问(尤其订单/提现/推广设置/导师等)。
- **鉴权**:任意页面刷新后均能正确校验 token 并跳转登录(`GET /api/admin`)。
- **信息架构一致**:侧栏 5 项 + 系统设置固定位置;`author/admin` 设置从 `/settings` 的 tab 进入。
---
## 讨论过程
- 对照了两套工程:
-`soul-admin`:主菜单 3 项 + 「更多」折叠VIP角色/作者详情/管理员/导师/导师预约/推广中心/找伙伴/匹配记录/推广设置)
-`Mycontent-temp/soul-admin`:主菜单 5 项平铺(概览/内容/用户/找伙伴/推广),系统设置固定;作者/管理员并入 Settings Tabs其余页面保持路由但不占侧栏入口
- 达成一致:**以新工程布局/菜单为准**,旧功能以“路由可达 + 概览/页面内跳转”方式保留。
---
## 会议决议
1. **目标态以 `Mycontent-temp/soul-admin` 为准**:菜单与布局“照新不照旧”,旧工程如需改造则对齐该实现。
2. **侧栏信息架构**
- 主菜单固定 5 项:数据概览、内容管理、用户管理、找伙伴、推广中心
- 系统设置固定在侧栏底部
- 取消「更多」折叠入口
3. **功能入口收敛规则**
- `author-settings``admin-users` 不再作为独立菜单项,统一并入 `/settings?tab=author|admin`
- 订单/提现/推广设置/VIP角色/导师等页面:**保留路由**,但入口不进入侧栏主菜单(可由概览卡片、页面内按钮或系统设置进入)
4. **接口与边界不变**:管理端继续只调用 `/api/admin/*``/api/db/*``/api/orders`,不得引入 `/api/miniprogram/*`
5. **待确认项**
- 哪些“非主菜单页面”需要在概览页提供快捷入口(订单、提现、推广设置等)的优先级排序。
---
## 待办事项
| 责任角色 | 任务 | 优先级 | 截止建议 |
|---------|------|--------|---------|
| 管理端开发工程师 | 基于 `Mycontent-temp/soul-admin` 梳理:侧栏主菜单 5 项、Settings Tab 承载 author/admin、其余页面入口方案概览卡片/页面内跳转) | 高 | 2026-03-11 |
| 产品经理 | 给出“非主菜单页面”的入口优先级(概览要露出哪些快捷卡片/按钮) | 中 | 2026-03-11 |
| 后端开发 | 确认概览聚合接口 `/api/admin/dashboard/overview` 是否作为正式接口上线;若不上线,确认降级方案字段口径 | 中 | 2026-03-12 |
| 测试人员 | 输出菜单/路由/鉴权回归清单(含隐藏路由可达性) | 中 | 2026-03-12 |
| 小程序开发工程师 | 关注内容编辑产物格式是否变化;若变更,补充阅读页兼容用例 | 低 | 持续 |
---
## 问题与作答区
| # | 问题 | 责任角色 | 作答 |
|---|------|---------|------|
| 1 | 非主菜单页面(订单/提现/推广设置/VIP角色/导师等)哪些必须在概览页提供快捷入口? | 产品经理 | (待补充) |
| 2 | `Mycontent-temp/soul-admin` 是否作为线上唯一管理端工程(替换旧 `soul-admin`),还是旧工程按新规范改造? | 团队 | (待补充) |
---
## 各角色经验与业务理解更新
### 产品经理
- 菜单信息架构收敛:主导航只保留运营主链路入口,次要功能“可达但不抢入口”。
### 后端开发
- 概览聚合接口可以作为优化项但必须保留降级users+orders确保不阻塞前端迁移。
### 管理端开发工程师
- 迁移以 `Mycontent-temp/soul-admin` 为目标态;作者/管理员并入 Settings Tab取消“更多”折叠。
### 小程序开发工程师
- 管理端迁移不应影响小程序接口边界;若内容格式变更需及时同步解析策略并回归。
### 测试人员
- 菜单减少不等于功能减少:必须覆盖“隐藏路由可达性 + 鉴权跳转 + 新侧栏一致性”。
### 团队共享
- 统一以 `Mycontent-temp/soul-admin``AdminLayout`/`SettingsPage` 为“新规范基线”,后续所有菜单/布局调整按该基线执行,避免两套后台并行发散。
---
*会议纪要由助理橙子生成 | 各角色经验已同步至 `agent/{角色}/evolution/2026-03-10.md`*

View File

@@ -68,3 +68,6 @@ YYYY-MM-DD_会议主题.md
| 2026-03-09 | 代码完整性分析与分支合并准备 | 产品、后端、管理端、小程序、测试 | [2026-03-09_代码完整性分析与分支合并准备.md](2026-03-09_代码完整性分析与分支合并准备.md) |
| 2026-03-09 | devlop 与 yongxu 分支差异分析 | 产品、后端、管理端、小程序、测试 | [2026-03-09_devlop与yongxu分支差异分析会议.md](2026-03-09_devlop与yongxu分支差异分析会议.md) |
| 2026-03-09 | dev 分支需求分析与 yongxu 迁移方案 | 产品、后端、管理端、小程序 | [2026-03-09_dev分支需求分析与yongxu迁移方案.md](2026-03-09_dev分支需求分析与yongxu迁移方案.md) |
| 2026-03-10 | 管理端迁移 Mycontent-temp 菜单/布局讨论 | 产品、后端、管理端、小程序、测试 | [2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md](2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md) |
| 2026-03-10 | 小程序新旧版对比分析与 dashboard-stats 接口新增 | 小程序、后端、团队 | [2026-03-10_小程序新旧版对比与dashboard接口新增.md](2026-03-10_小程序新旧版对比与dashboard接口新增.md) |
| 2026-03-10 | 文章详情三端功能对齐与开发(@mention/#linkTag/图片 | 产品、后端、管理端、小程序 | [2026-03-10_文章详情三端功能对齐与开发.md](2026-03-10_文章详情三端功能对齐与开发.md) |