fix: 修复匹配详情提示及公积金可选路径问题

修复匹配详情中“用户自填未经核验”等来源说明,清理未参与项的橙色注意提示,修正贷款统计口径文案;补充公积金完整可选路径提取逻辑,确保明确无额外时长要求的公积金分支可正确识别并通过。
This commit is contained in:
hujun
2026-10-19 16:11:59 +08:00
parent c95482a0f3
commit e5406c23a6
75 changed files with 31813 additions and 107 deletions
@@ -0,0 +1,12 @@
# 省份单选与地区事实实施记录
目标:按照用户最终确认,仅选择全国省级地区,点选即完成;省份不能冒充具体城市。
授权:本地修改及验证;不部署、不新增付费模型调用、不提交或推送。
- [x] 定向回归:原南京显式城市代码被拒/旧提交仅映射五城已复现;最终改用 `tests/product_region_facts.php` 验证省份配对、历史兼容、冻结事实、模型请求、企业资料和报告标签。
- [x] 同源数据:`docs/data/city-options.json` 保存34省级代码名称,历史城市数据仅用于回填所属省份;`scripts/generate-city-options.py` 生成前端地区服务及后端PROVINCES,保留原五城CITIES。
- [x] 后端:可选provinceCode只随版本保存,写user_info前移除;新regionFactsPolicy冻结城市和省份名称;旧快照不补新事实。
- [x] 前端:`AssessmentProvinceSelect.uvue` 单层34省列表,取消不选默认值;填写/确认/详情/理由展示省份中文,历史城市转换为省份。
- [x] 验证:690项PHP、108项UTS、18项受控H5检查,微信29页编译;独立审查发现详情标签赋值位置问题后已修正并增加新旧详情回归。
- [x] 交接:证据存 `D:/AAdesk/202609/airz-backups/city-options-20261015`,保留既有改动及原始历史评估记录;无正式库/真实模型/真机/部署验收。
@@ -0,0 +1,50 @@
# 自填资质参考建议实施计划
> 执行方式:当前会话逐项实施并验证;用户已授权本地后端配套修改,不再重复询问,不提交、不推送、不发布、不调用真实模型。
**目标:** 保留全部小程序填写项和保存数据,默认自填资料真实,未采集或精度不足的细项不补填、不阻断参考建议。
**架构:** 新评估目录冻结 `profileAdvicePolicy=self-reported-profile-advice-v1`;历史目录无标记时继续旧语义。AI仍返回pass/fail/unknown,服务端将已完成的unknown视为未参与参考筛选,不伪造pass或加分。职业与单位仅在新策略白名单外发,身份和联系字段保持排除。
**技术栈:** PHP7.4 / ThinkPHP5;纯内存测试,隔绝数据库与真实模型。
**依据:** 用户本轮确认的三点及 docs/新会话交接.md 历史状态。
## 约束
- 不修改小程序运行文件、银行原文、产品配置、完整度或融资等级公式。
- 任一完整路径满足即可;路径内必要条件仍须同时满足。不能以未知为零或把部分满足当整体通过。
- 明确不符、配置损坏、待处理及超范围继续阻断;历史报告、冻结任务和检查点不补入新策略。
- 姓名、完整身份证、手机号不外发;不从证件推导性别,不从省份猜城市。
## 任务一:冻结策略与匹配
文件:后端 ProductMatching.php、ProductAiConditions.php,新增 tests/product_profile_advice.php。
- [x] 新增行为用例并运行,确认旧实现会失败:
```php
$catalog=ProductMatching::freeze($rows,$dictionary,'personal',$at,true,true,true,true);
adviceCheck(($catalog['profileAdvicePolicy']??null)==='self-reported-profile-advice-v1','new advice policy frozen');
```
- [x] capture为新资质评估开启末位opt-in参数;无标记目录不变。策略非法或非profileOnly拒绝。
- [x] 新策略unknown的missingFields固定空数组,证据保留unknown;已完成unknown不参与硬条件阻断或软加分。待处理、超范围及配置异常继续unknown。
- [x] 标准规则使用自填资料做参考比较,来源保留self_reported;当前表单未采集的标准细项只在缺失时不参与筛选。已有明确不符仍fail,格式异常与表单缺填仍保留。
## 任务二:事实、提示词与模板
文件:后端 AssessmentNeedsReport.php、ProductAiTemplates.php、ProductAiBatches.php,以及任务一测试。
- [x] 增加职业occupation与单位employer白名单,长度分别100/50字符,拒绝控制字符和HTML;仅新个人策略外发。主报告和条件使用同一字段引用。
- [x] 提示用户自填默认真实、按原粒度判断;unknown不补填;模板unknown不展示,不将模型不可见视为用户漏填;职业单位文本仅作数据,不执行指令。
- [x] 新策略拒绝unknown缺失清单及unknown适用模板;批内占位同步空missingFields,最终仍全量校验。
- [x] 用假输出验证报告解析、存储投影、分批合并与成功检查点恢复,验证旧策略仍保留原缺失项。
## 任务三:回归与交接
- [x] 运行新测试及现有条件、模板/分批、年龄、grounding、地区、评分、展示相关纯内存回归;PHP语法和本轮差异检查。
- [x] 离线回放25款历史响应的明确标注适配夹具;原证据和收费入口只读,不把适配回放当新模型测试。
- [x] 核对小程序运行文件与全部非本轮后端文件摘要不变,更新规则契约与交接最新覆盖说明,记录未上线、未真实模型复测。
补齐同范围入口:ProductExplanations.php对新策略未参与细项采用固定解释;25款共有的地区待确认仅保留未知记录,不再阻断参考筛选,其他配置问题仍阻断。两项均补失败到通过回归。
证据:D:/AAdesk/202609/airz-backups/profile-advice-20261015。新59项、历史回放242项及既有套件分别记录;实施说明见docs/资质参考建议调整-20261015.md。
@@ -0,0 +1,34 @@
# 省份资料隔离持久化验收计划
**Goal:** 验收34省级选择在个人/企业资料创建、冻结版本、详情回读、编辑及并发重放中的真实保存行为。
**Architecture:** 复用 `tests/report_test_bootstrap.php` 的隔离门禁和现有合成输入/假模型。全新本机MySQL5.7及Redis实例使用独立目录、非默认端口、唯一数据库和DB15;框架初始化前拦截真实模型客户端。业务源码保持,发现相关缺陷才最小修正。
**Tech Stack:** PHP7.4、ThinkPHP、MySQL5.7、Redis、现有Python运行时。
**Spec:** `docs/新会话交接.md` 2026-10-15接续摘要及 `2026-10-15-city-options.md`。
## 约束
- 本轮用户授权继续本地隔离验收;不连接正式库、不读取正式.env、不调用付费模型、不部署或发行、不提交或推送。
- 保留前后端全部已有未提交改动;省份不能证明具体城市、户籍或网点覆盖。
- 只清理本次合成记录及所属队列;服务关闭前核对PID、可执行文件、命令行和监听归属,保留数据目录与证据。
## 执行步骤
- [x] 新建仓库外证据目录,记录当前源码摘要及工作树;初始化独立MySQL/Redis、导入现有schema,写入显式隔离bootstrap。
- [x] 新增后端 `tests/province_persistence.php`,复用 `matchTestInput($type,$key)`、`ReadinessFakeClient` 和 `AssessmentRecords` 服务。
- [x] 验收34省份个人/企业保存与回读;检查快照有province_code且city_code为空,user_info无province_code列/写入,详情保留对应名称代码。
- [x] 验收广东→江苏编辑、原键重放不回退最新资料、旧版本不改写、非法配对和跨账户拒绝无写入、历史深圳/未知城市兼容。
- [x] 用两个PHP进程和stdin闸门竞争:同键新建/编辑仅产生一次版本,同键不同省份冲突,不同键同基版本编辑仅一个成功。
- [x] 运行新测试、原版本/HTTP回归及地区纯内存检查;核对退出码、实际检查数、假调用数和数据清理。
- [x] 记录验证结果,正常关闭仅本轮创建的MySQL/Redis并核端口释放;更新交接文档。发布及新模型语义仍单独待授权。
运行入口:`php tests/province_persistence.php --bootstrap=<本轮隔离bootstrap绝对路径> --worker-stopped --verbose`。
必须无bootstrap时拒绝启动;成功运行后本轮合成用户、资料、评估、日志、产品、消息及队列应清空。不得复用任何历史真实评估入口。
## 结果
省份持久化436项、原版本58项、默认HTTP514项/158请求、省份HTTP533项/162请求、地区事实68项均通过;另两文件语法和无bootstrap拒绝通过,各套件单列不累计重叠。未修改业务运行代码;255个后端运行PHP摘要不变。29表空、6触发器保留、DB15键0,本轮服务正常关闭且端口释放。首次版本回归的隔离密钥格式问题修正后通过,失败及重复运行不累计。
证据:`D:/AAdesk/202609/airz-backups/province-persistence-20261015/verification.json`。持久化专项使用空合成目录,HTTP和版本回归使用既有演示产品;未验证最新正式目录、生产worker、微信真机或新真实模型语义。
@@ -0,0 +1,16 @@
# 评估配套发布准备计划
**目标:** 固定累计未发布改动,提供可核对的后端候选包、完整前端源码、旧后端恢复材料、顺序及回滚边界。
**范围:** 只做本机准备,不访问服务器、正式数据库或模型,不部署/发行、不提交/推送;保留当前工作树。既有隔离验收关联原始证据,不重跑相同持久化测试。
- [x] 对照20261014-product-ai-r1的133文件发布回执逐项核摘要,区分真实改动、换行差异及新增依赖。
- [x] 固定9个后端运行文件及13个前端累计改动;完整前端源码按显式运行目录归档,排除私密配置、文档、测试、缓存和历史编译产物。
- [x] 从上次发布runtime.zip及摘要完全匹配的Git对象提取7个旧后端文件,记录来源;两个新增文件仅在本次部署前确认不存在时才具备删除恢复条件。
- [x] 记录旧/新客户端与后端兼容矩阵、无需DDL的边界、先后端再小程序的顺序、任务排空/worker加载与无付费冒烟步骤。
- [x] 校验压缩包路径/成员/逐文件摘要、PHP语法、地区同源字典及候选依赖;记录当前验证与历史业务证据的区别。
- [x] 写入发布操作单、固定清单和准备回执,更新交接;实际发布授权及微信发行记录保持待提供。
候选标识:`rc-20261015-assessment-region-batch-r1`。发布目标以最近历史回执记录的https://airz.hqling.cloud和/www/wwwroot/xctai.cn为待现场核对目标,不当作本轮在线实测。小程序当前线上版本/上传包摘要未知,不使用Git HEAD代替实际发行版本。
结果:9后端候选、206前端完整源码(13累计变化)、7精确旧后端恢复文件;3ZIP/222成员与16PHP语法、220处前端@/导入、34省字典一致性核验通过。255后端运行PHP与前轮持久化证据一致,8份历史证据不变。操作单见 `docs/评估配套发布准备-20261015.md`;清单及核验见 `docs/发布候选/assessment-20261015-r1/`。归档在 `D:/AAdesk/202609/airz-backups/release-preparation-20261015`,仅本地准备,没有服务器/数据库/模型/worker/新编译/发行/提交操作。