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

52 lines
8.6 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。用户“继续下一步”确认优先补齐年龄判断,继续先不发布、跳过真机验收。本轮仅修改本地后端及新增内存回归,不删填写项、不改用户已填内容、不访问生产或调用真实模型。
## 问题与处理
现有身份证年龄事实已按该次评估冻结的上海业务日计算,但自定义年龄条件仍交给 AI;契约允许已知年龄返回 unknown。上轮清理了误导提示,本轮将能明确比较的年龄条件移出模型判断请求,由后端直接计算通过/不符/未知。原截图对应的具体失败原因仍无该次冻结请求证据,本轮不据此追认。
新个人资料参考评估冻结 `ageRangePolicy=identity-age-range-v1`,策略进入目录及执行摘要。`capture()` 显式启用,`freeze()` 新末参默认关闭;旧冻结目录、检查点和报告没有标记时保持原行为,不动态补规则、不重算历史。企业、原需求模式和未启用参考建议的目录不启用该规则;非法标记或不兼容标记组合明确拒绝。
识别范围采用严格白名单:硬/软条件名称为“年龄、年龄要求、年龄范围”,支持整数年龄的等于、不低于、不高于、闭区间,以及完整的“18—60周岁”“22周岁到60周岁之间”等表述。边界取 0—150,倒置、负数、小数和越界不本地猜测。备注只接受空值及既有两条不增加门槛的固定说明。其他名称、未识别语法、分性别、额外共同要求或例外仍保留完整条件,进入原判断流程。
此前已确认的四类年龄与贷款期限拆分表述保留年龄区间口径;新策略给这一步加完整尾句匹配,防止把带女性上限、收入、单位或例外的复合文字截成纯年龄。产品原文和保存配置不改,旧目录采用原已冻结解释。
仅复用现有有效身份证派生的周岁:生日当天、上海零点和闰日均按冻结业务日计算,支持既有 18/15 位身份证逻辑;姓名、证件号码、手机号仍不进入模型请求。不推导性别、不增加采集项、不放宽身份证校验。缺少有效年龄时保留 unknown,不加分、不伪造符合,也不因此索要未采集细项或阻断参考建议。
普通年龄条件保留在完整冻结判断清单中,从模型请求子集移出。后端证据保存年龄、单位、区间和结果;硬条件明确不符仍阻断,软条件仅通过时按原配置加减分。理由模板从本地判断取得三态,不能用模型返回的相反结论覆盖它。全部条件均为本地年龄且没有模板时,保留一个空工作批生成主报告正文,避免报告无法生成;这仍是正常模型调用,不新增自动重试或额外诊断调用。
## 改动与验证
后端新增 `ProductAgeRules.php`,修改 `ProductMatching.php`、`ProductAiConditions.php`、`ProductAiTemplates.php`、`ProductAiBatches.php`;新增 `tests/product_age_ranges.php`。不改数据库结构、任务状态机、额度、表单、融资等级公式或前端运行文件,原有未提交修改保留。
专项先复现“已知年龄仍被请求交给 AI”的红灯,最终257项通过,验证本地比较、生日/区间边界、无效身份证、软条件加减分、复合条件保护、模板绑定、空批、34模板跨批与部分检查点恢复、实际capture作用域及额外年龄结果注入拒绝。6个PHP文件语法检查通过。原年龄55/条件68、模板89/分批36、grounding81、地区68、参考建议59、匹配151/展示20、零金额270/事实118项分别通过;包含套件不重复累计。
另用现有25款产品原始配置重新离线冻结,并将已有合成响应显式适配新请求绑定后重放:82条条件保留,其中16条普通年龄在本地计算,66条继续请求模型,分性别条仍在其中;100条模板一致性校验通过,规划6批。该结果属于离线重放,不代表新真实模型输出。原样本摘要及旧目录已知年龄可为unknown的历史行为保持。
证据目录:`D:/AAdesk/202609/airz-backups/age-ranges-20261016`,含修改前快照、红绿日志、旧年龄审计、25款重放、源码摘要及最终回执。独立只读审查未发现实质问题。
部分旧内存入口的显式加载名单不包含前序零金额类或本次新增类,直接调用会报ClassNotFound;已改用现有严格白名单内存wrapper补齐加载,未改旧测试或默认环境。一次错误退出留下的单个合成测试临时目录已复制到证据目录,自动审批拒绝删除该目录(blocked by policy),因此保留原临时目录,未尝试绕过清理限制。
本轮未发布、未提交或推送;没有真实模型调用、正式评估重试、生产访问、数据库或常驻 worker 验收。前端运行源码保持,不以本轮离线检查代替微信真机。未来配套发布仍须后端先、小程序后;本规则只适用于新建执行快照,不能用旧任务重试验收。
## 2026-10-16 新增真实模型验证(未通过,已停止)
用户明确要求“直接用真实模型验证”,本轮授权用于一份合成资料的完整评估,最多六批、不自动重试。使用既有25款产品保存配置重新冻结,82条完整条件中16条本地年龄、66条模型条件,100条模板共6批;不是新导出的正式产品目录。合成资料为身份证派生36岁、广东省、全部贷款0笔/信用卡0张、四关联金额原始null;姓名、完整身份证及手机号在发出前及保存后均检查未进入模型请求。
全新本机51778/51779隔离MySQL与Redis通过空库及进程归属审计,随后通过实际`AssessmentRecords::create → AnalysisTasks::run`执行一次,无常驻worker。首批真实响应耗时22.032秒、10620输入/3027输出token,返回12条条件及16条模板,但被`ProductAiTemplates.php:223`严格绑定校验拒绝:产品58、template_qa_4的templateHash应为64字符,模型抄成65字符,片段`...28bd99e54179...`变为`...28bd6f5c54179...`。任务failed/AI_INVALID_REPORT,0检查点、无正式报告;后5批没有发出,共1次真实调用,没有自动重试,金额未查账不能折算。
保存原始请求/响应、冻结上下文、当前合成row、用量和防重标记。禁止真实模型构造的离线重放复现同一拒绝行和请求摘要;仅在独立内存副本改回这一处hash后,首批全部校验通过,在下一批前主动停止。此反事实探针不是原模型成功结果,也没有修改原始响应、正式评估或后端校验规则。独立只读审查确认该绑定错误。
同份冻结事实的离线探针核得16条本地年龄pass、四个金额not_applicable、原始null保留;真实首批improvements及各条件missingFields均为空,未索要贷款/信用卡金额或未采集细项。因完整评估失败,不能声称25款真实模型评估、最终报告保存回读或微信真机已经通过。
另发现真实摘要仍出现“资料由用户自填,尚未核验。”,当前基础提示和示例仍明确要求这类文字;此项需要后续清理,不能把前序匹配详情展示清理当成主报告提示词已修复。本轮只验证和诊断,没有修改运行源码。后续建议先降低模型回传长hash的脆弱性(后端保留冻结绑定和严格校验),并统一摘要提示,再考虑新的完整实测;不能重跑本轮防重入口或把响应补成成功。
精确清理合成数据后29表为空、6原触发器保留、Redis DB15空;核对归属后正常关闭本轮MySQL/Redis,51778/51779释放,保留datadir及证据。258个后端application PHP、77个前端UTS/UVue摘要保持。未访问正式库、未发布、未提交/推送,仍跳过真机。证据:`D:/AAdesk/202609/airz-backups/age-ranges-live-20261016-r1`,详见`verification.json`、`failure-replay.json`及`binding-probe.json`。
## 2026-10-16 后续修复(本地完成,未发布)
针对本节真实调用发现的长hash抄错与摘要流程说明,已完成新冻结批次短ref协议及主报告提示清理。完整绑定由后端恢复并继续严格校验,旧协议/保存数据保持;后续新生成正文使用清理后的提示。编解码、流程、摘要、隔离持久化与失败续跑均有通过证据,本轮5次显式假模型、0真实调用,仍未完整真实复测、未发布。详见[短编号与摘要提示修复](短编号与摘要提示修复-20261016.md);证据为D:/AAdesk/202609/airz-backups/response-bindings-20261016。原真实失败目录、响应和防重标记保留,不重跑原收费入口。