更新管理端迁移Mycontent-temp的菜单与布局规范,确保主导航收敛并优化隐藏页面入口。新增相关会议记录与文档,反映团队讨论的最新决策与实施建议。
This commit is contained in:
13
.cursor/agent/产品经理/evolution/2026-03-10.md
Normal file
13
.cursor/agent/产品经理/evolution/2026-03-10.md
Normal 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`
|
||||
|
||||
@@ -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) |
|
||||
|
||||
36
.cursor/agent/后端工程师/evolution/2026-03-10.md
Normal file
36
.cursor/agent/后端工程师/evolution/2026-03-10.md
Normal 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`
|
||||
|
||||
@@ -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) |
|
||||
|
||||
@@ -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`
|
||||
|
||||
|
||||
@@ -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) |
|
||||
|
||||
46
.cursor/agent/小程序开发工程师/evolution/2026-03-10.md
Normal file
46
.cursor/agent/小程序开发工程师/evolution/2026-03-10.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# 小程序开发工程师 经验记录 - 2026-03-10
|
||||
|
||||
## 管理端迁移 Mycontent-temp:小程序侧关注点
|
||||
|
||||
- **菜单/布局迁移不应影响小程序接口**:管理端仅重排入口与页面承载,禁止因此改动小程序端接口路径或混用 `/api/miniprogram/*`。
|
||||
- **内容编辑产物稳定性**:如果管理端迁移导致内容从 Markdown → HTML(TipTap)或 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`
|
||||
|
||||
@@ -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) |
|
||||
|
||||
@@ -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 + 分类取舍,不以日期判优劣 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -20,9 +20,11 @@ soul-api(Go + 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-10(dashboard-stats 接口新增完成)
|
||||
|
||||
@@ -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(新旧版对比方法论沉淀)
|
||||
|
||||
@@ -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-10(loadDashboardStats 移植完成)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
18
.cursor/agent/管理端开发工程师/evolution/2026-03-10.md
Normal file
18
.cursor/agent/管理端开发工程师/evolution/2026-03-10.md
Normal 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`
|
||||
|
||||
@@ -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) |
|
||||
|
||||
12
.cursor/agent/软件测试/evolution/2026-03-10.md
Normal file
12
.cursor/agent/软件测试/evolution/2026-03-10.md
Normal 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`
|
||||
|
||||
@@ -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) |
|
||||
|
||||
108
.cursor/meeting/2026-03-10_小程序新旧版对比与dashboard接口新增.md
Normal file
108
.cursor/meeting/2026-03-10_小程序新旧版对比与dashboard接口新增.md
Normal 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 是预览分支,功能不及主线,不作为迁移基准
|
||||
- 新旧版并存时,以功能更完整的主线版本为准,按需吸收新版的接口优化
|
||||
82
.cursor/meeting/2026-03-10_文章详情三端功能对齐与开发.md
Normal file
82
.cursor/meeting/2026-03-10_文章详情三端功能对齐与开发.md
Normal 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_records(target_person_id, source)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 待办
|
||||
| 角色 | 任务 |
|
||||
|---|---|
|
||||
| 产品经理 | 确认 #linkTag 外链的交互体验(复制 vs 打开 webview)是否符合预期 |
|
||||
| 测试人员 | 联调:@某人点击 → 存客宝各渠道收线索;#标签点击 → 复制/跳转;图片点击 → 全屏预览 |
|
||||
131
.cursor/meeting/2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md
Normal file
131
.cursor/meeting/2026-03-10_管理端迁移Mycontent-temp菜单布局讨论.md
Normal 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`*
|
||||
|
||||
@@ -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) |
|
||||
|
||||
Reference in New Issue
Block a user