docs: 更新匹配规则及页面改造相关文档,新增演示产品及报告验证记录

This commit is contained in:
hujun
2026-09-24 17:28:45 +08:00
parent dbfd637388
commit 26da91b337
9 changed files with 841 additions and 39 deletions
+57 -11
View File
@@ -1,6 +1,6 @@
# AI 融资平台开发文档
> 版本:v1.4 · 基线日期:2026-09-22 · 更新日期:2026-09-24 · 状态:需求输入与报告v2自填支线已实现;完整度/准备状态及执行策略冻结已接入,真实产品匹配待实施
> 版本:v1.9 · 基线日期:2026-09-22 · 更新日期:2026-09-24 · 状态:目录冻结、规则匹配和正式任务落库已接通;本地已上架6条演示产品,匹配接口及04—10页面待接
> 配套台账:[开发进度](开发进度.md)。本文定义范围、接口和验收口径,台账记录实际执行与证据。
> 文档初始规划后已开始开发;以下更新记录优先于原始基线。除明确列为已实现的部分外,计划接口和增量数据仍待开发。
@@ -84,7 +84,7 @@ php think analysis:work --recover-only
- 输入版本与报告版本独立:新v2输入继续生成resultVersion=1自填报告。本轮需求未进入模型事实、准备等级或产品匹配;自由用途说明不外发。REPORT-003/004及DEC-READINESS/DEC-MATCH保持未完成,不把本次录入闭环称为报告v2。
- 验证:2026-09-24专项76项通过;2026-09-23基础41项、任务29项、隔离HTTP15项通过。个人/企业H5提交及历史刷新、金额精度、旧未采集、用途失败恢复与无草稿已验证;Web/Android本地编译通过,未验收微信内H5、Safari或真机。此次未调用真实模型,完整证据见开发进度0.5与6.5。
### 0.6 2026-09-24 资料完整度、准备状态与报告v2(当前实现)
### 0.6 2026-09-24 资料完整度、准备状态与报告v2(实施记录)
- 根据用户继续下一步的授权,采用专项契约首版等权字段集和三种资料准备状态;DEC-READINESS开发版发布为 `self-reported-base-20260924-v1`。个人14项、企业9项,other各加1;有效零值/none计已填写。缺失、无效、不适用分开记录,按整数四舍五入计算百分比;invalid或一致性问题优先“需核实资料”,其次“待完善资料”,全部填写为“可进入资料核对”。这是自填资料准备状态,不是信用或授信等级。
- 策略配置在 `application/extra/readiness.php`,引擎版本 `equal-fields-v1` 固定定义字段类型、范围、条件项、计数和优先级;字段定义、适用清单、条件规则、标签及版本完整复制至execution_snapshot。变更业务含义须提升策略版本;变更算法/类型须提升引擎版本并保留旧版处理,不能原地改变历史策略含义。
@@ -94,6 +94,44 @@ php think analysis:work --recover-only
- 报告页已展示需求、完整度逐项状态、准备依据、优势/建议/风险及证据标签;金额万元,期限/月数整数。未发布策略不显示0分,旧v1不事后添分。缺少真实产品时matching.status=unavailable、计数null、match_result=[];产品集合/匹配规则/排序快照仅保留明确不可用状态,真实匹配和产品解释仍待PRODUCT实施。
- 本轮验证:54项报告专项、76项需求、41项基础、15项HTTP检查通过;Chromium手机/桌面报告和历史刷新通过,Web及Android本地编译通过。用合成数据/假模型,未调用真实DeepSeek;v2提示词真实语义、微信内H5、Safari、真机和生产守护未验收。REPORT-002/004整体开发中,REPORT-003完整产品/外部数据范围仍阻塞,不能把内部报告支线记为一期完成。
### 0.7 2026-09-24 真实DeepSeek报告v2输出验证
Flash/Pro真实样例已验证,见[验证记录](报告v2真实模型验证.md)。初始两例被引用校验拒绝后,提示词补明确的allowedEvidenceRefs、单主题引用、不把自填事实推断为信用/受理资格、只补实际缺失/异常项;不再发送完整度的计数/百分比,正文新增中文项数和“为零”等数值复述拦截。接口仍最多5个引用,提示词建议1—3个,不放松硬校验。修正后Flash三例及Pro一例通过,58项本地报告回归通过;仅有限合成样例,不代表生产稳定性或业务签收。
后端 `tests/deepseek_report_v2_live.php --live --model=flash --case=personal_missing --output=<已有目录>` 每次仅一次真实请求,不读取会员/任务、不入队、不自动重试。支持另外enterprise_complete、personal_inconsistent、enterprise_other及model=pro。测试保留安全用量与合成输出,禁止打印密钥/供应商原始错误。6次实际调用含首轮失败,共输入9369/输出2373 tokens,费用以账单为准。
### 0.8 2026-09-24 异常流程与等待状态
状态、详情和历史列表共用服务端状态文案:processing/queued显示“排队中”,processing/running显示“分析中”。排队满60秒、运行满90秒时返回等待较长提示,提醒资料已保存、无需重复提交、可从档案查看。以任务阶段update_time计算,补投不重置、重试重新计时;不新增字段或数据库状态,不凭等待时间判定失败,也不自动重复调用模型。
分析页重试提交期间禁止手动刷新竞争;状态查询失败清除旧重试/报告按钮,保留手动刷新入口。失败重试回执丢失时保留请求键,下一次点击仍返回原taskId。已验证两独立进程并发重试只预留一次调用、旧请求键回放、模型超时/非法报告、租约回收、迟到结果、报告归属及退出后重新登录读取。
本轮31项任务、36项v2 HTTP、76项需求、58项报告检查通过;使用合成数据和假模型,无真实供应商调用。普通Chromium H5完成排队/运行/失败提示、状态查询失败恢复、重试双击与回执丢失、报告刷新及历史入口;Web/Android编译通过。详细证据和边界见开发进度6.9节,生产守护和微信内H5/Safari/真机仍未验收。
### 0.9 2026-09-24 原型04—10页面范围补齐
用户明确要求先补页面改造清单与跳转关系,再进入匹配开发,详见[原型04—10方案](原型04-10页面改造与跳转方案.md)。04/05/06复用产品详情三栏与结果状态;新增07对比和10行动两页;08接本次评估/产品问答上下文,09改三栏并增加PDF。所有个性化路由以assessmentId绑定冻结快照,公共产品与个人结果分开。
本次正式新增PRODUCT-005、REPORT-005、REPORT-006,任务数由历史60项扩为63项,新增独立工作量5—8.5人日。当前仍25个注册页面,目标27页;旧69—117人日是历史基线,不能当成当前剩余工期。此前章节“对比/PDF另行排期”是历史范围,本节明确将其纳入一期开发任务。
先采用已有契约的三态、单产品覆盖、无评分和productId升序作为开发口径,不显示原型固定百分比或B+;真实产品及业务样例签收仍待完成。本轮已实现纯规则计算基础并通过64项内存测试,见[规则开发契约](产品匹配规则开发契约.md);未接正式worker、未改历史报告,未发布合成产品。图片确有需要时按用户指定 `C:\Users\JUN\Desktop\img2-right.py` 的异步生图方法;本轮不调用生图服务。
### 0.10 2026-09-24 产品发布预检与规则编译
ProductPublication已接入Product模型,覆盖新增上架、已上架产品修改及批量保存;按最新锁定记录合并局部变更后校验,版本由服务端递增。产品必须具备名称/类型/机构、金额/期限/利率范围、有效期、对象、地区及来源/用途依据。草稿可不完整,旧不完整产品可下架;不迁移旧JSON、不发布合成产品。
eligibility_rules完整格式、字段映射与发布限制见[产品规则契约第6节](产品匹配规则开发契约.md)。只支持全国或现有5城市精确代码,混合产品按个人/企业分支编译,保留不适用依据,不允许补充规则覆盖独立字段;缺少事实渠道的年龄硬条件拒绝发布。来源格式校验不代表真实性已核实。
本轮194项检查通过:发布/编译73、模型事务16、规则64、基础41。合成数据回滚,原产品记录保持;模型路径覆盖不等于后台浏览器验收。PRODUCT-003进入开发中,真实资料及正式发布验收仍受DEC-PRODUCT阻塞;公共接口和结构化条件编辑尚未完成。下一步实现目录筛选/冻结、稳定排序、理由模板及正式评估集成,再按04—10方案接页面。
### 0.11 2026-09-24 正式匹配任务与本地演示产品
根据用户明确要求,6条合成产品直接写入当前本地fa_product并上架,ID22—27,产品名称、机构和来源注明演示;不局限于测试目录。样例及可重复录入脚本在后端database/demo_products.json、seed_demo_products.php,不覆盖原记录或已编辑演示产品。真实机构资料及业务签收仍待补充。
新执行引擎needs-report-v2-match-v1已接通目录冻结、产品ID稳定排序和证据理由模板;匹配结果写fa_ai_chat.match_result,报告与结果同事务提交。快照保存产品版本/参数/规则/字典,重试复用,旧引擎报告不补算。支持合法null rank/score、不适用条件和unknown,不把自填收入当外部核验。配置损坏使任务失败且不调用模型。
报告页已从固定“未执行匹配”改为读取后端统计与演示提示。匹配列表/详情API、公共查询、单产品AI解释及04—10整体改造仍未交付,不能跳转现有模拟匹配页当真实结果。465项PHP检查通过,Web/Android编译通过,H5报告统计/刷新/历史导航通过;细节见台账6.12与[规则契约](产品匹配规则开发契约.md)第7节。
## 1. 项目目标与现状
### 1.1 已确认范围
@@ -137,6 +175,8 @@ php think analysis:work --recover-only
路由以 [pages.json](../pages.json) 为准。以下覆盖现有全部 25 页;反馈表单、历史列表等优先补入所属现有页面,若交互确需新增页面,在所属分包注册并同步台账。
原型04—10新增路由仅属计划,尚未注册:`packages/finance/compare/compare`(PRODUCT-005)与`packages/finance/next-step/next-step`(REPORT-006);目标共27页。04/05/06均复用product/product,报告PDF不另加页面。参数与返回矩阵见专项页面方案第3节。
| 序号 | 页面路由 | 功能职责 | 主要任务 |
| --- | --- | --- | --- |
| 1 | pages/home/home | 首页、融资入口、推荐、消息红点 | BASE-004、CONTENT-002、MSG-003 |
@@ -245,7 +285,7 @@ php think analysis:work --recover-only
| 协议与授权事件 | fa_acticle + fa_user_info.consent_data | 协议版本不可变修订;拟增fa_user_consent保存范围、版本、授权与撤销事件,再复制评估快照 | FILE-003 |
| 第三方身份 | fa_user + token | 拟增fa_user_identity,以provider+app_id+subject唯一;不能只靠单个openid列覆盖所有微信应用 | LOGIN-001 |
| 外部查询审计 | fa_user_info关联 | 拟增fa_data_query:用户/评估/授权、渠道、请求和渠道单号、状态、受保护结果引用、来源时间、错误/费用状态 | DATA-002、DATA-003 |
| 普通助手引用报告 | fa_ai_chat | context_assessment_id可空,仅同用户;assistant.assessment_id保持NULL | CHAT-001 |
| 普通助手引用报告 | fa_ai_chat | 计划新增context_assessment_id和context_data,保存本人评估/产品ID及快照摘要引用;当前无这两列;历史普通会话默认NULL,assistant.assessment_id仍NULL,迁移前检查归属/索引并备份 | CHAT-001 |
| 课程内容与进度 | fa_finance | 课程章节JSON带稳定chapterId/版本;拟增fa_user_lesson_progress,唯一(user_id,lesson_id,chapter_id) | CONTENT-001、CONTENT-003 |
| FAQ与发布资料 | fa_acticle | 扩展明确定义的FAQ类型、展示分类/排序;增加标题之外所需摘要/封面字段 | CONTENT-001 |
| 消息去重 | fa_user_message | 新增事件键;按用户+事件键唯一,批量已读按请求时的最大ID水位更新 | MSG-001、MSG-002 |
@@ -373,9 +413,9 @@ php think analysis:work --recover-only
### 4.7 PRODUCT|产品库与匹配规则
**目标:** 可运营的产品库与可解释、可复现的个性化匹配。 **阶段:** M2。**剩余:** 6–9人日。
**目标:** 可运营的产品库与可解释、可复现的个性化匹配。 **阶段:** M2。**工作量:** 原6–9人日为历史基线,新增对比1.5–2.5人日;不是当前剩余工期,已有任务页面扩展另需复估。
- **现状:** 范围字段、版本、上架校验等基础已有;补充JSON尚无执行器,前端是demo产品。
- **现状:** ProductMatchRules计算、ProductPublication预检/编译、ProductMatching目录冻结/排序/理由已接通正式评估并持久化。6条演示产品在本地上架,报告已显示统计;匹配列表/详情API、公共查询、结构化编辑和04—10页面待完成,真实产品资料未提供。
- **前端:** 拆Product与MatchResult;显示范围而非单点额度/利率;保持历史快照并提示当前产品状态。
- **后端:** 确定性规则、白名单操作符、类型校验、版本化排序;只推荐状态/有效期/地区及硬条件满足的产品。
- **数据:** 产品独立字段+regions/eligibility_rules;个性化分数和理由放match_result,快照含产品版本。
@@ -387,13 +427,14 @@ php think analysis:work --recover-only
| PRODUCT-001 | 规则字典与评分口径:确定准入三态、来源要求、单产品需求覆盖、用途规则、证据结构和版本化排序;评分未发布时null。 | P0 | ASSESS-001、DEC-MATCH | 发布规则与人工样例可审阅;非法字段/操作符阻止发布;fail优先于unknown,匹配指标不作为审批概率。 | 1.5–2 |
| PRODUCT-002 | 准入与排序执行器:执行上架/有效期/对象/地区及需求硬规则;保存pass/fail/unknown证据,生成eligibility和稳定rank。 | P0 | PRODUCT-001 | 同输入/快照结果稳定;未知不当满足,配置错误不归咎用户;需求不拆额、不改期;未运行与零候选区分。 | 2–3 |
| PRODUCT-003 | 产品后台与公共查询:补规则条件编辑、来源/用途依据、发布预检、版本与公共详情;录入真实产品,缺依据阻止发布。 | P0 | PRODUCT-001、BASE-002、DEC-PRODUCT | 产品用途/地区/额度/期限有真实依据;规则可配置并启停,版本变化留依据;公共详情无个人分数。 | 1.5–2 |
| PRODUCT-004 | 匹配页面与快照:按assessmentId展示三态分组、最多三个候选及分页;结果详情展示依据/注意项/AI解释,保留产品快照与申请准备。 | P0 | PRODUCT-002、PRODUCT-003、ASSESS-004 | 每条解释可追溯且不凑三正三反;当前产品变化不改历史;跨账户拒绝;unavailable/零候选/failed不混淆。 | 1–2 |
| PRODUCT-004 | 匹配页面与快照:按assessmentId展示三态分组、最多三个候选及分页;结果详情展示依据/注意项/AI解释,保留产品快照与申请准备。 | P0 | PRODUCT-002、PRODUCT-003、ASSESS-004、REPORT-003 | 每条解释可追溯且不凑三正三反;当前产品变化不改历史;跨账户拒绝;unavailable/零候选/failed不混淆。 | 1–2 |
| PRODUCT-005 | 同类产品对比:新增compare页,同评估2—3项冻结产品、状态/范围/条件对照、补选与返回、刷新恢复。 | P1 | PRODUCT-004 | 不跨评估/混用现价;缺值不同于0;手机横向表格可读,单项失败明确;不重跑模型。 | 1.5–2.5 |
### 4.8 REPORT|AI任务、报告与历史
**目标:** 把真实输入、查询依据和产品匹配生成可追溯的DeepSeek报告。 **阶段:** M2。**剩余:** 8–12人日。
**目标:** 把真实输入、查询依据和产品匹配生成可追溯的DeepSeek报告。 **阶段:** M2,行动与助手联调延伸至M3。**工作量:** 原8–12人日为历史基线,新增PDF及行动页3.5–6人日;不是当前剩余工期。
- **现状:** v1自填报告已真实模型联调;v2需求、完整度、准备状态和冻结策略已完成假模型与页面联调。v2真实模型语义、产品证据/解释及外部渠道仍待验收。
- **现状:** v1自填报告已真实模型联调;v2需求、完整度、准备状态和冻结策略已完成假模型与页面联调。v2有限真实模型样例已通过;大样本语义、产品证据/解释及外部渠道仍待验收。
- **前端:** 轮询真实状态、刷新恢复、失败重试;渲染数据驱动维度、来源时间和版本;查看历史。
- **后端:** DeepSeek适配、结构校验、任务抢占/超时/漏投补偿、输入最小化、用量记录;在事务中同时落报告、匹配和成功状态。
- **数据:** result_version/rule_version/model与产品快照分别记录;模型输出不能覆盖金额、硬准入或数据来源。
@@ -404,8 +445,10 @@ php think analysis:work --recover-only
| --- | --- | --- | --- | --- | ---: |
| REPORT-001 | DeepSeek适配与配额:配置模型标识、服务端密钥读取、超时、结构化输出校验、配额预留和消耗记录。 | P0 | BASE-002、EXT-AI、DEC-AI | 模型可配置;密钥不下发;失败与使用量可追踪;数值事实不被模型改写。 | 1.5–2 |
| REPORT-002 | 异步任务与补偿:保留Redis派发、补投、租约和taskId隔离;沿用提交时input_snapshot,一次性补入execution_snapshot并在重试时复用,支持跨部署v1/v2任务。 | P0 | ASSESS-003、REPORT-001 | 漏投/中断可恢复或明确失败;旧任务不可回写;输入/目标结果/策略/产品快照重试不隐式变化。 | 2.5–4 |
| REPORT-003 | 报告生成与持久化:保留v1自填报告;补v2需求、完整度/准备等级、规则证据及定性AI区块;版本快照和正式结果原子落库。 | P0 | REPORT-002、DATA-004、PRODUCT-004、DEC-MATCH、DEC-READINESS | 完整度按发布字段集复算,等级有依据且非审批;null rank/score按状态验证;格式错误不成功,产品/规则更新不改旧报告。 | 2–3 |
| REPORT-004 | 分析报告历史联调:保留轮询/重试和v1历史;接v2需求、完整度、准备等级、三态匹配及证据解释,不显示无规则分数/雷达。 | P0 | REPORT-003、ASSESS-004 | 个人/企业真实链路按版本展示;未发布无分或等级,100%不等于授信;旧报告不重算;新复评新assessmentId。 | 2–3 |
| REPORT-003 | 报告生成与持久化:保留v1自填报告;补v2需求、完整度/准备等级、规则证据及定性AI区块;版本快照和正式结果原子落库。 | P0 | REPORT-002、DATA-004、PRODUCT-002、PRODUCT-003、DEC-MATCH、DEC-READINESS | 完整度按发布字段集复算,等级有依据且非审批;null rank/score按状态验证;格式错误不成功,产品/规则更新不改旧报告。 | 2–3 |
| REPORT-004 | 分析报告历史联调:保留轮询/重试和v1历史;接v2需求、完整度、准备等级、三态匹配及证据解释,不显示无规则分数/雷达。 | P0 | REPORT-003、PRODUCT-004、ASSESS-004 | 个人/企业真实链路按版本展示;未发布无分或等级,100%不等于授信;旧报告不重算;新复评新assessmentId。 | 2–3 |
| REPORT-005 | 报告PDF导出:鉴权流式下载、受控中文模板、报告与产品冻结快照、H5保存与失败提示。 | P1 | REPORT-004 | 本人成功报告可导出;金额/理由与历史一致;不重跑模型/泄露身份;中文分页可读,JSON错误不保存成PDF。 | 2.5–4 |
| REPORT-006 | 下一步行动:新增next-step页,准备材料、查看已存报告、优化资料、新评估、咨询及首页导航。 | P1 | PRODUCT-004、REPORT-004、CHAT-003 | 根据判定及当前可用性开放行动;无银行申请提交;新评估不改历史、无草稿;上下文和返回正确。 | 1–2 |
### 4.9 CHAT|AI助手
@@ -676,6 +719,7 @@ php think analysis:work --recover-only
| GET /data-queries/:id | 所有者 | 无 | queryId、status、source、sourceAt、errorCode、可显示摘要 | 费用/权限错误有明确状态;不返回渠道凭据 |
| POST /callbacks/data/:provider | 渠道验签 | 供应商原始格式 | 供应商要求的ACK | 原始体验签、防重放、单号映射、幂等;不适用用户Bearer |
| GET /assessments/:id/report | 所有者 | 无 | Report(v1/v2自填版本) | 已实现;未成功409 REPORT_NOT_READY,不存在/越权404,旧结构409 REPORT_FORMAT_UNAVAILABLE;Cache-Control:no-store |
| GET /assessments/:id/report.pdf | 所有者 | 无 | application/pdf流;错误为JSON | 计划新增REPORT-005;401/404/409沿用报告语义,503 REPORT_EXPORT_UNAVAILABLE;no-store、安全文件名,不重跑模型 |
| GET /assessments/:id/matches | 所有者 | eligibility默认eligible、limit默认3上限50、cursor可空 | assessmentId、resultVersion、matching、items、hasMore、nextCursor | 计划新增,三态分组、冻结快照与游标绑定,见专项契约第5.3节;当前尚未实现 |
| GET /assessments/:id/matches/:productId | 所有者 | 无 | 该次匹配结果、理由、证据和快照 | 计划新增;只读本次已评估项;越权/快照无该产品404;不从当前公共产品拼历史 |
| GET /products | 公开 | type/regionCode可选、page/pageSize | Product分页 | 仅当前有效上架产品;不返回用户分数 |
@@ -685,6 +729,8 @@ php think analysis:work --recover-only
分析页当前只对processing每5秒轮询,离开页面停止前端轮询但不取消服务端任务;重新进入按assessmentId恢复。供应商总超时90秒、连接超时10秒,执行租约至少180秒、Redis reserved到期240秒,不按前端10秒请求超时推断AI执行失败。
`statusLabel`和`message`按服务端阶段返回:queued为“排队中”、running为“分析中”;排队60秒/运行90秒起显示耗时较长提示。接口状态仍为processing,canRetry仍为false;该提示不等同任务失效。状态查询失败时前端停止本次轮询并提供手动刷新,不显示旧的重试或报告按钮;重试请求进行中不并发刷新,回执丢失保留requestId以安全回放。
#### 当前v2正式提交示例(所有路径前缀/api/v1,Bearer必填)
@@ -816,7 +862,7 @@ flowchart LR
| DEC-QUERY | 首发数据查询种类与个人/企业范围、拒绝/失败后的自填路径、重查与费用归属 | DATA-001:页面授权到数据产品映射及失败策略 |
| DEC-DEMAND | 已确认并于本地发布:用途字典、other说明、v2新建必填及最低版本2;见0.5 | ASSESS-001:发布的需求字典、校验样例与兼容计划;见专项契约第2/7节 |
| DEC-READINESS | 已按用户授权采用首版并发布开发版:等权字段集/条件项、准备状态及一致性规则;生产业务验收待完成 | REPORT-003:发布策略、策略版本与人工样例;未发布返回policy_unconfirmed |
| DEC-MATCH | 硬准入三态、来源要求、需求覆盖、用途依据、排序/可选匹配指标和解释证据;资料等级另由DEC-READINESS确认 | PRODUCT-001、REPORT-003:版本化规则与金标准样例 |
| DEC-MATCH | 开发口径已采用既有三态、来源门槛、单产品覆盖、无评分和productId升序;真实产品规则及人工金标准待签收 | PRODUCT-001、REPORT-003:规则编译/冻结、业务样例与正式发布验收 |
| DEC-PRODUCT | 首发真实产品及金额/期限/利率/地区/准入依据、有效期和运营责任人 | PRODUCT-003:可发布产品资料与运营确认记录 |
| DEC-AI | 模型已确定;单用户/评估额度、超时重试、成本预算与超额策略待定 | REPORT-001:配置及额度规则 |
| DEC-POINT | 签到/资料/邀请奖励数额、次数、可信达成条件、权益/有效期 | POINT-001:活动规则及正反样例 |