Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
3.3 KiB
3.3 KiB
Implementation Plan: Portal Payment Page Hardening
Branch: main | Date: 2026-02-04 | Spec: docs/seed_verification.md
Input: 前端支付页仍含 DEV 模拟逻辑,支付错误提示/加载与轮询节流不足,金额/商品信息展示不完整。
Summary
清理支付页 DEV 模拟逻辑,增强支付失败与加载态提示,补全金额/商品信息展示,并对状态轮询做节流,确保真实支付链路稳定可用。
Technical Context
Language/Version: Vue 3 (Vite)
Primary Dependencies: Pinia, Vue Router, PrimeVue
Storage: PostgreSQL(后端服务已就绪)
Testing: 前端页面流验证;后端 go test ./...(规则要求前端改动需二者并行)
Target Platform: local/staging
Project Type: Web application
Performance Goals: 减少轮询负载,提升用户反馈
Constraints: 遵循 backend/llm.txt、前端接口涉及需跑页面流 + go test;不手改生成文件
Scale/Scope: 仅 Portal 支付页(PaymentView.vue)及相关 API/状态展示
Constitution Check
- 所有前端接口相关改动需完成页面流验证和后端
go test ./...方可归档。 - 禁止保留 DEV-only 模拟逻辑于生产代码。
Project Structure
frontend/portal/src/views/order/PaymentView.vuefrontend/portal/src/api/order.js(若需补充错误/数据处理)frontend/portal/src/utils/request.js(如需请求拦截/错误提示,视需要)
Structure Decision: 仅修改支付页与关联 API,避免全局侵入。
Plan Phases
- Phase 1: 行为清理 —— 移除/隔离 DEV 模拟支付逻辑,确保真实 pay 调用。
- Phase 2: 体验增强 —— 添加支付中/loading/错误提示;补全金额、商品标题展示;轮询节流与完成后停止。
- Phase 3: 验证 —— 前端页面流支付冒烟 + 后端
go test ./...。
Tasks
- T101 移除或显式守护 DEV 模拟支付按钮(生产隐藏/剔除),确保真实 pay 请求。
- T102 支付提交/轮询的加载与错误提示:提交中禁用按钮,失败 toast/提示,并在错误时停止 loading。
- T103 订单金额/商品信息展示:优先用 status 返回的
amount_paid/amount_original与content_title,保持 0 元也可显示。 - T104 轮询节流与完成停止:调整轮询间隔/次数,支付成功即停止,避免过度请求。
- T201 前端页面流验证支付(登录→Checkout→Pay→Status paid)。
- T202 后端回归测试
go test ./...(与 T201 同时满足)。
Dependencies
- T101 完成后执行 T102~T104。
- T104 完成后执行 T201;T201/T202 完成后归档。
Acceptance Criteria
- 支付页无 DEV-only 模拟逻辑暴露;“立即支付”触发真实
/pay,状态能更新为paid。 - 支付/轮询有明显 loading/错误反馈;轮询成功后自动停;按钮在提交中禁用。
- 金额与商品标题在支付页正确显示(含 0 元订单)。
- 前端页面流验证通过(登录→下单→支付→订单状态 paid);后端
go test ./...通过。
Risks
- 轮询过度或停止条件遗漏导致请求风暴;通过节流与成功后清理计时器规避。
- 错误提示未覆盖网络异常;需在提交与轮询 catch 中统一处理。
Complexity Tracking
暂无。