Files
airz-uniapp/docs/零贷款零信用卡处理-20261016.md
T
hujun e5406c23a6 fix: 修复匹配详情提示及公积金可选路径问题
修复匹配详情中“用户自填未经核验”等来源说明,清理未参与项的橙色注意提示,修正贷款统计口径文案;补充公积金完整可选路径提取逻辑,确保明确无额外时长要求的公积金分支可正确识别并通过。
2026-10-19 16:11:59 +08:00

64 lines
11 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.
# 零贷款、零信用卡填写与计算口径
2026-10-16,本地实施完成,尚未发布后端或小程序。本轮用户明确要求修改,并确认贷款统一按全部贷款统计;不删除填写项、不更改用户已经填写的金额。本次没有访问生产、调用真实模型、重试正式评估或提交/推送代码。
## 用户可见行为
- 新表单将“信用贷款笔数”改称“贷款笔数”,统计信用贷款、房贷、车贷等全部当前未结清贷款。
- 明确填写贷款 0 笔时,空的欠款总余额、贷款月还款按无贷款计算;明确填写信用卡 0 张时,空的信用卡总额度、已用额度按无卡计算。对应空金额不扣完整度,不再因此要求补填或暂不评级;收入等其他实际缺失/异常仍按原规则处理。
- 金额输入继续保留,已填金额原样保存。数量为 0 却有正金额时,前端和新请求服务端均提示核对,不覆盖或清空金额。空数量、正数量、非法金额不会授权补零。
- 确认页对符合条件的空金额显示“不适用(无贷款/无信用卡)”。历史编辑缺少口径标记时保留原笔数和金额,用户检查全部贷款后点击确认口径;不会静默把旧信用贷款笔数当成全部贷款。
- 后台最新资料表列名改为“贷款笔数(旧资料可能仅含信用贷款)”,避免把新总数显示成信用贷款分项。精确口径仍以对应评估版本档案为准。
## 数据与兼容边界
API 继续使用 inputVersion=3 和 creditLoanCount 字段;新增可选 form.loanCountScope,唯一合法值为 all_loans。服务端只在请求明确携带时增加 loan_count_scope 到评估版本 JSON,原缺省请求形状及幂等重放保持;口径不写入没有对应列的最新资料表,不做数据库迁移。只读详情回显原始空值,不把计算结果写回填写资料,姓名/身份证/手机号的原脱敏规则不变。
新完整度、评级及产品目录显式冻结 zeroBalancePolicy=all-loans-zero-balances-v1。ProfileZeroBalances 仅生成计算副本:严格整数 0/驱动字符串 0、贷款 all_loans 标记及组内金额一致时,才将该组空金额推导为 0.00。已有金额不改;任一非法值或正金额均阻止该组推导。原完整度四个派生金额记为 not_applicable,不计入分母;评级与明确填写四个 0.00 等价,原阈值、权重不变。
主报告、产品规则、AI 条件事实和 PDF 共用这一口径。派生金额保留 self_reported 来源并携带固定 derivedFrom;新贷款笔数事实携带 loanCountScope。企业报告也展示已填的对应贷款笔数,以说明派生依据。模型可看到有效金额及来源,不把这些金额当作漏填;姓名、完整证件及手机号继续不外发。
总贷款笔数为正不能推断信用贷款分项。标准硬/软条件比较只在副本中将此分项保持未知;参考建议模式下,该未单独采集分项不阻断、不加减分、不要求补填。AI 和报告仍保留用户总笔数及其 all_loans 标记。总贷款为 0 可确定当前信用贷款也为 0。未修改银行原条件或伪造条件通过。
旧报告直接读原保存内容;旧执行、目录和检查点没有新标记时继续原计算,不动态加入零金额、口径或新提示。现有失败任务不应通过重试来验收本轮新规则,应在配套发布后使用新建评估。
## 验证与证据
- 新增后端 270 项零金额边界/完整度/评级检查、118 项规范化/回显/报告/产品事实/PDF及贷款分项回归,均为合成内存数据;包含真实红灯到绿灯证据。详情测试使用内存替身,仅证明转换及脱敏,不代替数据库持久化或鉴权验收。
- 既有融资等级 122、参考建议 59、AI 模板 89/分批 36、条件 68、grounding 81、年龄 55、地区 68、匹配 151、产品展示 20 项通过。包含套件不重复累计。数据库/真实模型在相关内存入口被阻断。
- 前端 15 个零金额场景、22 个地区提交检查、26 个资料服务场景、54 个省份检查通过。微信 29 页本地编译成功;编译后报告优先级 16 场景/32 断言通过。原报告优先级测试的既有城市依赖白名单不足,仅在私密证据副本补空 stub,仓库原测试未改。
- 首轮实施时尚未验证新规则的真实数据库/任务链路;下节追加了本机隔离持久化和实际任务入口验收。真实模型语义、常驻worker和微信真机仍未覆盖。
证据:D:/AAdesk/202609/airz-backups/zero-balances-20261016,含实施前 465 文件快照、增量差异、源码摘要、后端回归与前端编译回执。新增 1 个运行 helper,替换 11 个后端运行/配置/语言文件,修改 4 个小程序运行文件,新增 2 个 PHP 测试和 1 个前端测试;无删除文件或依赖安装。
## 追加验收:保存、任务、接口与小程序回包
用户“继续下一步”承接本地验收,仍先不发布。本轮新增后端测试 `tests/profile_zero_persistence.php` 与 `tests/profile_zero_http.php`,运行源码保持;所有资料、账户和产品均为合成数据。显式独立bootstrap在应用初始化前替换真实模型类,默认端点为不可用本机地址;每次实际任务入口另传假模型。未访问默认.env、正式数据库或真实模型。
- 持久化735项通过,26次显式假模型调用。覆盖个人/企业原值保存与编辑回读、12款合成产品多批任务、派生零事实/完整度/评级/匹配/PDF同源、重复提交和消费无副作用、矛盾值拒绝。第2批失败后首批检查点复用,当前配置变化不改冻结新口径;人工构造无新标记的旧冻结任务重试后继续原缺失和评级语义。
- HTTP605项、119次本机请求、5次显式假模型调用通过。覆盖个人/企业空金额与显式零四组、新编辑版本、匿名401/跨账户404、报告未完成409、矛盾金额422、旧版本回读与版本冲突。真实匹配回包使用eligibility=all、limit=3,含1款通过与1款明确不符,不把明确不符隐藏或改成符合。5份实际PDF的类型、私有缓存、签名、长度及摘要核对通过。
- 真实UTS/API/页面脚本离线回放:业务入口回包8组、最终HTTP回包5场景31组通过。金额null与显式0、原表单字段、all_loans、省份、幂等键和新旧版本保持;报告完整度与匹配版本一致。实际5份PDF字节通过小程序服务的校验/打开/临时文件清理替身,不触发额外HTTP或解释请求。
- 使用已有Poppler渲染业务PDF14页与5份HTTP PDF共23页,检查总览和重点金额页,未见明显重叠、截断或乱码,原版式的少量尾页留白保留。PDF中文文本提取不完整,未用该工具声称全文提取验证;内容同源由报告/HTML断言及渲染图核对。没有安装依赖。
- 257个后端application PHP和76个前端UTS/UVue摘要与本轮前/前轮编译收尾一致,本轮不重编译。两个新增测试无隔离bootstrap均先拒绝;PHP语法、增量空白检查通过。测试自身的早期夹具/分页/版本预期修正日志保留,失败和重复轮不累计。
本次验收发现的展示差异:档案详情忠实显示原始空金额“未填写”,资产区仍为“已记录”;同revision报告按“不适用”处理且不扣完整度。该验收轮只记录差异;后续用户授权的展示修复见下节,原值和旧报告始终保留。
所有测试完成后独立核对29张合成表全空、6个schema原触发器保留、Redis DB15无键;核验exe/完整命令行/创建时间/监听PID后正常关闭仅本轮MySQL和Redis,51678/51679端口释放,HTTP进程与模式文件已清理。证据和数据目录保留在D:/AAdesk/202609/airz-backups/zero-balances-e2e-20261016,包含最终日志、真实合成信封、PDF/渲染图、各套件回执和cleanup.json。各套件分开计数,不重复累计。
本轮未验证真实模型输出质量、微信真机与常驻队列worker;假模型实际任务入口不能代替这些验收。没有发布、生产访问、付费调用、正式任务重试、提交或推送。
## 档案展示统一(本地未发布)
用户“继续下一步”同意处理上述展示差异。修改前端records.uts和archive.uvue,复用档案页已有的完整度请求,不增加报告请求,也不改后端/用户填写内容。
- 仅从同assessmentId/revisionId已保存的evaluated v2报告读取completeness.items。四个固定金额键totalDebtBalance、monthlyLoanPayment、creditCardTotalLimit、creditCardUsedLimit各自只有唯一条目且state为not_applicable时,才作为展示依据。
- 档案行增加专用fieldKey和isMissing元数据;isMissing只由原金额为null判断。档案页用独立展示副本将对应空金额显示“不适用”,明确填写的0和正金额保持,原详情、编辑回填、provided计数与完整度均不变。其他空字段仍显示“未填写”。
- 缺items、非数组、重复/冲突键、其他状态、旧v1、未评定、无报告、读取失败均不补推“不适用”。不按表单笔数/口径重算历史,不借用另一版本的最新成功报告。读取失败保留原详情与手动重试入口。
- 原账户、页面离开和报告请求序号保护保留,成功或失败回包还需匹配当前详情id/revision;清页和每次读取时清理展示映射,迟到回包不能恢复旧账户或旧版资料。
新增scripts/test-archive-display.cjs,18组实际UTS/页面脚本内存回归通过,含修复前预期红灯及修复后绿灯;原零金额15场景、地区提交/详情22项保持通过。HBuilderX5.26微信29页本地编译通过。运行增量仅2个前端文件,74个其他前端运行文件与257个后端application PHP摘要保持;独立增量及测试审查未发现实质问题。没有安装依赖、生产访问、数据库或模型调用、发布、提交或推送。
证据:D:/AAdesk/202609/airz-backups/archive-display-20261016,包含before、红绿日志、微信编译日志、增量diff及verification.json。回归使用JavaScript环境模拟UTS和页面生命周期,不代替微信真机/浏览器视觉验收;本轮未重跑上节数据库/模型链路,前轮证据保留。
后续需配套发布后端并由用户重新编译发行小程序,新客户端会发送新口径字段,不能先接到不支持它的旧后端。后端应先发布、重载 PHP 与唯一 worker,再发行小程序;后端的旧客户端兼容分支保留。当前生产仍为上一轮 20261016-report-diagnostics-r1,本轮没有发布授权或生产变更。