feat(report): add browser-rendered report and PDF print
This commit is contained in:
@@ -2161,3 +2161,18 @@
|
||||
- 防复发:self-hosted staging 后台查询不得依赖 LocalPostgresDataClient 未实现的 Supabase builder、RPC 或 Admin Auth 能力;支付与套餐必须保持独立资源顺序。套餐与易支付配置契约必须显式拒绝 Supabase builder/RPC 并锁定参数化 SQL、404、原子函数写入和安全错误响应;支付配置必须默认折叠,后台必须拥有独立滚动容器且不得放宽聊天的全局 `overflow:hidden`。易支付配置读写测试必须同时覆盖数据库列和公开字段;创建订单只生成经公网 SSRF 校验的签名收银台 URL,商户密钥只能参与服务端签名,不得进入 URL、响应、日志或审计。对话支付默认关闭,UI 与创建订单 API 必须共享服务端开关;可用性测试不得提交伪订单或返回 URL、PID、密钥、headers/body。
|
||||
- 相关记录:BUG-122、BUG-123
|
||||
- 修复版本:`d44a414`(权限迁移),staging 部署 `1f44892a2cf210797e7dc74f49721a8f10c8849d`
|
||||
|
||||
## BUG-125 | 个人报告入口对不可用出生时间状态错误开放
|
||||
|
||||
- 状态:resolved(local,pending staging deployment)
|
||||
- 首次发现:2026-08-06
|
||||
- 最近更新:2026-08-06
|
||||
- 影响面:首页个人报告 CTA、`POST /api/reports` 出生时间门槛
|
||||
- 用户现象:资料流程已经完成、但出生时间仍为 `reported` 或 `candidate` 的用户会看到“生成个人报告”,点击后服务端必然返回 `422 birth_time_not_usable`。
|
||||
- 触发条件:用户有咨询会话和消息,`profileComplete=true`,但当前排盘时间尚未被用户采用或引擎确认。
|
||||
- 根因:首页只用资料完整度判断入口可见性,没有镜像报告 API 的 `accepted/confirmed + 有效 active time` 门槛;UI 与服务端各自正确但组合后形成误导入口。
|
||||
- 修复:首页复用既有 `isBirthTimeReadyForConsultation(profile)`,只有 `accepted` 或 `confirmed` 且当前排盘时间有效时才显示个人报告入口;服务端门槛保持不变,不把候选范围或填报时间伪装成已采用时间。
|
||||
- 验证:`frontend/tests/personal-report-entry.test.ts` 15/15 通过,新增回归直接覆盖 `reported=false`、`candidate=false`、`accepted=true`、`confirmed=true` 及缺失 active time 为 false;目标 TypeScript、ESLint 和 `git diff --check` 通过。
|
||||
- 防复发:任何报告出生时间状态扩展必须同时更新服务端事实门槛和客户端可见性测试;客户端不得仅以资料表单完成度推导报告可生成。
|
||||
- 相关记录:BUG-117、BUG-119
|
||||
- 修复版本:本次个人报告 staging 发布提交
|
||||
|
||||
Reference in New Issue
Block a user