Commit Graph

24 Commits

Author SHA1 Message Date
Hermes Agent
3acda15527 fix(frontend): 视觉验收发现的问题逐条修复
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
P0 致命修复:
- 首页表单中段灰色不可见文字: hero-note(#e8edf7) 改为显式 #475569 可读色
- 首页上传区域空白虚线框: 补图标+说明+格式支持+CTA文案
- 结账页顶部裸 HTML class="wrap">: 缺少 <main 标签导致

P0 CTA层级:
- 首页双CTA: "直接做完整规划"从 btn-primary 改为 btn-secondary 形成层级

P1 信任感:
- 结账页补退款政策+支付方式+支付安全三栏
- 结账页删除 3 张冗余 trust-strip 卡片(原 6 张→2 张 form-proof)
- 结账页补"考试省份"必填星号

P1 定价页统一:
- CTA 文案统一: "选择付费审核"/"支付并启动方案生成"/"选择深度辅导"
- 价格单位统一: /次 /单 → 全部 /份

P1 导航对比度:
- global-nav-link 从 #b8c8e4 提亮到 #d8e4f8 (WCAG AA 4.5:1)

验证: pytest 1303 passed, ruff All checks passed
2026-06-27 23:16:26 +08:00
Hermes Agent
34dd51fa31 fix(a11y): label[for]+id关联 + form aria-label + 省份下拉断言修正
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
a11y 审计修复:
- 首页复核表单: 4 个字段全部补 label[for]+id 关联(省份/分数/选科/目标)
- 表单补 aria-label='免费复核表单'
- 修复前 input_no_label=1, form_no_name=1
- 修复后 a11y 审计: all_clear=true(lang/viewport/h1/heading无跳级/input全有label/interactive全有文本/form有名称/focus-visible CSS)

测试修正:
- test_public_landing_page_served: '<select name>' → 'name=' (因为现在 select 有 id)

验证:
- pytest admin/tests/test_web_public.py 20 passed
- ruff All checks passed
- 浏览器 a11y 审计 all_clear=true
2026-06-27 17:11:09 +08:00
Hermes Agent
4202eba208 feat(frontend): 三阶段18项前端优化全部完成
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
第一阶段(致命缺陷修复):
- 复核结果页: 真分享(navigator.share+clipboard兜底)+保存草稿(localStorage), 删除假wxhelp外链
- 通用状态组件库: portal-ui.css新增state-loading/skeleton/empty/error/toast/sr-only
- my-orders/my-reports接入skeleton占位+state-empty

第二阶段(核心功能补齐):
- C方案鉴权: my-orders/my-reports/compare-reports删除find_by_phone手机号直查,
  改为portal token验证, 堵死P0-2越权漏洞
- 首页表单4字段即时校验(province/score/subjects/goal) + portal info 3字段校验
- cwb页面从固定文案升级为基于crowd_db的三档真实建议(冲刺+20/稳妥0/保底-20)

第三阶段(产品化提升):
- 新增/score-line-query分数线查询页(从crowd_db读本科线)
- 新增/rank-estimator位次估算页(基于benchmarks插值)
- /data-query扩展为4入口(分数线/位次/政策/同分段)
- 报告资产页补复制链接+系统分享
- 全局导航移除my-orders/my-reports(C方案)
- 从所有导航删除越权入口

验证: pytest 1306 passed, ruff All checks passed, 浏览器逐页验证通过
2026-06-27 13:23:08 +08:00
Hermes Agent
34134443ec frontend: 补齐报告列表页 + 交付后引导 + 导航栏完善
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
新增功能:
1. /my-reports 报告列表页:手机号查询已交付报告+查看入口+空状态+返回首页
2. 导航栏增加'我的报告'入口(现为5个:首页/套餐/我的订单/我的报告/客服)
3. Portal状态页交付后下一步引导:下载PDF/在线查看/继续规划三选项(仅report_ready/completed阶段显示)

测试: 60 passed
浏览器复验: /my-reports 和首页导航栏真实可用
2026-06-26 19:18:14 +08:00
Hermes Agent
465336802c frontend: 第二阶段 - 我的订单页 + 客服入口 + 导航栏完善
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
新增功能:
1. /my-orders 页面:用户输入手机号查看订单列表
   - 表格展示:订单号/套餐/状态/手机号/创建时间/查看详情
   - 空状态:暂无订单时友好提示
   - 查询结果可直接跳转 Portal 状态页
2. 全局导航栏增加我的订单和客服入口
3. 客服入口:mailto:lon22@qq.com

测试:
- test_my_orders_page_served: 页面存在且可访问
- test_my_orders_lookup_by_phone: 手机号查询返回订单列表
- 全量前端测试: 59 passed
- 浏览器复验: /my-orders 和首页导航栏真实可用
2026-06-26 18:02:10 +08:00
Hermes Agent
092f8cc907 frontend: 五轮首页与复核页结构减法,逼近高信任付费服务页标准
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
改版主线:
- /review/start: 从系统运营页改成用户结果页(不再暴露 JSON/go_step1)
- 首页:省份改下拉,表单压缩为 3 字段并移出 hero 核心区
- hero: 副文案压缩为一句,去掉三张说明卡与了解流程链接
- trust strip: 4→3,右侧判断块压缩为一句风险+上传能力
- browser_vision 复验确认:说明书感已显著下降,结构已从功能堆叠过渡到决策引导

测试基线同步:
- test_web_public.py: 首页副文案/流程编号/说明卡断言更新
- test_web_public_review_flow.py: 复核页断言改为用户视角文案

文档:
- docs/FRONTEND_PRODUCTION_REMEDIATION_PLAN_2026-06-26.md 记录整改真相源
2026-06-26 12:30:43 +08:00
Hermes Agent
65422b53b2 feat(admin): 后台 routes + tests 多项增量改进
- routes: cases/orders/stats/ui/web_public 同步字段扩展
- stats.py: 统计聚合逻辑增强
- 14 个测试文件同步更新断言

dev-verify 1279 passed / ruff / mypy 全绿
2026-06-25 09:27:06 +08:00
Hermes Agent
2d26d96eaa fix: reduce portal and share exposure surfaces 2026-06-18 16:12:22 +08:00
Hermes Agent
9a8ad91216 fix: stop exposing portal tokens across payment URLs and storage 2026-06-18 15:04:46 +08:00
Hermes Agent
444fc8a530 fix: restrict portal report paths to trusted directories 2026-06-18 14:28:04 +08:00
Hermes Agent
246f21c7f2 feat(review): land unified remediation and rules evidence closure
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
2026-06-18 10:21:38 +08:00
Hermes Agent
f5e7098c50 fix(landing+pricing): A) consult form privacy note + B) pricing page copy sync
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
A) 首页咨询表单加隐私说明 (admin/routes/web_public.py):
  - 在表单标题下方加 .consult-privacy 框:
    '🔒 这些输入只用于判断要不要复核你的方案, 不会留底、不会用于生成方案、不会发邮件推销。
     如果你决定不进入付费方案, 提交的资料不会保存到我们的数据库。'
  - 在表单下方加 .consult-privacy-tail:
    '不会收到营销短信, 提交后你也可以随时要求删除已填资料。'
  - 新增 CSS: .consult-privacy (薄荷绿底+边框) / .consult-privacy-tail (灰色脚注)
  - 设计意图: 不抢眼但能看见, 用浅色背景与表单区分, 不影响主 CTA 视觉权重

B) 套餐页 /pricing 同步'复核免费 / 方案付费' 口径:
  - lead 文案加 <strong>复核现有方案本身免费</strong> (放在最前面)
  - consult-summary 内加 consult-reassure 框:
    '💡 如果你还没决定, 先做一次免费复核, 再决定要不要进入付费方案。'
  - summary 副卡加 summary-reassure:
    '🔒 还没下单前, 提交的基本情况仅用于判断是否需要复核, 不会留底。'
  - trust-proof 1 号卡: '先审计再决定' → '复核免费 / 方案付费'
  - trust-band 3 号卡: '合规入口可见' → '复核免费 / 方案付费' (新增回流入口)
  - 49元档 eyebrow: '快速校验' → '复核 / 风险' (强调只审不改)
  - 99元档 eyebrow: '完整规划' → '生成 / 完整' (强调生成动作)
  - 199元档 eyebrow: '深度辅导' → '生成 / 深度'
  - 49元档 desc: 加'不会重新生成志愿表 (生成需选 99 元)' 边界
  - 99元档 desc: 加'方案生成与详细报告在支付后启动' 边界
  - 199元档 desc: 加'在 99 元完整方案基础上提供多轮修订和深度解释'
  - 49元档 CTA: '先做快速审核' → '先做付费审核' (用'付费'反衬'免费复核')
  - 99元档 CTA: '立即开始完整规划' → '支付并启动方案生成'
  - 199元档 CTA: '了解深度辅导' (保持)
  - 49元档 features: 加'不重新生成志愿表(生成需选 99 元)' 边界
  - 199元档 features: 加'包含 99 元完整方案的所有交付'
  - FAQ 加 '复核是免费的吗?包含什么?' (明确边界: 复核免费/审核报告 49/完整方案 99起)
  - 99元 FAQ 加 '99 元是生成一份完整方案的价格, 不是查看价格' 避免误解
  - notice 提示: '先做一次免费复核' 引导 + 保留 49/99 路径建议

新增测试断言:
  - 首页: '不会留底' / '不会用于生成方案' / '不会发邮件推销' / '不会收到营销短信' (4 条)
  - 套餐页: '复核现有方案本身免费' / '复核免费 / 方案付费' / 'href="/#consult-box"' /
    '先做一次免费复核' / '先做付费审核' / '支付并启动方案生成' / '复核 / 风险' /
    '生成 / 完整' / '生成 / 深度' / '不会重新生成志愿表' / '支付后启动' /
    '复核是免费的吗?包含什么?' / '还没决定' (13 条)
  - 套餐页反向断言: '先做快速审核' / '立即开始完整规划' / '先审计再决定' / '快速校验' (4 条)

验证:
  - pytest 22 passed (test_web_public + test_order_status_page + test_web_public_alipay_sim_e2e)
  - ruff check: All checks passed
  - 真实 HTTP 端到端 17/17 断言 OK (A 6 条 + B 20 条旧移除+新命中)
  - Playwright vision 验证:
    A) 首页隐私说明: 上下双向布局, 浅色克制, 覆盖'用途/营销/删除'三要素 
    B) 套餐页: lead/eyebrow/CTA/FAQ 5 处引导回首页 全部对齐'复核免费/方案付费' 
2026-06-17 22:38:42 +08:00
Hermes Agent
81dbaddaea fix(landing): align copy to '复核免费 / 方案付费' (no 免费咨询 promise)
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
用户最新反馈: 首页不应承诺'免费咨询'; 复核现有方案是免费的, 完整方案
生成和深度辅导需在支付后启动。咨询入口只用于快速问询, 不是承诺
免费生成方案。

文案改动 (admin/routes/web_public.py):
- hero-note: '咨询本身免费' → '复核现有方案本身免费; 新方案生成与深度辅导在支付后启动'
- 咨询表单标题: '先告诉我们你的基本情况' → '告诉我们你的基本情况'
- 咨询表单副标题: '判断 + 适合路径' → '判断 + 说明后续可走步骤, 复核本身免费; 新方案生成与深度辅导在支付后启动'
- 当前目标 placeholder: '先审计现有方案' → '先复核现有方案'
- 补充说明 placeholder: '想先看风险' → '想先看有没有明显风险'
- 主按钮: '获取推荐路径' → '获取复核与推荐'
- 次按钮: '直接看套餐' → '直接看付费套餐'
- hero-trust 1 号卡: '先审计后规划' → '复核免费 / 方案付费'
- hero-points lead: '先做审核' → '先做免费复核'; '再决定是否进入完整规划' → '再决定是否进入付费的完整规划'
- 服务流程 01 步: '选择服务深度' → '先判断入口'  ('方案复核(免费) vs 完整方案/深度辅导(付费)')
- 服务流程 02 步: '避免在支付前被长表单劝退' → '选完整方案或深度辅导时, 先填最小信息后再支付'
- 服务流程导语: '比空泛地说智能系统已接入更重要' → '复核免费, 方案生成和深度辅导需付费'
- 底部 CTA 标题: '先看套餐, 再决定是否立即下单' → '已有方案? 先免费复核; 明确要做? 看付费套餐'
- 底部 CTA 副标题: '如果你已经明确要做完整方案, 可以直接进入 99 元方案页' → '如果已经拿到一版方案, 可先做一次免费复核; 明确要完整方案或深度辅导, 可直接进入套餐页'

测试更新 (admin/tests/test_web_public.py):
- 移除对'咨询本身免费' / '先审计后规划' / '先告诉我们你的基本情况' / '获取推荐路径' / '先看套餐' 的正向断言
- 改为反向断言 (确保旧文案已清除) + 新口径的正向断言
- 新增 9 条新口径断言: '复核现有方案本身免费' / '新方案生成与深度辅导在支付后启动' /
  '复核免费 / 方案付费' / '获取复核与推荐' / '直接看付费套餐' / '方案复核(免费)' /
  '深度辅导(付费)' / '已有方案? 先免费复核' / '告诉我们你的基本情况'

验证:
- pytest 22 passed (test_web_public + test_order_status_page + test_web_public_alipay_sim_e2e)
- 真实 HTTP 19/19 文案断言全部 OK (旧文案已清除, 新文案已上线)
- Playwright 截图 vision 验证: 5/5 触点对齐口径 (hero CTA / hero-note / 咨询表单 /
  hero-trust 1 号卡 / 服务流程 + 底部 CTA)
2026-06-17 22:11:31 +08:00
Hermes Agent
f420301571 fix(plan-b): align landing CTAs to 立即咨询/查看套餐 + fix mobile sticky bottom
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
A) 首页 hero CTAs 改成方案 B 原意:
  - 旧: 立即咨询 (secondary) + 先做快速审核 (primary)
  - 新: 立即咨询 (primary) + 查看套餐 (primary) — 两个并列主 CTA
  - hero-note 从'适合已经拿到一版方案' 改为'咨询本身免费, 不必先付款'

B) 资料页移动端关键操作按钮改为 fixed 底部:
  - 把 .wizard-actions 移出 <form>, 让它成为所有 step-panel 的同级元素
  - 移动端 (max-width: 980px) 用 position: fixed 而非 sticky
  - safe-area-inset-bottom 适配 iPhone 刘海/灵动岛
  - 主面板 padding-bottom: 168px 防止按钮遮挡最后内容
  - 桌面端 (desktop) 仍保留 sticky 行为, 不影响长内容阅读

测试覆盖:
  - test_public_landing_page_served: 更新断言验证两个主 CTA 均为 btn-primary,
    旧'先做快速审核' 已移除, 新'咨询本身免费' 文案已加入
  - test_info_page_wizard_actions_outside_form_for_sticky_bottom: 验证
    .wizard-actions 在 </form> 之后 (sibling 关系), 按钮文案齐全, safe-area 适配

Playwright 验证:
  - scroll=0/800/1500 时, wizard-actions 始终在 viewport y=622-844 (固定底部)
  - vision 验证: 顶部缺失项提示 + 底部 3 个主操作按钮 (上一步/下一步/保存草稿) 全部可见

测试结果: 22 passed (test_web_public + test_order_status_page + test_web_public_alipay_sim_e2e)
ruff: All checks passed
2026-06-17 21:50:06 +08:00
Hermes
38f74bd1f1 feat(portal): add payment-success intermediate page + status/info copy
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
After successful payment, the gateway now lands users on an
intermediate 'payment-success' page that explains next steps
(continue intake, or jump to status) before they continue into
the live status view. This is a product-experience improvement
over the old direct /status redirect and was already staged in
uncommitted web_public work; this commit lands the matching test
assertions and copies.

Changes:
- admin/routes/web_public.py
  * /portal/{token}/payment-success route + _render_payment_success_page
  * payment_return_page now redirects to /payment-success (303)
  * landing_page renders a 'consult' quick-intake card
- admin/tests/test_web_public.py
  * test_payment_return_redirects_to_payment_success_page
  * test_payment_success_page_served_after_paid_order
  * landing/pricing/info/status copy assertions
- admin/tests/test_order_info_form.py
  * assert the 'still need to fill' reminder renders
- admin/tests/test_order_status_page.py
  * test_info_required_status_page_emphasizes_continue_intake
  * assert '查看报告' / '查看当前进度' on delivered/processing status
- admin/tests/test_web_public_alipay_sim_e2e.py
  * accept the new /payment-success intermediate page
- tests/test_cli_doctor_phase3.py
  * drop unused pytest import (ruff F401)

Verification:
- focused alipay_sim E2E: 1 passed
- dev-verify full gate: all checks passed (ruff / mypy / pytest / coverage / benchmark)
2026-06-17 18:50:08 +08:00
Hermes Agent
a957b39cc0 feat(frontend): harden home CTA, Portal, public, and admin pages
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
- Landing: 主 CTA “先做快速审核” 升级为主按钮,移除多余的次按钮,添加 hero-note 与 hero-divider 让首屏节奏更稳
- Landing: hero-points 收口为 3 个差异化卖点,第 1 个加 lead 背景,右侧风险卡降饱和、避免压过主 CTA
- Landing: 删去旧“志愿方案审计更聚焦/先下单后补资料/站内可追踪交付”重复卡片
- Public: /privacy /service-terms /deletion-policy 接 portal-ui.css 并改成双段 panel + 列表结构
- Portal: /portal/{token}/notifications /portal/{token}/deletion-request 接 portal-ui.css 与新的工具条 / 表单字段化
- Admin: /admin/orders/new 接 portal-ui.css,添加“人工补录更直接/与后台订单主链一致/字段业务语义化”信任块
- Admin: /admin/notifications /admin/ops-alerts 接 portal-ui.css,添加 meta-grid 摘要并把 “payload / details” 改名为“通知内容摘要 / 详细上下文”
- Tests: 锁住 shared CSS、关键产品化文案、Portal 与 admin 页结构断言
2026-06-16 20:12:58 +08:00
Hermes Agent
a86bd08281 feat(frontend): polish landing, pricing, and checkout conversion pages
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
2026-06-16 17:14:51 +08:00
Hermes Agent
40ee7f4dc0 feat(frontend): complete local UI remediation for web, portal, and dashboard
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
2026-06-16 15:02:01 +08:00
Hermes Agent
9d239fe2c3 feat(t12): harden public checkout and add admin manual order page
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
2026-06-16 12:16:45 +08:00
Hermes Agent
c03ed7a4ba feat(web): tighten portal privacy and cleanup flows
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
2026-06-15 21:24:55 +08:00
Hermes Agent
7fabc23715 fix(t12): close payment delivery and governance remediation
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
2026-06-15 11:39:31 +08:00
Hermes Agent
7fe4ddcbc4 feat: harden T12 backup and portal workflows
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
2026-06-14 23:12:18 +08:00
Hermes Agent
b53e791aff feat: add payment return portal redirect
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
2026-06-14 19:40:02 +08:00
Hermes Agent
cb9728fb4e feat: complete web self-service mvp flow
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
2026-06-14 05:26:27 +08:00