Files

90 lines
12 KiB
Markdown
Raw Permalink Normal View History

# 评估配套发布准备(2026-10-15)
状态:**后端已于2026-10-15按用户明确授权部署,微信小程序待用户自行发行。** 线上版本 `20261015-assessment-region-batch-r1`,15:38:53(Asia/Shanghai)恢复入口与worker;固定候选 `rc-20261015-assessment-region-batch-r1`未重建。详见[实际发布记录](后端评估配套发布-20261015.md)。下方保留发布准备时的边界及操作依据,现场预检/备份/恢复/无付费验收均已完成,未调用新模型。
固定[源码与基线清单](发布候选/assessment-20261015-r1/manifest.json)和[本轮核验结果](发布候选/assessment-20261015-r1/verification.json)。三个归档位于 `D:/AAdesk/202609/airz-backups/release-preparation-20261015/`:
| 归档 | 内容 | 用途 |
| --- | --- | --- |
| backend-runtime.zip | 9个后端运行文件 | 经现场预检后整体替换,含2个新增类 |
| frontend-source.zip | 206个完整前端源码/资产文件 | 在独立目录解压后用HBuilderX重新编译;不是微信上传包 |
| backend-recorded-baseline.zip | 7个旧后端文件 | 与上次生产发布回执摘要完全一致的恢复材料,使用条件见回滚章节 |
归档大小、SHA256、逐文件清单及旧文件来源已固定在manifest.json,归档回执另存同证据目录package-receipt.json。任何源码、包、基线或依赖变化均应重新生成候选,不沿用本回执。
## 基线与累计范围
最近已有后端发布为 `20261014-product-ai-r1`。其回执记录目标 `https://airz.hqling.cloud`、站点根 `/www/wwwroot/xctai.cn`,运行目录 `public`。这只是历史记录,执行发布前必须现场核对目标、站点和实际版本,不能把旧PID/队列状态当作当前状态。
离线核对上次133文件记录:125字节一致、7个业务变更,`application/route.php`仅混合换行与统一CRLF不同,统一CRLF后的SHA256与回执完全一致。路由不纳入替换,线上仍须按原记录摘要核对。另2个新增类在旧清单中未登记,发布前必须确认目标路径不存在;若已存在,应先核对归属与内容,不能直接覆盖。7个旧文件优先从已核历史runtime.zip提取,另外2个由Git对象重建换行后逐字节匹配生产回执;不是把HEAD直接视为线上版本。
后端目录统一为 `application/common/library/`,以下9个文件必须配套:
| 文件 | 动作 | 累计行为 |
| --- | --- | --- |
| AnalysisTasks.php | 替换 | 单次/分批执行切换、内部额度与租约共用接口 |
| AnalysisBatchTasks.php | 新增 | 逐批调用日志、额度、租约、用量、绑定与检查点 |
| ProductAiBatches.php | 新增 | 按同一冻结目录规划批次、恢复与最终完整合并 |
| AssessmentNeedsReport.php | 替换 | 分批请求/报告解析、省份标签与年龄等事实展示 |
| AssessmentRecords.php | 替换 | 名称/省份代码配对、版本保存、详情回读,写最新资料前移除省份代码 |
| MatchRecords.php | 替换 | all分组和首屏三款读取排序,保留真实资格/分数/冻结rank |
| ProductAiConditions.php | 替换 | 年龄与地区可信事实、可选分支校验、待补资料不限固定条数 |
| ProductAiTemplates.php | 替换 | 分批模板校验、填值单位与年龄主语规范化 |
| ProductMatching.php | 替换 | 新目录冻结分批/年龄/地区/明确分支策略与摘要 |
无需DDL、数据迁移、产品导入或产品条件修改;产品继续原16字段,province_code仅随评估版本JSON保存,不新增user_info列。无新依赖安装、配置密钥变更或模型/额度参数调整。管理端JS/模板不在本轮替换范围,上次部署的管理端版本是本候选的依赖。
前端累计13个运行文件如下,完整206文件归档同时保留其公共组件、服务、图标和项目构建入口:
- `packages/finance/`内analyzing、assessment、confirm、report、matches、product、compare七页同名.uvue:省份填写/确认、完成后进入匹配结果、默认三款、匹配度/理由和产品可选信息展示。
- `packages/finance/services/matches.uts`、`records.uts`:all分组、地区显示、版本详情与提交。
- `packages/finance/components/AssessmentProvinceSelect.uvue`、`MatchProductCard.uvue`:34省级单选及紧凑产品卡。
- `services/cities.uts`、`services/match-route.uts`:省份字典/历史城市回填及all路由白名单。
完整源码的根文件为App.uvue、main.uts、manifest.json、pages.json、uni.scss、index.html、platformConfig.json,目录为components、packages、pages、services、static。已排除.env、数据、私密配置、IDE设置、缓存、文档、测试及unpackage旧编译产物。当前源配置为production、`https://airz.hqling.cloud/api/v1`、演示关闭,未改配置。
## 版本兼容与验证边界
| 组合 | 当前依据与要求 |
| --- | --- |
| 旧城市请求→新后端 | 旧字段形状与五城自动推码保持;原版本及默认城市HTTP回归通过 |
| 新省份请求→新后端 | 34省×个人/企业持久化、编辑回读、重放/冲突及省份HTTP已通过 |
| 新客户端→旧后端 | 不兼容:旧提交白名单没有provinceCode,旧匹配分组不支持all;必须先部署后端 |
| 旧冻结报告→新后端 | 按原目录与原版本读取,不补新事实、不重算;已有版本/历史回归通过 |
| 旧客户端读取/编辑新省份资料 | 尚无实际发行包与真机证据;不得据旧请求回归声称完整互换已通过 |
| 新分批/省份快照→旧后端 | 未验收旧代码读取与继续任务;旧代码也有原数量/缺失项限制,不允许直接代码回退 |
分批会把一次完整评估拆成多次实际模型请求,逐批消耗调用额度并增加耗时。历史回执重建的25款/82条件/100模板样本为7批,第5次真实评估约152秒;不是当前正式目录容量或当前省份提示语义的实测。发布前应只读获取最新正式目录并离线编译规划,核对数量、单批32项/48000字节描述/模板槽位限制、调用预算及等待体验;不擅自提高正式额度或触发收费评估。
已完成的业务证据包括690项PHP纯检查、108项UTS、18项受控H5、微信29页编译,以及436项省份持久化、58项版本、默认城市HTTP514项/158请求、省份HTTP533项/162请求、地区事实68项。各套件按原证据记录,重叠不合计。本轮只核候选归档、摘要、依赖与语法;没有重跑同类数据库测试、新编译上传包、服务器验收或真实模型调用。持久化专项使用空合成目录,HTTP/版本使用演示产品。
本轮验证3个ZIP共222成员的路径、成员集合、逐文件字节及CRC;9个候选和7个恢复PHP文件语法通过;完整前端220处@/导入均在归档内;34省份同源生成检查通过。255个后端运行PHP字节与前轮隔离持久化验收一致,8份历史证据摘要保持。完整检查记录见verification.json。
## 获得发布授权后的操作顺序
1. **绑定现场与备份。** 核对上述域名、真实站点路径、线上资源版本、PHP7.4与依赖。复核133个记录文件以及2个新增路径;差异须解释并形成新候选。私密记录.env/服务/队列/模型参数及文件权限摘要,不输出密钥。备份当前实际7个被替换文件、两新增路径是否原本存在、资源版本与维护配置;保留正式库灾难备份,不把数据库或私密配置放入候选ZIP。历史恢复包不替代现场备份。
2. **先阻止新增写入,再排空任务。** 覆盖评估、重试、助手和产品解释等新调用入口;让已有任务完成,核对活动评估、实际模型调用和三类队列均无待办后,再正常停止所属airz-analysis。若有未完成调用,暂停发布并等待/分析,不强杀、删队列或重跑收费任务。记录维护起点与业务行/结构摘要。
3. **维护窗口整体替换。** 先将候选9文件放入独立暂存目录并逐项核SHA256/PHP语法,确认全部齐备后整体应用;Web PHP和worker均不能在混合版本下接收业务。记录7文件替换、2文件新增及真实权限;不覆盖.env、数据库、上传目录或依赖,不重跑历史初始化/迁移脚本。
4. **加载与无付费核验。** 按实际PHP-FPM服务重载代码/OPcache,启动一个归属明确的airz-analysis,核对新进程命令、ready/心跳/无重启循环及错误日志。只读核对最新正式目录可冻结/分批规划、旧报告/产品/字典和身份边界、HTTPS与敏感路径、业务数据及结构保持;不通过创建正式评估来做默认冒烟。没有新产品/模型配置操作,不要求重启Redis。
5. **恢复与观察。** 明确允许接收新版本资料前记录恢复时间;恢复入口后再次核实际服务状态、队列和日志。记录本次已部署摘要、备份、前后数据一致性和无付费冒烟结果,不能沿用2026-10-14旧服务回执。若发生异常,按下节对应阶段处理。
6. **后发行小程序。** 后端通过后,从固定完整源码在干净目录重新编译微信29页,记录HBuilderX版本、全部源码清单摘要、编译日志和上传包摘要;核对request合法域名。小程序由用户发行,版本号/发行时间由实际回执登记,不能使用本候选标识充当微信版本。H5发布不包含在本操作单中。
7. **真机验证。** 验证34省单选/取消/回填、个人/企业确认和版本详情、旧报告、默认3款/查看更多/对比、处理中离开返回。新的真实评估会收费,须按另行授权的固定资料、调用范围和预算执行并保留原始响应;省份不能证明具体城市、户籍或网点覆盖。ID56申请金额/本笔月供口径仍单独待核对,不借发布修改产品条件。
## 回滚条件
**尚未恢复新写入且未形成新版本资料/目录/检查点/报告时:** 保持维护,确认没有活动调用,停止所属worker。优先恢复本次现场备份的7个旧文件,并核其摘要与部署前一致;只有本次备份证明新增两路径原本不存在、当前内容仍精确等于本候选且没有其他代码依赖时,才可移除本轮新增文件。资源版本和维护配置只按本次备份还原,重新加载PHP/worker并只读复核。归档中的7文件旧基线仅适用于现场仍精确匹配20261014-product-ai-r1的情形。
**已经恢复写入或产生任何新省份/分批数据时:** 再次暂停新增写入,保留所有新资料、调用用量、检查点和报告,默认保留兼容读取/继续任务所需代码,优先向前修复。切回旧代码、回退客户端或恢复数据库都须重新评估实际新增数据及兼容读取范围,不能用“无DDL”推断可直接回退,也不能整库覆盖后续业务。小程序旧发行包/对应源码摘要目前未知,尚不能承诺前端精确恢复。
## 复核入口与下一步
本机只读复核命令:
```powershell
& 'D:/Develop/Python311/python.exe' 'D:/AAdesk/202609/airz-backups/release-preparation-20261015/verify-candidate.py'
```
它只核当前源码/归档/历史证据、PHP语法和字典一致性,不连接服务器或数据库、不启动worker或调用模型。出现漂移须更新候选,不直接重新运行已完成的build-candidate.py覆盖原产物。
用户随后已明确授权并完成本操作单范围的后端发布:135路径核对、正式25款产品冻结及7批规划、现场备份、维护期30表一致性、29服务器/31公网HTTPS和唯一worker均已验证。下一步由用户重新编译发行微信,提供实际版本/发行时间/上传包摘要;微信真机及新省份提示真实模型语义仍待验收。正式写入已恢复,后续遵守上节保留新格式数据并优先向前修复的限制。