17 KiB
功能等价修复实施计划
给后续执行者: 实施本计划时必须使用
superpowers:subagent-driven-development(推荐)或superpowers:executing-plans,按任务逐项执行。任务步骤使用复选框格式,方便跟踪进度。
目标: 让 shencaisuan 在功能上与参考项目 3Dyjs 保持一致,同时保留当前项目的换皮样式、页面组织方式和已经明确允许的差异。
架构: 以 3Dyjs 作为功能事实标准。先补齐公共业务规则,再让各页面复用同一套规则,避免每个页面各自判断。视觉样式可以不同,但接口、参数、状态判断、标色规则、购买规则、注册登录、分销、专家申请、文章权限等功能必须和参考项目一致,除非本计划明确列为允许差异。
技术栈: 静态 HTML 页面、Layui、jQuery、WangEditor、utils/*.js 浏览器全局工具、utils/ApiClient.js 统一接口、utils/CommonUtil.js 公共渲染和工具方法。
全局约束
- 参考项目路径:
C:\Users\Administrator\Desktop\job\3Dyjs。 - 当前项目路径:
C:\Users\Administrator\Desktop\job\shencaisuan。 - 功能行为默认对齐参考项目,除非写在“允许差异”里。
- 样式、品牌、公共导航外观、底部外观、移动端视觉表现可以不同。
- 当前项目不需要
zhuanjia.html,不要恢复这个页面。 - 如果公共导航或接口返回入口指向
zhuanjia.html,必须过滤或改写到当前项目有效页面。 - 以
docs/reference-project-function-diff-2026-07-07.md作为差异对比基线。 - 不删除、不回退与本任务无关的用户已有改动。
- 每个任务完成后必须做最小可行验证。
允许差异
这些差异是当前项目明确允许的,不作为缺陷处理:
html/zhuanjia.html不属于当前项目。- 视觉皮肤、间距、渐变、导航底部样式、移动端呈现可以不同于参考项目。
- 部分页面可以合并,但合并后必须保留等价功能和有效入口。
- 客服二维码使用当前项目本地图片:
public/img/kfwx.jpg、public/img/kfqq.jpg。 - 工信部备案链接必须使用
https://beian.miit.gov.cn/。
任务 1:锁定导航和允许差异契约
涉及文件:
- 修改:
docs/reference-project-function-diff-2026-07-07.md - 检查:
utils/CommonUtil.js - 检查:
html/index.html - 检查:所有渲染公共导航的
html/*.html
输入:
- 当前项目明确不需要
zhuanjia.html。
输出:
-
找出当前项目里所有仍可能跳转到
zhuanjia.html的运行时代码路径。 -
步骤 1:搜索错误专家页入口。
执行:
rg -n "zhuanjia\.html|专家推荐" html utils public
期望:
-
所有
zhuanjia.html结果都必须被检查。 -
只出现在文档里的结果允许存在。
-
当前项目运行时导航不能打开缺失的
zhuanjia.html。 -
步骤 2:检查
CommonUtil.js的导航映射。
检查菜单名称为“专家推荐”或路径为 zhuanjia.html 时,当前公共工具如何处理。
期望:
-
公共导航不会打开缺失的
zhuanjia.html。 -
如果接口返回专家推荐入口,当前代码必须过滤它,或改写到一个有效页面。
-
步骤 3:如果发现新风险,同步更新差异文档。
期望:
-
文档继续把
zhuanjia.html标为允许差异。 -
文档只记录真实运行时风险。
-
步骤 4:验证文档格式。
执行:
git diff --check -- docs/reference-project-function-diff-2026-07-07.md
期望:无输出。
任务 2:补齐发布权限公共契约
涉及文件:
- 新增:
utils/PublishPermission.js - 修改:
html/fabumianfeiwenzhang.html - 修改:
html/fufei.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\utils\PublishPermission.js - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\fabumianfeiwenzhang.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\fufei.html
输入:
ApiClient.API.mineSummary
输出:
-
全局对象:
PublishPermission.parseSummary(userData, options) -
权限对象字段:
hasExpertIdentity、isRegularExpert、canFree、canPaid、quotaExempt、todayFreeArticleCount、requiredDailyFreeArticleCount、paidReason、reason -
步骤 1:按参考项目逻辑新增
utils/PublishPermission.js。
期望行为:
-
专家身份兼容字段:
is_expert、isExpert、expert、is_regular_expert、isRegularExpert、regularExpert、文本型expertStatus。 -
付费发布兼容字段:
canPublishPayArticle、payArticleFreeQuotaExempt、todayApprovedFreeArticleCount、requiredDailyApprovedFreeArticleCount、payArticlePublishReason。 -
默认每天需要审核通过的免费文章数量为
2。 -
步骤 2:两个发布页都引入新脚本。
期望增加:
<script src="../utils/PublishPermission.js"></script>
- 步骤 3:替换
fabumianfeiwenzhang.html里的本地权限判断。
期望:
-
免费发布页请求
mineSummary。 -
使用
PublishPermission.parseSummary(res.data)。 -
canFree为假时禁止发布,并引导到apply.html。 -
“发布付费文章”tab 使用
canPaid和paidReason判断。 -
步骤 4:给
fufei.html增加付费发布拦截。
期望:
-
页面加载付费发布数据前先请求
mineSummary。 -
canPaid为假时显示原因,并跳回fabumianfeiwenzhang.html。 -
不改变现有视觉表单和选号逻辑。
-
步骤 5:静态验证。
执行:
rg -n "PublishPermission|parsePublishPermission|loadTodayPublishedFreeCount|checkPaidPublishPermission" html\fabumianfeiwenzhang.html html\fufei.html utils\PublishPermission.js
期望:
-
PublishPermission.js存在,并暴露parseSummary。 -
两个发布页调用
PublishPermission.parseSummary。 -
旧的重复权限解析函数被删除,或不再被使用。
-
步骤 6:语法验证。
执行:
node -c utils\PublishPermission.js
期望:没有语法错误。
任务 3:修正个人中心契约和重复 DOM 风险
涉及文件:
- 修改:
html/usercenter.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\usercenter.html
输入:
CommonUtil.getExpertState(user)ApiClient.js中已有的账号概要和资料接口
输出:
-
微信绑定区域只有一个明确 DOM 所有者,或使用 class 统一更新多个展示点。
-
资料编辑只走一条清晰提交路径。
-
步骤 1:搜索
usercenter.html里的重复 ID。
执行:
rg -n "wechat-bind-card|wechat-bind-desc|wechat-bind-button|editProfile|expertStatus|expertEnabled" html\usercenter.html
期望:
-
编辑前先确认重复 ID 位置。
-
步骤 2:把重复 ID 改成单一所有者或 class 更新。
期望:
-
页面中不再有重复
id。 -
重复视觉区域使用 class。
-
微信绑定状态能同步更新所有可见区域。
-
步骤 3:验证专家申请按钮逻辑。
期望:
-
已是专家:展示专家相关操作,不显示重复申请。
-
审核中:显示“申请审核中”,不允许重复提交。
-
非专家:显示“专家申请”。
-
expertStatus: 0这种 falsey 值不能被丢失。 -
步骤 4:验证资料编辑契约。
期望:
-
昵称字段提交为
nickName。 -
密码只有在两次输入都存在并一致时提交。
-
头像上传结果提交为
avatar。 -
没有任何修改时提示“暂无修改”,不发送空请求。
-
步骤 5:静态验证。
执行:
git diff --check -- html\usercenter.html
期望:无输出。
任务 4:对齐登录、注册、找回密码、验证码和推广绑定
涉及文件:
- 修改:
utils/AuthPageUtil.js - 修改:
html/login.html - 修改:
html/reg.html - 修改:
html/repwd.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\utils\AuthPageUtil.js - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\login.html
输入:
referralBindPreviewreferralBind- 登录、注册、短信验证码、滑块验证码接口
输出:
-
邀请码捕获、预览、缓存、登录/注册后绑定流程与参考项目一致。
-
步骤 1:对比
AuthPageUtil.js和参考项目。
执行:
rg -n "invite|referral|captcha|slide|viewport|resize|bind" utils\AuthPageUtil.js C:\Users\Administrator\Desktop\job\3Dyjs\utils\AuthPageUtil.js
期望:
-
编辑前列出缺失的邀请码和滑块移动端行为。
-
步骤 2:迁移邀请码缓存和登录/注册后绑定逻辑。
期望:
-
支持参考项目里的邀请参数。
-
邀请码能在登录/注册页面跳转之间保留。
-
登录或注册成功后,在合适时机调用
referralBind。 -
步骤 3:迁移滑块验证码移动端定位逻辑。
期望:
-
移动端验证码弹层居中。
-
多次打开不会残留旧遮罩或旧状态。
-
步骤 4:确认登录注册页面仍保持当前皮肤。
期望:
- 不回退成参考项目旧样式。
- 表单字段保持当前布局,但行为与参考项目一致。
任务 5:对齐免费文章列表、详情、发布和收藏
涉及文件:
- 修改:
html/mianfeilist.html - 修改:
html/mianfei.html - 修改:
html/fabumianfeiwenzhang.html - 修改:
html/mianfeishoucang.html - 检查:
html/c.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\mianfeilist.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\mianfei.html
输入:
ApiClient.API中免费文章列表、详情、收藏相关接口
输出:
-
免费文章列表数量、分页、详情渲染、收藏行为与参考项目等价。
-
步骤 1:对比免费文章列表接口参数。
期望:
-
pageNum、pageSize、menuId、状态/类型筛选与参考项目一致。 -
如果页面合并导致参数适配不同,需要在文档中记录。
-
步骤 2:验证作者和标题展示。
期望:
-
头像、
issuer昵称、标题、日期按当前需求展示。 -
标题有最大宽度和省略号。
-
步骤 3:确定收藏页主入口。
期望:
-
要么
mianfeishoucang.html负责所有收藏 tab,c.html变成兼容入口。 -
要么两个页面职责明确,不重复。
-
步骤 4:验证富文本安全。
期望:
- 文章内容渲染达到参考项目同等级别的净化或转义要求。
- 不出现未处理的危险 HTML 注入。
任务 6:对齐付费文章、专家详情、购买和预购
涉及文件:
- 修改:
html/cai.html - 修改:
html/caiinfo.html - 修改:
html/fufei.html - 修改:
html/usercenter.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\cai.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\caiinfo.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\fufei.html
输入:
- 专家排行、付费文章列表/详情、购买、预购、收藏、钱包概要接口
输出:
-
购买、预购、已购、收藏、余额判断等行为与参考项目等价。
-
步骤 1:对比
caiinfo.html状态归一化。
期望:
-
已购买、可预购、已预购、文章收藏、专家收藏等状态判断与参考项目一致。
-
步骤 2:对比支付请求参数。
期望:
-
价格、文章 ID、菜单 ID、专家 ID、预购字段与参考项目接口契约一致。
-
步骤 3:验证个人中心付费文章和购买记录。
期望:
- 我的付费文章、已购文章、删除购买记录、空状态与参考项目等价。
任务 7:对齐走势图渲染规则
涉及文件:
- 新增或修改:
public/js/trend-pages.js - 修改:
html/fc3d.html - 修改:
html/pl3.html - 修改:
html/pl5.html - 修改:
html/kl8.html - 修改:
html/ssq.html - 修改:
html/cjdlt.html - 修改:
html/qlc.html - 修改:
html/qxc.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\public\js\trend-pages.js
输入:
lotteryTrendlatestLotteryResult
输出:
-
期数选项、走势图行、颜色标记、每 10 期分隔线、统计行、横向滚动规则按彩种与参考项目一致。
-
步骤 1:对比 8 个走势图页面和参考配置。
期望:
-
确认每个彩种的号码分区、蓝球规则、特别号列、统计行。
-
步骤 2:实现当前项目共享走势图渲染,或逐页完全对齐。
期望:
-
期数按钮为:
10期、20期、30期、60期。 -
每 10 期使用与参考项目粗细一致的分隔线。
-
红球为红色,蓝球为蓝色,特殊色只在参考项目使用时保留。
-
快乐8 不出现错误的“开奖号”表头,并正确展示 20 个号码。
-
步骤 3:静态验证 8 个页面。
执行:
rg -n "10期|20期|30期|60期|trend-period-separator|lotteryTrend|latestLotteryResult" html\fc3d.html html\pl3.html html\pl5.html html\kl8.html html\ssq.html html\cjdlt.html html\qlc.html html\qxc.html
期望:
- 每个页面都有一致的期数选项和数据 fallback 策略。
任务 8:对齐钱包、充值、提现和资金明细
涉及文件:
- 修改:
html/chongzhi.html - 修改:
html/tixian.html - 修改:
html/tixianlist.html - 修改:
html/jine.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\tixian.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\tixianlist.html
输入:
- 钱包概要、充值配置、充值下单、订单状态、提现账户、提现提交、资金流水接口
输出:
-
余额展示、二维码上传、默认账户、提现提交、记录筛选行为与参考项目等价。
-
步骤 1:对比钱包接口 key 和请求参数。
期望:
-
当前页面调用的接口语义与参考项目一致。
-
步骤 2:验证充值余额和订单轮询。
期望:
-
用户能看到相关余额。
-
二维码和订单状态轮询在成功或失败后正确停止。
-
步骤 3:验证提现账户管理。
期望:
- 新增、编辑、删除、设默认、二维码上传、提交提现与参考项目等价。
任务 9:对齐推广和分销流程
涉及文件:
- 修改:
html/tuiguang.html - 修改:
html/fenxiao.html - 修改:
html/wodefenxiao.html - 修改:
utils/AuthPageUtil.js - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\fenxiao.html - 参考:
C:\Users\Administrator\Desktop\job\3Dyjs\html\wodefenxiao.html
输入:
- 推广概要、邀请列表、返佣列表、绑定预览、绑定提交接口
输出:
-
推广链接、二维码、绑定关系、邀请列表、返佣列表行为与参考项目等价。
-
步骤 1:确认
wodefenxiao.html的业务含义。
期望:
-
如果参考项目展示返佣记录,当前项目不能静默展示邀请用户列表。
-
步骤 2:对齐接口调用和表格字段。
期望:
-
用户看到的数据含义与参考项目一致。
-
步骤 3:验证推广绑定链路。
期望:
- 匿名访问邀请链接,注册或登录后能绑定推广关系。
任务 10:最终跨模块回归
涉及文件:
- 检查所有已修改文件。
- 如决策变化,更新:
docs/reference-project-function-diff-2026-07-07.md
输出:
-
当前批次的功能等价验证记录。
-
步骤 1:检查所有改动文件格式。
执行:
git diff --check
期望:无空白错误。
- 步骤 2:搜索参考项目中当前项目不应误跳的本地路径。
执行:
rg -n "zhuanjia\.html|duanzuhe\.html|shazuhe\.html|zhuanjiashoucang\.html" html utils public
期望:
-
zhuanjia.html不作为运行时目标出现。 -
duanzuhe.html和shazuhe.html要么是确认过的外链目标,要么已恢复本地等价功能。 -
zhuanjiashoucang.html不作为运行时目标出现,除非明确恢复。 -
步骤 3:浏览器手工回归。
期望覆盖:
- 登录、注册、找回密码。
- 首页导航和底部。
- 8 个走势图页面。
- 免费文章列表、详情、发布、收藏。
- 付费文章列表、详情、购买、预购、发布。
- 个人中心资料、签到、微信绑定、专家申请状态。
- 充值、提现、资金明细。
- 推广邀请和返佣页面。
执行顺序
- 任务 1:锁定允许差异,防止缺失页面误跳。
- 任务 2:补齐发布权限公共契约。
- 任务 3:修正个人中心契约和重复 DOM 风险。
- 任务 4:对齐登录、注册、验证码和推广绑定基础能力。
- 任务 5:对齐免费文章流程。
- 任务 6:对齐付费文章和购买流程。
- 任务 7:对齐走势图。
- 任务 8:对齐钱包流程。
- 任务 9:对齐推广和分销页面。
- 任务 10:跨模块回归。
自检结果
- 需求覆盖:覆盖
docs/reference-project-function-diff-2026-07-07.md中记录的主要高风险差异。 - 占位检查:没有把“待定/以后实现”作为任务要求。
- 契约一致性:发布权限对象字段与参考项目
PublishPermission.parseSummary保持一致。 - 范围检查:这是多批次功能等价修复,每个任务都可以独立验证,并且必须按顺序执行。