Files
airz-uniapp/docs/新会话交接.md
T
hujun 542c107317 feat: 优化AI助手及报告对比界面,完成金额精度专项验证
- 调整环境配置切换至测试服
- 实现AI助手上下文折叠展开功能,优化界面布局
- 新增报告对比首屏短参数展示,简化信息呈现
- 调整报告页布局,优化导出组件为紧凑模式
- 完成原型08金额精度三轮真实专项验证,新增金额守卫逻辑
- 更新文档记录部署、数据库切换及验收进展
2026-09-29 17:27:25 +08:00

115 lines
17 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.
# AI融资项目新会话交接
记录日期:2026-09-29。本文件为接续入口;详细任务状态以[开发进度](开发进度.md)0.26、6.27节为准,设计以[开发文档](开发文档.md)v1.24、[原型页面方案](原型04-10页面改造与跳转方案.md)v1.7为准。历史章节中的“待开发”应结合最新更新阅读。
## 1. 当前停在哪
最新部署(2026-09-29,优先于下文历史PID):PHP后端已通过宝塔网站页面部署到 **https://aitest.ychysg.cn**,API前缀 /api/v1,后台 /ZYurKboadX.php。旧 xctai.cn 绑定已移除,宝塔内部站点名及目录仍 /www/wwwroot/xctai.cn,运行目录 public。Let's Encrypt证书已部署、HTTP强制HTTPS、外网信任校验成功;到期2026-12-28,面板续签任务正常、每天04:38,尚未经历续签。PHP7.4.33、Redis7.2.16及systemd airz-analysis均active/enabled;已停本机worker PID1876,现由远程接管,最后PID566317/NRestarts0。**不要直接执行下文本机worker启动命令连接活动库;测试用隔离配置,维护先核对远程任务。** 服务器.env连接127.0.0.1的既有MySQL5.7/airz,未重新迁移。39项HTTPS检查(含原报告161/229、金额、解密、助手上下文和两份PDF)通过,外网接口/后台登录页/敏感路径通过;未调用收费AI。仅PHP已部署,H5尚未发布。配置/兼容处理/恢复见 D:/AAdesk/202609/airz/deployment-baota.md,服务器私密备份 /root/airz-deploy-20260929/,部署包与检查脚本已归档其deployment-artifacts/。下一步可对接新HTTPS API、发布H5,再做移动端/跨平台验收。
最新数据库切换(2026-09-29):已完成用户授权的远程MySQL5.7.44迁移与后端连接切换,当前使用111.230.144.231:3306/airz及用户指定root账号。25表184行、2份历史报告内容摘要一致;20个CHECK用8个触发器保留,51项约束与24项应用/真实HTTP检查通过。log_bin_trust_function_creators临时设1后已恢复0,当时Web入口及本机worker已恢复;后续宝塔部署已停止本机worker并由远程接管。.env仅改database段,其余加密/Redis/Token配置保持;无真实AI调用。本机MySQL8保留回退,正式写入恢复后不能直接回切旧库丢弃新数据。最终备份D:/AAdesk/202609/airz-backups/mysql57-switch-20260929/prepared-20260929-144304/;后端database/mysql57-switch.md含完整记录,凭据不输出。后端schema.sql现为5.7含触发器结构,历史本机迁移脚本不得直接重跑远程。
最新(2026-09-29):用户限定的07/08/09首屏调整已完成。08上下文一行摘要点击展开,历史入口弱化,其余助手界面保留;07核心参数三列同屏、完整依据可展开;09紧凑元信息/导出入口和浅色准备状态卡,改善内容更早出现。H5受控响应在360/390/1280px通过交互与截图验证,最终console无错误;Android/微信编译通过,详见进度6.25。无数据库/后端改动、无真实AI调用;下一步仍是真机/微信内H5/Safari验收。
用户要求界面内容尽可能还原`docs/原型.jpg`。原型08已继续实施:界面、持久会话、固定评估/产品上下文、异步回复、分页、原键重试、共享额度、报告/产品/对比入口及登录返回已完成本地联调;关键代码有中文注释。原型10也已完成本地联调;09 PDF普通H5也已实施;08累计13次真实调用,新增连续三轮金额精度专项已通过;下一步为移动端、跨平台与真实产品验收。
| 内容 | 当前状态 |
| --- | --- |
| 04/05 产品匹配详情 | 原型布局与单产品解释保留;咨询AI已接08;产品对比仍可进入 |
| 06 产品详情 | 公共资料和本次评估冻结快照分开读取 |
| 07 产品对比 | 同次2—3产品、补选/移除/刷新保留;可带选择进入08,PRODUCT-005待验收 |
| 08 上下文AI助手 | CHAT-001—003待验收,CHAT-004开发中;76项助手回归通过,H5及平台编译为前轮结果;演示边界与金额精度真实三轮专项通过,真机/跨平台待验收 |
| 09 报告 | 三栏及本次报告咨询AI入口完成;REPORT-004整体仍开发中;REPORT-005普通H5导出已本地验证,平台/容量待验收 |
| 10 下一步行动 | REPORT-006待验收;四项行动/登录恢复/状态守卫已接通,38项H5检查及Android/微信编译通过 |
当前27个注册页面、63个稳定任务编号。本轮承接上一轮前后端未提交改动并保留;未提交/推送。PHP后端已部署,H5尚未发布。
## 2. 原型08实现与下一步
完整契约见[上下文AI助手开发契约](上下文AI助手开发契约.md)。前端`packages/finance/assistant/assistant.uvue`、`packages/finance/services/assistant.uts`;后端`AssistantChats.php`、v1 `Assistant.php`和`AnalysisWork.php`。旧sendAssistantMessage模拟入口已移除。
- 普通会话scene=assistant、assessment_id/analysis_context=NULL。本轮用户明确授权后已执行后端`database/migrate_assistant_context.py --apply --worker-stopped`,新增两列及归属约束共5项,复跑0项。备份`D:/AAdesk/202609/airz-backups/assistant-context-20260928-154651-271907/`,原2份评估会话/2条日志逐条未改写。恢复优先保留可空列、回退助手代码,不能整表覆盖后续记录。
- GET `/assistant/context`只读预览,GET/POST `/assistant/chats`读取列表/创建,GET `/assistant/chats/:id`恢复并校验URL绑定,GET/POST `/assistant/chats/:id/messages`分页/发送。创建与进入页面均不调用模型,快捷问题只填入文本框。
- 明确发送创建用户行与ast:调用日志,analysis:work持久消费。每条逻辑消息requestId保持不变;回执丢失同retryAttempt重放,明确失败才手动递增0→1→2。每会话100轮、同时一条待处理;每日创建30会话,调用与评估/单产品解释共享每日额度。
- 并发序号/幂等/额度必须保持锁定当前读,不能仅依赖用户锁后普通SELECT;测试发现MySQL可重复读旧快照会造成重复序号。
- 页面每3秒查询、最多60次,可续查;离页清空、Token变化拒绝迟到回包。消息/报告不落本机缓存,H5只保存chatId等ID到URL。登录后只接受白名单助手返回并重新鉴权。
- 2026-09-29在首轮6次、边界4次之后,追加同一对比会话3轮真实Flash金额复测,全部成功落库,持续保持123456.78元=12.345678万元,口头修改不影响冻结报告和三态。本轮输入16582/输出971 token,累计13次、输入51709/输出3391 token;无自动重试。第1项金额专项限定样例通过,不能外推为全量真实产品或所有输出格式通过。见[真实语义验收记录](AI助手真实语义验收.md)。
tests/assistant_semantics.php支持--boundaries定向4例、--money-precision同会话3例,默认只读计划,显式--fake/--live;tests/assistant_money.php验证金额。服务端从冻结facts/产品条件提取金额白名单,使用BCMath,带单位的错误金额拒绝成功落库、保留用量、不自动重试;不替代所有自然语言数值语义验收。前轮76项助手与舍入拒绝回归已通过;本轮生产源码未变,真实/假模型各11项流程、30项金额单测/回放、21项格式解析/回放通过,三条真实回复金额全部通过。首条原始JSON出现相同内容的重复answer键,已确认现有解析/落库有效文本一致,严格重复键拒绝不在本轮金额专项范围。测试数据已清理,原有四表摘要一致,仍1用户、2评估/会话、2日志;正式worker恢复PID44944,后续重新查PID。
原型10及09 PDF已实施;下一步做移动端键盘/安全区/长回复滚动/返回恢复/失败重试,再补微信内H5/Safari、真实产品人工样例及生产容量验收。供应商与真实产品准备仍可推进,不虚构整体完成率。
## 3. 必须延续的业务约定
- 不做草稿;重新评估进入空白表单,不覆盖历史评估。
- fa_user_info一条对应一次评估;fa_ai_chat保存关联报告及匹配结果;fa_ai_chat_log保存消息和调用记录。不新建独立评估/报告/匹配表。
- Token保存在Redis,fa_user_token已删除。
- 金额数据库DECIMAL(11,2),单位元;API用元十进制字符串;客户端万元,保留精度,例如123456.78元显示12.345678万元。
- 产品稳定条件、额度/期限/利率等使用独立字段,地区/补充规则JSON;沿用冻结产品快照,不用当前产品参数覆盖历史。
- 规则决定eligible/ineligible/unknown,AI只解释;无评分策略则score=null,不使用原型92%、B+或固定三正三反。非候选的正向部分称“已满足条件”。
- 申请仅限资料准备与引导;不提交银行申请、不声称受理成功。真实产品尚未提供,本地6条上架资料是明确标注的演示产品。
- DeepSeek走腾讯TokenHub,已配置Flash/Pro;默认Flash。短信、微信/一键登录、外部查询、客服服务商仍待定。
- 中文交流与关键中文注释;UTF-8无BOM。保留未提交工作,不自行提交/推送/建PR、迁移或覆盖用户改动。凭据只从后端私密配置读取,不在文档、命令输出、日志或客户端复述。
## 4. 04/05实现入口和注意点
前端:`packages/finance/product/product.uvue`、`packages/finance/services/matches.uts`、`packages/finance/services/compare.uts`。
后端:`application/common/library/ProductExplanations.php`、`MatchRecords.php`、`DeepSeekClient.php`、`AnalysisTasks.php`、`application/admin/command/AnalysisWork.php`、`application/api/controller/v1/Assessments.php`、`application/route.php`。
- POST `/api/v1/assessments/:id/matches/:productId/explanation`仅接受requestId;返回HTTP200的匹配详情及异步状态,不能把HTTP200理解为模型完成。
- fa_ai_chat.match_result中单项ai_explanation保存queued/running/completed/failed和逐条解释;首次not_requested。fa_ai_chat_log的`pex:`调用日志作为持久待办,analysis:work在报告队列空闲时消费。
- 成功缓存、并发点击和同键重放不会重复调用。每评估每产品最多三次尝试,与报告共享每日用户调用预留额度。失败新键可重试;租约失效明确失败,迟到仅补用量。
- 模型可能重排理由,按reasonId完整集合校验无重复/遗漏/外来项,再恢复规则顺序,不能再用数组位置强制匹配。
- 更新解释不能使分页失效:游标摘要排除ai_explanation,仍校验其他冻结字段。
- 前端每三秒读状态、最多六十次,可手动续查;离页停止轮询、清理数据并拒绝迟到回包。UTS Android局部函数不支持任意前向引用,声明顺序须注意。
详见[产品匹配规则开发契约](产品匹配规则开发契约.md)第9节及[需求与评估结果数据契约](需求与评估结果数据契约.md)。
## 5. 验证与现场状态
- 51项单产品解释测试、70项匹配HTTP/快照检查通过。真实Flash共6次调用,4次成功、2次因旧顺序校验失败,修复后不符及待核实样例通过;不是6次均成功。
- HBuilderX5.26 Android/微信小程序编译通过;H5 Chromium在390×844、390×1000、1280×900验证,正常最终流程无业务console.error/warn。微信内H5、Safari及真机、真实产品人工金标准未验收。
- 合成测试账号/评估/会话/日志、Token与队列已清理,测试HTTP和浏览器会话已关闭。上次数据库核验为1会员、2成功评估/会话、25张表;原评估161/229未改写。
- 2026-09-28本轮收尾正式analysis:work已重启加载助手代码,PID45420已恢复运行(原型10测试后);新会话应重新检查进程/任务状态,不能将旧PID视为永久有效。已有模型worker需在代码变更后安全重启。
- 前后端均有未提交改动;本次已实施原型08及10,不清理既有工作树。开始新一轮修改前先git status并保留用户现有改动。
本轮08验证:助手70项、产品解释51项、任务31项、评估HTTP36项、匹配HTTP/快照70项通过;H5 Chromium390×844/1280×900完成发送/刷新/分页/重试/回执丢失/三入口/越权/登录返回验证,Android和微信编译通过。合成数据、令牌、隔离服务、浏览器已清理。截图和无凭据QA脚本在`C:/Users/JUN/AppData/Local/Temp/airz-assistant-20260928/`。共享layout既有H5类型警告保留,正常浏览器运行无业务error/warn。
此前04/05测试与截图目录:`C:/Users/JUN/AppData/Local/Temp/airz-product-explanation-20260928/`。其中flow/retry/states/capture05/edges/final-capture脚本和截图可参考,但临时目录可能被系统清理;fixture.json已删除,不假定旧账号仍可登录。产品对比和报告三栏证据分别在airz-compare-20260928、airz-report-tabs-20260928临时目录。
原型10最新验证见开发进度6.20:38项H5检查(真实API主流程+边界响应注入)、Android/微信27页编译通过。测试已清理,原161/229报告会话摘要未改变,数据库恢复1用户、2评估/会话、2日志。H5最新5173/PID51832,worker PID45420;新会话先检查当前状态。截图与无凭据脚本在`C:/Users/JUN/AppData/Local/Temp/airz-next-step-20260928/`。
原型10代码:`packages/finance/next-step/next-step.uvue`、`services/next-step-route.uts`。只读status/report/matches接口,核对成功归属与快照元数据;eligible且available才开放准备。重新评估按status.type进入空白表单;登录白名单恢复;onHide清空个人数据、generation/token拒绝迟到请求。未修改后端业务或迁移。不要把模拟不可用/旧版响应测试说成真实产品/旧数据验收。
原型09 PDF最新见进度0.20/6.21:29项PDF、20项真实HTTP、24项受控浏览器检查通过,最终Android/微信编译通过。引擎Dompdf3.1.6在后端extend/report-pdf独立composer.lock,字体Noto Sans SC含许可与哈希;部署须在该目录composer install,详见其README。后端ReportPdf与report.pdf路由、MatchRecords::exportSnapshot;前端ReportExport组件/report-export.uts,登录report-route白名单。无迁移,无收费模型调用。仅普通H5开放下载,其余端给操作提示;不能把编译通过说成原生下载验收。
本轮曾被自动审批拒绝组合UI夹具启动,改以受控响应验证浏览器,不声称完整真实浏览器联调。真实HTTP检查独立通过。全部真实合成账号/Token/队列已清理;原两份报告摘要相同。worker现PID34324,H5仍5173/PID51832;每次重查。PDF/截图证据在`C:/Users/JUN/AppData/Local/Temp/airz-report-pdf-20260928/`。
## 6. 环境与验证命令
前端目录:`D:/WorkSpace/cyun/ai融资`,uni-app x/Vue3/UTS、HBuilderX5.26 VDOM,无npm构建入口。后端目录:`D:/AAdesk/202609/airz`,FastAdmin/ThinkPHP、PHP7.4、MySQL/Redis。
```powershell
# 在对应项目目录执行;后端合成任务测试前先核对并停止全部分析worker,结束清理后恢复。
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/product_explanations.php --worker-stopped
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/match_records.php --worker-stopped
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_chats.php --worker-stopped
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_reply.php
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_money.php
# 默认仅输出计划;--fake --worker-stopped才执行合成流程。
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' tests/assistant_semantics.php --money-precision
# --live会真实调用并产生用量,日常回归不加。
& 'D:/Develop/phpstudy_pro/Extensions/php/php7.4.3nts/php.exe' think analysis:work
& 'D:/Develop/HBuilderX/cli.exe' launch app-android --project 'D:/WorkSpace/cyun/ai融资' --compile true --continue-on-error false
& 'D:/Develop/HBuilderX/cli.exe' launch mp-weixin --project 'D:/WorkSpace/cyun/ai融资' --compile true --continue-on-error false
```
H5已清理旧开发服务器并以最新代码恢复`http://localhost:5173/`,新会话先核对监听。注意HBuilder多次launch可能保留旧端口产物,新增代码未加载时先重启正确服务,不把旧包误判为业务错误。可用Python为`D:/Develop/Python311/python.exe`。已有Playwright CLI使用`npx --no-install @playwright/cli`,从临时QA目录运行避免向项目写入日志;工具可用性按新会话实际环境选择,无需安装全局依赖。
本地PHP测试服务需指定`-t D:/AAdesk/202609/airz/public`,否则可能返回首页HTML。UI测试使用随机合成账号,不输出密码/Token;原有真实用户账号无需改动。恢复扫描可能拾取测试任务,仅换Redis队列不足以隔离,故测试前要检查worker。
## 7. 新会话可以直接发送
> 请先阅读docs/新会话交接.md、开发进度0.23/6.24和原型04-10页面方案,继续原型08移动端及跨平台验收,先阅读AI助手真实语义验收记录:金额精度三轮真实专项已通过,无需重复收费调用;核对可用浏览器和真机环境,清楚区分模拟与真机结果。界面尽量还原docs/原型.jpg,关键代码加中文注释;保留已有04/05解释、07对比、08上下文助手、09报告及10行动成果。只做材料准备与引导,不提交银行申请;PDF未完成时不做假下载。先检查工作树与数据库/worker现状,新增迁移仍按具体方案申请授权。