样式修改完成,待测试

This commit is contained in:
rain
2026-07-07 17:07:34 +08:00
parent 0f6ed0cad3
commit 8a6a8acab7
32 changed files with 2097 additions and 505 deletions
@@ -0,0 +1,567 @@
# 功能等价修复实施计划
> **给后续执行者:** 实施本计划时必须使用 `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:搜索错误专家页入口。
执行:
```powershell
rg -n "zhuanjia\.html|专家推荐" html utils public
```
期望:
- 所有 `zhuanjia.html` 结果都必须被检查。
- 只出现在文档里的结果允许存在。
- 当前项目运行时导航不能打开缺失的 `zhuanjia.html`
- [ ] 步骤 2:检查 `CommonUtil.js` 的导航映射。
检查菜单名称为“专家推荐”或路径为 `zhuanjia.html` 时,当前公共工具如何处理。
期望:
- 公共导航不会打开缺失的 `zhuanjia.html`
- 如果接口返回专家推荐入口,当前代码必须过滤它,或改写到一个有效页面。
- [ ] 步骤 3:如果发现新风险,同步更新差异文档。
期望:
- 文档继续把 `zhuanjia.html` 标为允许差异。
- 文档只记录真实运行时风险。
- [ ] 步骤 4:验证文档格式。
执行:
```powershell
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:两个发布页都引入新脚本。
期望增加:
```html
<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:静态验证。
执行:
```powershell
rg -n "PublishPermission|parsePublishPermission|loadTodayPublishedFreeCount|checkPaidPublishPermission" html\fabumianfeiwenzhang.html html\fufei.html utils\PublishPermission.js
```
期望:
- `PublishPermission.js` 存在,并暴露 `parseSummary`
- 两个发布页调用 `PublishPermission.parseSummary`
- 旧的重复权限解析函数被删除,或不再被使用。
- [ ] 步骤 6:语法验证。
执行:
```powershell
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。
执行:
```powershell
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:静态验证。
执行:
```powershell
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`
**输入:**
- `referralBindPreview`
- `referralBind`
- 登录、注册、短信验证码、滑块验证码接口
**输出:**
- 邀请码捕获、预览、缓存、登录/注册后绑定流程与参考项目一致。
- [ ] 步骤 1:对比 `AuthPageUtil.js` 和参考项目。
执行:
```powershell
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`
**输入:**
- `lotteryTrend`
- `latestLotteryResult`
**输出:**
- 期数选项、走势图行、颜色标记、每 10 期分隔线、统计行、横向滚动规则按彩种与参考项目一致。
- [ ] 步骤 1:对比 8 个走势图页面和参考配置。
期望:
- 确认每个彩种的号码分区、蓝球规则、特别号列、统计行。
- [ ] 步骤 2:实现当前项目共享走势图渲染,或逐页完全对齐。
期望:
- 期数按钮为:`10期``20期``30期``60期`
- 每 10 期使用与参考项目粗细一致的分隔线。
- 红球为红色,蓝球为蓝色,特殊色只在参考项目使用时保留。
- 快乐8 不出现错误的“开奖号”表头,并正确展示 20 个号码。
- [ ] 步骤 3:静态验证 8 个页面。
执行:
```powershell
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:检查所有改动文件格式。
执行:
```powershell
git diff --check
```
期望:无空白错误。
- [ ] 步骤 2:搜索参考项目中当前项目不应误跳的本地路径。
执行:
```powershell
rg -n "zhuanjia\.html|duanzuhe\.html|shazuhe\.html|zhuanjiashoucang\.html" html utils public
```
期望:
- `zhuanjia.html` 不作为运行时目标出现。
- `duanzuhe.html``shazuhe.html` 要么是确认过的外链目标,要么已恢复本地等价功能。
- `zhuanjiashoucang.html` 不作为运行时目标出现,除非明确恢复。
- [ ] 步骤 3:浏览器手工回归。
期望覆盖:
- 登录、注册、找回密码。
- 首页导航和底部。
- 8 个走势图页面。
- 免费文章列表、详情、发布、收藏。
- 付费文章列表、详情、购买、预购、发布。
- 个人中心资料、签到、微信绑定、专家申请状态。
- 充值、提现、资金明细。
- 推广邀请和返佣页面。
## 执行顺序
1. 任务 1:锁定允许差异,防止缺失页面误跳。
2. 任务 2:补齐发布权限公共契约。
3. 任务 3:修正个人中心契约和重复 DOM 风险。
4. 任务 4:对齐登录、注册、验证码和推广绑定基础能力。
5. 任务 5:对齐免费文章流程。
6. 任务 6:对齐付费文章和购买流程。
7. 任务 7:对齐走势图。
8. 任务 8:对齐钱包流程。
9. 任务 9:对齐推广和分销页面。
10. 任务 10:跨模块回归。
## 自检结果
- 需求覆盖:覆盖 `docs/reference-project-function-diff-2026-07-07.md` 中记录的主要高风险差异。
- 占位检查:没有把“待定/以后实现”作为任务要求。
- 契约一致性:发布权限对象字段与参考项目 `PublishPermission.parseSummary` 保持一致。
- 范围检查:这是多批次功能等价修复,每个任务都可以独立验证,并且必须按顺序执行。