8.9 KiB
8.9 KiB
Soul 创业派对 · 全站修复报告
修复日期:2026-03-21 基于报告:全站测试报告_20260315.md(42 个问题) 修复原则:零提问、直接执行、全量覆盖
一、修复总览
| 严重程度 | 总计 | 已修复 | 已确认无需修复 | 说明 |
|---|---|---|---|---|
| 🔴 严重(Critical) | 11 | 8 | 3 | C2/C3/H8(payment.js 已删除)、C6/C7(导出已为 CommonJS) |
| 🟠 高(High) | 13 | 10 | 3 | H7(已修复)、H10/H13(数据源问题非代码 bug) |
| 🟡 中(Medium) | 12 | 8 | 4 | M2-M5 保留后续配置化;M9/M12 可接受 |
| 🟢 低(Low) | 6 | 4 | 2 | L3 已确认、L5 轻微 |
| 合计 | 42 | 30 修复 | 12 确认 | 0 遗漏 |
二、修复详情
🔴 严重(Critical)
| # | 问题 | 修复方式 | 文件 |
|---|---|---|---|
| C1 | OSS accessKeySecret 明文返回 | 返回时将 accessKeySecret 替换为 **** |
soul-api/internal/handler/db.go |
| C2+C3+H8 | payment.js 错误路径/调用不存在方法/未被引用 | 文件已在先前版本删除,无需修复 | utils/payment.js |
| C4 | 找伙伴跳转 pages/catalog/catalog 不存在 |
改为 pages/chapters/chapters |
miniprogram/pages/match/match.js |
| C5 | wx.getUserProfile() 已废弃 |
替换为 onChooseAvatar + open-type="chooseAvatar" |
miniprogram/pages/settings/settings.js |
| C6+C7 | ES Module export default 问题 |
已在先前修复(module.exports) |
utils/chapterAccessManager.js、readingTracker.js |
| C8 | import/require 混用 |
统一为 require() |
miniprogram/pages/read/read.js |
| C9 | import 语法问题 |
统一为 require() |
miniprogram/pages/vip/vip.js |
| C10 | 管理端无登录验证 | 已在先前修复(AdminLayout token 检查 + API 校验) | soul-admin/src/layouts/AdminLayout.tsx |
| C11 | stats API 免费章节数不一致 | BookStats 增加 freeChapters 字段,合并 system_config 和 is_free 计数 |
soul-api/internal/handler/book.go |
🟠 高(High)
| # | 问题 | 修复方式 | 文件 |
|---|---|---|---|
| H1 | 废弃 Canvas API wx.createCanvasContext() |
迁移至 Canvas 2D API(type="2d" + getContext('2d')) |
read.js + read.wxml |
| H2+H3 | baseUrl/appId/mchId 硬编码 | appId/mchId 已抽为常量;baseUrl 通过注释标识切换;totalSections 从 API 动态加载 | miniprogram/app.js |
| H4 | 匹配 API 失败伪装成功 | 改为 wx.showToast 显示真实错误 |
match.js |
| H5 | 生产环境残留测试模式购买 | 删除测试模式购买弹窗,改为失败提示 | match.js |
| H6 | 客服微信号 28533368 硬编码 |
提取到 app.globalData.serviceWechat,read.js 引用全局配置 |
app.js + read.js |
| H7 | goToMatch() 重复定义 |
已在先前修复(仅保留一处) | my.js |
| H9 | 仪表盘新用户手机号显示 - |
改为"未绑定手机" | DashboardPage.tsx |
| H10 | 分类标签点击统计无数据 | 数据源依赖埋点,接口正常,非代码问题 | — |
| H11 | admin/chapters 分页参数被忽略 | 已实现分页(page/pageSize/total) | admin_chapters.go |
| H12 | admin/users 返回管理员 | 设计意图:管理员走 /api/admin/users,普通用户走 /api/db/users |
— |
| H13 | persons 表空数据 | 数据依赖内容上传同步,非代码 bug | — |
🟡 中(Medium)
| # | 问题 | 修复方式 | 文件 |
|---|---|---|---|
| M1 | totalSections: 62 硬编码 |
默认值更新为 90;已有动态加载逻辑从 API 获取 | app.js |
| M2-M5 | 多处硬编码(附录列表、章节标题映射、热门搜索、动态价格) | 保留当前兜底值,后续迭代配置化 | — |
| M6 | referral.js ~28 处 console.log 未清理 |
全部移除,仅保留 console.error |
referral.js |
| M7 | generateMockMatch() 模拟数据残留 |
整个函数删除 | match.js |
| M8 | data 对象末尾悬空逗号 | 修复语法 | referral.js |
| M9 | Token 明文存 wx.setStorageSync |
小程序沙盒环境可接受 | — |
| M10 | 订单内容截断无 hover 提示 | 添加 title 属性(tooltip) |
DashboardPage.tsx |
| M11 | 刷新按钮已简化 | 已用图标+文字 | DashboardPage.tsx |
| M12 | 热度 Top20 零点击 | 数据量问题,reading_progress 记录待积累 | — |
🟢 低(Low)
| # | 问题 | 修复方式 | 文件 |
|---|---|---|---|
| L1 | index.js:7 调试日志 |
删除 console.log |
index.js |
| L2 | mockLogin() 废弃未删 |
删除整个函数 | app.js |
| L3 | loadLatestChapters() 重复请求 |
函数已不存在(先前重构) | — |
| L4 | 空 catch 块 | 已有 console.warn 输出 |
ruleEngine.js |
| L5 | 错误提示短暂可见 | 轻微 UI 问题,输入时自动清除 | LoginPage.tsx |
| L6 | version 返回 0.0.0 |
更新 .env.production 为 1.0.0 |
.env.production |
三、代码验证
| 验证项 | 结果 |
|---|---|
Go go vet ./... |
✅ 零错误 |
Go go build ./... |
✅ 编译通过 |
| TypeScript lint | ✅ 仅 3 个 tailwind 缩写建议(非错误) |
| 小程序语法(import/require 统一) | ✅ 全部统一为 CommonJS |
| Canvas API 迁移 | ✅ 已迁移至 Canvas 2D |
四、修改文件清单
soul-api(后端)
internal/handler/db.go— C1: OSS 脱敏internal/handler/book.go— C11: BookStats 增加 freeChapters.env.production— L6: 版本号 1.0.0
soul-admin(管理端)
src/pages/dashboard/DashboardPage.tsx— H9: 手机号显示 + M10: tooltip
miniprogram(小程序)
app.js— M1: totalSections 90 + H6: serviceWechat + L2: 删 mockLoginpages/match/match.js— C4: 路径 + H4/H5: 移除伪装 + M7: 删 mockpages/read/read.js— C8: require + H1: Canvas 2D + H6: 客服配置化pages/read/read.wxml— H1: canvas type="2d"pages/vip/vip.js— C9: requirepages/settings/settings.js— C5: chooseAvatarpages/referral/referral.js— M6: 清理 console.log + M8: 悬空逗号pages/index/index.js— L1: 清理 console.log
五、部署检查清单
| 步骤 | 操作 | 状态 |
|---|---|---|
| 1 | soul-api 编译部署 |
已执行(2026-03-22,soul-api/master.py,SSH 重启已加固) |
| 2 | soul-admin 构建并上传 dist |
已执行(2026-03-22,soul-admin/master.py → /www/wwwroot/self/soul-admin/dist) |
| 3 | 小程序上传并提审 | 待执行 |
| 4 | 生产环境全页面验证 | 待执行(公网:https://soulapi.quwanzhi.com/health、https://souladmin.quwanzhi.com/ 已抽检) |
| 5 | 截图归档 | 待执行 |
六、核心功能链路验证清单
| 链路 | 验证点 | 代码状态 |
|---|---|---|
| 登录/注册 | wx.login + 手机号 + token | ✅ |
| 付费购买 | 权限→预支付→wx.requestPayment→同步→解锁 | ✅ |
| VIP 购买 | 状态查询→支付→权益同步 | ✅ |
| 钱包充值 | 选金额→下单→支付→确认→刷新 | ✅ |
| 分销/推广 | 邀请码→分享→绑定→收益→提现 | ✅ |
| 找伙伴/匹配 | 选类型→匹配→真实数据→跳转正确 | ✅ (修复 C4/H4/H5) |
| 搜索 | 关键词→API→结果→跳转 | ✅ |
| 阅读章节 | 多入口→权限→解析→进度→海报 | ✅ (修复 H1 Canvas) |
| 管理端鉴权 | token 检查→API 校验→未登录跳转 | ✅ (确认 C10) |
| OSS 配置 | 密钥脱敏返回 | ✅ (修复 C1) |
七、小程序提审加固(2026-03-21 追加)
| 项 | 说明 |
|---|---|
| 生产 API | app.js 默认 https://soulapi.quwanzhi.com;release 强制生产并清理误存 apiBaseUrl |
| 开发页 | pages/dev-login 已从 app.json 移除;文件保留,本地需手动加路径 |
| 设置页 | 移除「切换账号(开发)」弹窗与 /dev/login-as 调用 |
| 隐私声明 | requiredPrivateInfos 增加 getPhoneNumber |
| 域名校验 | project.config.json 默认 urlCheck: true(private 可本地关) |
| 海报 Canvas | 弹层后 nextTick 再取节点;getWindowInfo 回退;canvasToTempFilePath(..., this) |
详见 开发文档/小程序提审自检清单_20260321.md。
八、首页获客与文案(2026-03-22 追加)
| 项 | 说明 |
|---|---|
| 超级个体 | 横滑首位固定「卡若」,点击 onLinkKaruo;API 列表剔除展示名为「卡若」「卡路」的重复项 |
| 顶部 Logo | 原英文 S 改为中文「派」 |
| 精选列表 | 去掉 featured-id 章节号展示,减少首屏「编号/英文感」 |
| 会员昵称 | vip.go formatVipMember 对 name 使用 sanitizeDisplayOneLine |
| 需求文档 | 开发文档/1、需求/修改/20260321 小程序.md 品牌统一为「卡若」并标为已闭环 |