Files
airz-uniapp/docs/原型04-10页面改造与跳转方案.md
T
hujun 7c252fc730 feat(融资): 新增产品对比页面及相关接口实现
新增产品对比页面 compare/compare,支持同一评估下最多3个产品的横向对比,展示额度、期限、利率、适用条件等核心指标及匹配详情。
新增 matches.uts 服务层,封装匹配列表、详情、公共产品查询接口。
新增 account 分包的 latest-report.uts 服务,用于查找用户最新成功报告。
调整个人中心页面,将“评估记录”改为“开始评估”,新增最近报告直达功能。
更新文档,标记匹配相关接口及原型07、09页面已实现,调整页面数量至26页。
移除 finance 分包中旧的 fetchMatches、fetchProduct 模拟数据接口,统一使用正式API。
2026-09-28 14:56:46 +08:00

208 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 原型04—10页面改造与跳转方案
版本:1.3。日期:2026-09-28。依据:[原型图](原型.jpg)、[开发文档](开发文档.md)、[数据契约](需求与评估结果数据契约.md)。本轮用户明确要求补齐04—10页面并随后进入产品匹配开发;此前“对比/PDF另行排期”的范围限制,自本方案起由下列正式任务覆盖。
## 1. 范围与落地原则
- 04、05是同一产品匹配详情的不同判定状态,06是同一详情页的产品信息栏;复用现有product/product,不机械新增三个页面。
- 07产品对比、10下一步行动新增两个融资分包页面。compare已注册,当前pages.json共26页;next-step仍待开发注册,最终目标27页。
- 08复用assistant/assistant;09复用report/report并改为“评估概况/匹配结果/改善建议”。03匹配列表作为04—10的必要入口一并改造。
- 保留蓝白主色、卡片、银行标识、正反理由分组和清晰底部行动区。数据必须来自本人本次评估;原型的92%/B+不作为默认值。
- 首版使用既有三态准入:符合已知条件、条件不符、待核实。score=null,不展示匹配百分比;稳定顺序采用productId升序并注明不代表优劣。真实评分、运营优先级另发版本化策略。
- 推荐依据和注意事项各默认最多三条,有多少显示多少;其余可展开。阻断条件不能被截断后丢失,不能把产品一般优势当作个人推荐依据。
- 申请范围仍是资料准备与引导,按钮使用“准备申请”;不接银行申请、不提交资料、不宣称受理成功。保存报告表示已保存至本人历史,PDF导出是额外下载能力。
- 不恢复草稿,也不编辑历史评估。重新评估进入空白个人/企业表单;提交后获得新的assessmentId,旧报告不变。
## 2. 逐页改造清单
| 原型 | 页面实现 | 页面内容与行为 | 任务 | 当前状态 |
| --- | --- | --- | --- | --- |
| 04 单家银行AI解释 | product/product,tab=explanation,eligible状态 | 银行/产品名、条件判定、已满足条件、注意事项、证据来源、AI解释、对比/准备申请 | PRODUCT-004 | 基础已接规则理由/证据/历史快照及对比;单产品AI解释和行动页待开发 |
| 05 其他银行不推荐解释 | 同一页面,ineligible或unknown状态 | 不符条件与待核实项分组;已满足部分称“已满足条件”;查看资料/询问AI,不建议直接申请 | PRODUCT-004 | 已接不符/待核实及证据;AI咨询待接;服务端判定决定状态 |
| 06 产品详情 | product/product,tab=details或conditions | 额度/期限/年化利率范围、还款方式、材料、渠道、适用对象、来源及版本;独立显示当前可用性 | PRODUCT-003、PRODUCT-004 | 已接三栏、公共/历史双模式及当前可用性;真实机构资料待录入 |
| 07 同类产品对比 | 新增compare/compare | 同一评估2—3个产品列式对比,首列指标固定,移动端横向滚动;条件判定、金额/利率/期限、材料、差异依据 | PRODUCT-005 | 基础完成,本地联调通过;真实产品及平台待验收 |
| 08 AI助手延伸问答 | assistant/assistant | 本次评估及选定产品上下文卡、按实际判定生成快捷问题、持久会话、分页、重试、返回报告/产品 | CHAT-001—004 | 页面已有;真实上下文问答待接 |
| 09 我的融资报告 | report/report | 三栏内容、资料准备状态、完整度、最多三个候选及查看更多、改善项、PDF下载、重新评估、下一步行动 | REPORT-004、REPORT-005 | 三栏/历史候选/改善证据基础已联调;PDF及行动入口待独立任务 |
| 10 下一步行动 | 新增next-step/next-step | 准备申请、查看已保存报告、下载PDF、优化资料、咨询AI、回首页;依结果决定可用行动 | REPORT-006 | 新增任务,未开始 |
### 03 匹配列表入口(必要配套)
1. 入口必须携带assessmentId。无编号时引导选择历史评估或开始评估,不能展示固定产品。
2. 默认eligible最多三条;“查看更多”读取同一冻结结果分页。独立提供“条件不符”“待核实”分组及各组真实计数。
3. matching=unavailable时说明尚未执行,completed且零候选说明已执行但没有候选,failed从任务状态页展示;三者不可共用“完善资料再试”。
4. 卡片进入产品解释栏;“加入对比”不触发卡片跳转。选择限2—3项,选择ID仅在同一账户会话/评估的内存保留,跨页通过productIds传递;切换评估或会话清空内存选择,对比刷新按URL重新鉴权。
5. 没有评分时移除当前score百分比和按score排序;金额和利率使用范围。金额、利率排序若后续提供,只改变展示顺序,不改历史rank。
### 04/05/06 产品详情的两种模式
**本次评估模式:** assessmentId、productId均存在,读取匹配详情快照。顶部三栏“AI解释/产品详情/申请条件”,默认AI解释;不符和待核实项展示明确状态及原因。未核验信息旁标来源。解释失败保留确定性理由,提示AI解释暂不可用,不导致整个页面空白。
**公共产品模式:** 只有productId(兼容旧id),读取当前产品接口;只显示产品详情/申请条件,没有个人理由、排名或匹配程度。评估上下文请求404/失败时禁止静默退回公共模式。
产品快照中的额度/利率/期限保持评估时版本。读取时发现当前产品下架/过期,另加状态条并禁用准备申请;查询当前状态失败也不能假定可用。允许查看历史解释、参与带状态标识的历史对比或咨询AI。
金额以万元范围展示,期限以月、年化利率以百分比范围展示。缺还款方式/审批时长/渠道等资料时显示“未提供”,不得采用原型示例值。银行Logo只使用已提供或可合法使用的真实素材;缺失时用文字简称,不生造银行标志。
“准备申请”仅当eligible且currentAvailability=available时进入10的准备区域;“查看同类产品对比”进入07并保留当前产品选择;“我有疑问,咨询AI”进入08,展示上下文而不自动发送消息或调用模型。
### 07 产品对比
- 按productIds顺序展示2—3项,使用同一assessmentId的冻结详情。每列显示判定与当前可用状态;不同状态可对比,但不符/待核实列不出现申请按钮。
- 对比行包括需求覆盖结果、额度范围、期限范围、年化利率范围、适用对象、已满足/不符/待核实条件、还款方式、材料、渠道和来源。相同单位、缺失标记统一。
- “回到本次匹配”返回已有结果,不重跑模型;“重新评估需求”另行进入空白表单,绝不把返回结果伪装为重新匹配。
- 只选1项则展示补选入口;超过3项、重复ID、混入别的评估产品均明确拦截。任一详情读取失败时指出具体列并重试,不把剩余产品当完整对比。
- H5刷新从URL中的ID集合恢复并重新鉴权,不能仅依赖上页内存。手机横向滚动可见列标题;桌面并列展示,文字与币种不裁切。
### 08 带上下文的AI助手
- 有assessmentId时,只使用本人已成功报告和指定产品的冻结理由;可不指定产品、指定单项或指定对比的2—3项。
- 快捷问题按实际状态生成,例如“这些条件为什么符合”“哪些条件不满足”“还需要核实哪些资料”“两项产品有哪些差异”;无匹配时不出现“为什么推荐这家银行”。
- 输入问题后由用户发送;仅打开页面不创建模型请求。失败重试保持消息requestId,切换账号清理页面内容。
- 普通会话继续使用scene=assistant,assessment_id=NULL;计划随CHAT-001增量迁移新增context_assessment_id及context_data,前者保存本人评估引用,后者保存产品ID及报告摘要引用。当前库尚无这两列,本轮不迁移;已有普通会话两列为NULL,新增归属索引/约束需先检查历史数据,不复用或覆盖正式评估的analysis_context。
- chatId恢复时以服务端已保存上下文为准;URL与会话上下文冲突拒绝,不静默改绑定。失效上下文提示重新选择,不能回答成另一份报告。
### 09 报告三栏与PDF
- 评估概况:冻结需求、完整度、三种准备状态、来源与生成时间、核验边界;不显示B+或审批概率。
- 匹配结果:复用03的摘要与状态,最多三个候选、全部结果入口和产品解释跳转;没有候选时仍可查看不符/待核实原因。
- 改善建议:由准备依据、已保存AI建议和产品证据组成;建议展示关联字段/产品,不保证改善后获批。没有依据时明确暂无额外建议,不凑三项。
- 顶部下载PDF,底部“重新评估/下一步行动”;继续提供历史入口。三栏切换不触发新分析,刷新保留tab并重新读取本人报告。v1报告保留兼容提示,不补造v2指标。
- PDF从已保存报告及产品快照生成,不重跑DeepSeek或按现价替换历史值。包括需求、概况、匹配状态/候选、理由、建议、版本、生成时间和免责声明;不导出身份证、手机号、自由用途说明等身份内容。
- H5首版采用鉴权流式下载,无公开永久链接,不新增报告或导出表。需要的中文字体/PDF引擎在REPORT-005实施时做依赖评估并锁定;缺引擎返回明确不可用,不能发空PDF。
- 用户主动下载时才生成文件;PDF失败允许重试,不影响已保存报告。微信内浏览器受限时给出可执行提示,不显示虚假下载成功;下载后本地文件由用户自行保管。
### 10 下一步行动
| 行动 | 可用条件 | 实际行为 |
| --- | --- | --- |
| 准备申请 | 已选择本次eligible产品且当前可用;未选时先回匹配列表选择 | 在本页准备区域展示产品、材料、来源和机构办理说明;不收集并提交申请 |
| 查看已保存报告 | 本人成功报告 | 返回09,说明报告已在历史中保存,无需重复保存 |
| 下载PDF | REPORT-005能力可用 | 调用同一鉴权导出;错误保留页面状态 |
| 优化资料/重新评估 | 本人报告可读 | 先解释需要完善的字段,点击后清空当前流程内存,进入同类型空白表单;旧记录不可编辑 |
| 咨询AI | CHAT真实接口可用 | 进入08并携带当前评估及可选产品;不自动发消息 |
| 回首页 | 始终可用 | reLaunch首页,不丢失已保存的历史 |
不能申请时仍能看报告、优化资料或咨询;不展示假成功、假跳转或尚未接通的银行按钮。提供真实机构外链前需产品资料有来源且按渠道允许范围处理,首版不默认加入外链申请。
## 3. 路由、参数与返回规则
以下路由统一以 `/packages/finance/` 开头。ID为正整数十进制字符串,不携带手机号、Token、完整报告JSON或自由文本问题。
| 页面 | 路径和查询参数 | 校验与默认 |
| --- | --- | --- |
| 03 | matches/matches?assessmentId=A&group=eligible | A必填;group允许eligible/ineligible/unknown,默认eligible |
| 04/05/06 | product/product?assessmentId=A&productId=P&tab=explanation&from=matches | tab为explanation/details/conditions;带A必须读匹配快照;无A默认details;旧id仅作productId兼容,冲突时拒绝 |
| 07 | compare/compare?assessmentId=A&productIds=P1,P2,P3 | A必填,正式对比2—3项;重复ID直接报错,不静默去重;0/1项仅补选状态;不能跨评估 |
| 08 | assistant/assistant?assessmentId=A&productIds=P1,P2&chatId=C&from=compare | A可选;productIds要求A;chatId可选且归属/上下文需一致;从首页进入允许无评估的普通问答 |
| 09 | report/report?assessmentId=A&tab=overview | tab为overview/matches/improvements,默认overview;v1能力不足时解释原因 |
| 10 | next-step/next-step?assessmentId=A&productId=P&section=prepare | A必填,P可选;section为actions/prepare,默认actions;无P的prepare引导选择,不猜测产品 |
`from`仅接受matches/product/compare/report/next-step/archive等白名单枚举,用于返回体验;禁止接受任意returnUrl。优先navigateBack返回原页面及滚动位置;冷启动/刷新后无前页时:产品/对比→本次匹配,助手→本次报告(无A则首页),10→本次报告,报告→历史。鉴权失效转登录,仅保留白名单页面与ID参数,重新登录后必须再校验归属;跨账户404不可自动切换到最新评估。
```mermaid
flowchart TD
A[提交评估] --> B[分析状态与重试]
B -->|成功| R[09 报告 overview]
R -->|匹配结果| L[03 本次匹配列表]
L -->|符合已知条件| P[04 产品解释]
L -->|条件不符或待核实| N[05 原因解释]
P <-->|切换栏| D[06 产品详情与条件]
N <-->|切换栏| D
L -->|选择2至3项| C[07 产品对比]
P --> C
C -->|查看某项| P
P --> Q[08 AI助手]
N --> Q
C --> Q
R --> Q
R --> S[10 下一步行动]
P -->|符合且当前可用| S
S -->|查看已保存报告| R
S -->|咨询| Q
R --> F[鉴权PDF下载]
S --> F
R -->|重新评估| A2[空白表单→新评估]
S -->|优化资料| A2
```
图中的04/05/06为同一路由的内容状态;对比返回某项时必须依据服务端判定进入04或05,不能因来自对比页统一标成推荐。
## 4. 接口与数据依赖
| 接口 | 状态 | 用途与约束 |
| --- | --- | --- |
| GET /api/v1/assessments/:id/status | 已实现 | 状态/重试边界,不把queued当模型运行 |
| GET /api/v1/assessments/:id/report | 已实现自填v1/v2 | 09/10真实来源;产品区块随匹配扩展,不回填旧报告 |
| GET /api/v1/assessments/:id/matches | 已实现 | 03/09,三态分页、默认limit=3;既有契约字段不变 |
| GET /api/v1/assessments/:id/matches/:productId | 已实现 | 04/05/06,以及07每次最多读取三项;本人成功记录、本次冻结产品,404不得回退公共数据 |
| GET /api/v1/products/:id | 已实现,会员Bearer | 06公共模式;不含个人判定及理由,当前资料与历史快照分开 |
| POST /api/v1/assistant/chats | 计划新增 | contextAssessmentId:string或null、contextProductIds:string[]、requestId;服务端校验同一评估和产品快照,不接客户端报告正文 |
| GET/POST /api/v1/assistant/chats/:id/messages | 计划新增 | 08消息分页、提交与幂等;上下文由会话固定 |
| GET /api/v1/assessments/:id/report.pdf | 计划新增,REPORT-005 | Bearer鉴权;成功application/pdf,Content-Disposition安全文件名、no-store;401/404/409/503为JSON错误;失败不生成报告或调用模型 |
PDF接口owner校验先于渲染,未完成返回409 REPORT_NOT_READY,格式不支持409 REPORT_FORMAT_UNAVAILABLE,能力不可用503 REPORT_EXPORT_UNAVAILABLE。仅由受控模板渲染,用户文本转义,禁止任意HTML/外部图片URL触发文件或网络读取。客户端按状态码和Content-Type区分PDF与JSON,不把错误响应另存为PDF。
对比首版复用详情接口,最多三个并行请求,全部绑定相同assessmentId及冻结结果版本;不新增对比表或通用批量查询接口。10由报告和产品结果组合,不新增贷款申请表或申请状态。
## 5. 开发顺序、编号与工作量
| 次序 | 交付 | 任务 | 门槛 |
| --- | --- | --- | --- |
| 1 | 本文及规则口径;纯规则计算基础 | PRODUCT-001、PRODUCT-002 | 使用既有契约,不需要真实产品,不连接生产匹配 |
| 2 | 产品发布预检、字段/来源/规则、真实产品录入与公共查询 | PRODUCT-003 | 可先开发校验与后台;真实发布依DEC-PRODUCT |
| 3 | 冻结目录/规则、匹配聚合排序、证据模板、任务接入和读取API | PRODUCT-002、REPORT-002/003 | 与现有报告事务、重试快照兼容;空目录仍unavailable |
| 4 | 03及04/05/06页面、单产品解释失败降级 | PRODUCT-004 | API和真实快照可读取;合成测试与正式数据分离 |
| 5 | 07对比及09三栏 | PRODUCT-005、REPORT-004 | 同评估ID/同快照语义、历史不变 |
| 6 | 08真实问答、10完整行动入口 | CHAT-001—004、REPORT-006 | 无真实能力时不伪造问答或申请 |
| 7 | 09/10 PDF导出、整体导航和渠道验收 | REPORT-005、RELEASE-001/002 | 中文分页、鉴权、手机导出能力验证 |
新增稳定任务三个,保留旧60个编号,不重排:PRODUCT-005(对比,1.5—2.5人日)、REPORT-005(PDF,2.5—4人日)、REPORT-006(下一步行动,1—2人日)。合计新增5—8.5工程人日;原69—117是历史基线,不是当前剩余工期。原有任务扩展的页面/接口工作在实施前复估,不用这三项增量虚构整体完工日期。任务主台账与开发文档同步为63项。
## 6. 图片与视觉资源约定
用户指定生成方式:`C:\Users\JUN\Desktop\img2-right.py`。已检查其参数与流程:本地参考图转data URI→异步提交→按task_id轮询→下载输出;支持--prompt、--model、--resolution、--size、可重复--image、--output、--poll-interval及--timeout。凭据由脚本现有私密配置机制读取,文档和仓库不复制密钥。
| 位置 | 方案 |
| --- | --- |
| 银行标识 | 使用真实授权素材或文字简称,不使用生成图片伪造银行Logo |
| 理由序号、tab、表格、完整度图、PDF/行动图标 | 复用AppIcon及组件实现,保持文字可访问和可复制 |
| AI助手头像 | 优先复用现有机器人素材;确需新姿态/统一风格时用指定脚本、现有素材作参考 |
| 无候选/尚未匹配等空状态插图 | 页面实施时确认确需位图再用指定脚本;不把错误说明或数据数字烧进图片 |
本轮不生成图片、不调用生图服务。后续生成先用合成内容/现有公共视觉素材,不上传用户评估资料;输出放对应分包static目录并核对分辨率、透明边缘、实际包体和H5/小程序显示。脚本属于用户本机工具,不复制其私密配置到项目,也不覆盖脚本。
## 7. 验收清单
- 04—10均有入口、返回和冷启动兜底;手机返回/刷新不丢assessmentId,不跳到其他评估。
- 推荐/不符/未知按服务端状态展示,理由不足不补造、全部阻断依据可查看,解释失败仍有规则理由。
- 07金额范围精确转万元,缺值不同于0,最多三列;下架产品保留历史并显示当前不可用。
- 08上下文归属检查、快捷问题与结果一致、打开页面不自动发问;跨账户/失效上下文不串会话。
- 09三栏刷新、旧v1兼容、无匹配/零候选区分;下载PDF与屏幕冻结数据一致,401/错误不能保存成PDF。
- 10没有银行申请提交;优化资料只创建新评估,历史和原报告不变;无草稿恢复。
- 真实产品/渠道未就绪时只使用合成样例验证,不发布示例产品,不把原型中的固定排名与等级当实际结果。
- 普通手机H5、桌面H5、微信内浏览器分别记录;PDF中文分页、长理由、无产品、历史下架、大字号/横向表格需要独立证据。
## 8. 2026-09-24 本轮落地与剩余边界
03列表与04/05/06三栏已使用正式只读API,报告提供入口;卡片不使用模拟百分比,未知与不符单列。公共模式不展示个人匹配,带assessmentId始终读取本人快照,失败不降级。单产品AI解释暂为not_requested;“查看资料准备说明”只切到条件栏,10页尚未创建。已验证手机/桌面、刷新同一评估、三态详情、公共资料、无ID引导及越权。
当前返回会重新读取首屏,不保证保留原滚动位置;group/tab按URL初始参数恢复,栏内切换尚不写URL;登录失效返回登录但尚无原路恢复。from尚不参与导航决策,不接收returnUrl。后续按第3节完善导航体验。07对比、08上下文助手、09三栏/PDF、10行动保持未开始/待开发,不将基础接入等同全04—10验收。
## 7. 2026-09-28 原型07实施记录
compare/compare已注册,当前26页。列表加入对比阻止卡片冒泡;最多选择3项且保留顺序,可跨三态分组选择;详情带本次选择进入对比。补选/返回匹配带原ID集合,详情返回优先navigateBack,冷启动from=compare返回同次对比,其他来源回本次匹配;from按白名单校验。列表返回首屏及登录后自动原路恢复仍待完善。
每列读取本人冻结详情并校验assessmentId/产品ID;列间比较resultVersion、catalogSnapshotId、ruleVersion、orderingPolicyVersion。版本冲突、404和网络失败都不会补用公共资料;单列可重试,不完整结果明确提示。重复或超过3项、非法ID不发请求。0/1项提供补选,移除通过redirectTo替换URL,刷新不恢复已移除的ID。
首列在横向滚动区外固定;各行等高,长文本/表头内部纵向滚动,避免错行和长标题遮挡。桌面列宽扩展到可用空间;App保留受支持的rpx尺寸。金额仍精确转万元,缺失范围显示未提供;状态和三类理由直接来自规则结果,无新增评分或AI生成解释。
本地验证和剩余边界见[开发进度6.16](开发进度.md)。07基础不代表08上下文助手、09报告三栏/PDF、10行动页完成。
## 9. 2026-09-28 原型09三栏实施记录
report/report的overview/matches/improvements已接现有报告与匹配只读接口。切栏使用redirectTo更新URL,刷新重新鉴权,读取失败不跳最新评估;概况不提前请求产品。完整度进度条只用已保存百分比;生成时间按客户端当地时间展示,无时间标“未记录”;旧v1不補造需求或评分。没有候选与未执行匹配分别提示。
匹配栏默认eligible前3项,改善栏分别读取ineligible/unknown前3项,各有完整列表和产品详情入口,不把摘要当全部结果。关联产品证据直接展示规则理由、字段值和来源;AI改善文字保留报告中的字段/准备依据标签。读取时核对报告与列表的版本、目录标识及三态统计,异常保留其他可用区块并单独重试。
“重新评估”选择主体后清空流程内存进入空白表单,历史报告不编辑。PDF、下一步行动及上下文问答按钮待对应能力完成后接入。26页、63任务编号和历史估时不变;REPORT-004整体保持开发中,具体验证/剩余边界见[开发进度6.17](开发进度.md)。