9.0 KiB
AI-001 工作经历AI优化后端整合说明
2026-10-26 A7 新候选:真实模式改为 mode=deepseek + real-enabled=true 显式开启,不再要求 dev;新增 Redis 调用额度与并发门禁(429/Retry-After=60、Redis 故障503)。告知升级 work-experience-external-processing-v2,developmentOnly=false。下文旧版本/仅开发环境及旧验收记录属于历史,当前规则和上线边界以 正式环境配置说明 为准;本批尚未部署,不代表合规审核完成。
日期:2026-10-23;目标仓库baskbuddy/zhangshun,分支qingsongpin-AIDevelop,移植基线8c94291;由用户提交推送。本交付尚无AI提交SHA。
功能与文件
新增mydreamjob-server/src/main/java/com/mydreamjob/resume/optimization/下12个Java文件:Controller入口、Service权限与校验、Router模式选择、局部Advice安全错误、请求响应DTO、模型接口、模拟及DeepSeek实现、配置、输入guard和模型异常。 新增src/main/resources/ai/下work-experience-v1.txt及work-experience-deepseek-v1.txt;新增src/test/java/com/mydreamjob/resume/optimization/下8个测试类。src均相对mydreamjob-server。 修改docs/openapi-rc.json仅新增AI路径;docs/verify_openapi.py同步183 paths/221 operations和AI断言;docs/resume-api.md追加模块说明。交付本说明、前端对接方案和质量评审。无新依赖、迁移、数据库写入、全局认证或配置文件修改。
配置与启动
2026-10-26 告知候选接口变更:优化前读取 GET /profile/me/work-experience-optimization/notice,每次优化须提交原生布尔 true 和当前 consentNoticeVersion;缺失/旧版本拒绝,不向模型转发同意元数据。旧 DTO 四字段请求不再可用。日志和前端交互边界详见 当前告知与同意说明;下文来源配置/历史结果不替代本批验证。本批仍仅开发合成资料,不是生产合规批准。
复用原后端基础设施/JWT运行配置;不提交任何真实凭据。模式配置AI_WORK_EXPERIENCE_MODE=off/stub/deepseek,默认off;未指定mode且旧ai.work-experience.stub-enabled=true时兼容stub。deepseek要求AI_WORK_EXPERIENCE_REAL_ENABLED=true,保持原有运行profile,不再要求dev。显式mode优先且非法值失败,Key缺失不降级。真实外呼受Redis额度及并发门禁保护,详细配置见A7正式环境配置说明。
DEEPSEEK_API_KEY通过本机或部署环境安全注入;DEEPSEEK_MODEL默认deepseek-flash,可选deepseek-v4-pro;DEEPSEEK_TIMEOUT_SECONDS默认20秒(1至60)。无需开启DEEPSEEK_LIVE_TEST或DEEPSEEK_QUALITY_TEST启动服务。可选SERVER_PORT=8081避免冲突,API前缀/api/v1;生产政策与前端同意展示须另外确认。
官方端点固定https://api.deepseek.com/chat/completions,非流式、关闭思考、JSON、1500最大输出token,不跟随重定向、不自动重试,64KiB响应上限。异常不携带原始cause或上游正文。输入guard只覆盖列举模式,不保证全面脱敏;JSON结构不能证明事实忠实。
整合与验收
先检查AI路径及共享契约冲突,保留目标其他模块;不整包覆盖认证/业务代码。目标定向命令在mydreamjob-server执行:
mvn -q '-Dtest=*WorkExperience*Test' test
离线验证时保证DEEPSEEK_LIVE_TEST和DEEPSEEK_QUALITY_TEST未设为true,否则会触发付费真实请求;两项默认跳过。在仓库根执行python ./docs/verify_openapi.py。 负责人后续在隔离开发环境启动,以STUDENT开发账号向POST /api/v1/profile/me/work-experience-optimization发送合成请求,检查simulated=false、promptVersion=work-experience-deepseek-v1及错误路径;请求示例见前端方案。不要用refresh-token访问业务接口。完整JWT过滤链及实际HTTP尚未验收,不能用standalone MockMvc替代。生产限流、数据政策供应商确认、正式告知/授权及至少30例评测尚未完成;不得直接生产发布。 源历史证据:用户IDEA单例真实调用通过;5例合成质量评审未见描述事实新增,有表达提升有限及建议措辞观察项,见质量评审。本次不会重复外呼。
回滚与交付边界
回滚先mode=off重启;必要时撤销本批精确文件,无数据库回滚。无自动保存、前端修改、评分变化;复用现有保存流程。暂停AI-002不在本交付。不要提交target、日志、.idea、.env、真实Key或用户资料。用户核对精确暂存清单后自行提交/推送,先确认分支CI是否自动部署;助手不提交推送、不触发Jenkins。
目标仓库实际验证(2026-10-23)
在qingsongpin-AIDevelop基线8c94291移入后,定向测试22项:20通过、2跳过、0失败0错误;OpenAPI183 paths/221 operations及AI断言通过;git diff --check通过。Key长字串模式扫描未发现疑似真实Key(仅模式检查,不代表全面秘密检测)。无生产环境、HTTP黑盒或真实模型新增调用;未提交/推送。关键认证及pom未修改。
v2 规则与版本(目标工程后续修正)
上文为来源交付时的历史记录,不是目标工程的最新验收结论。目标工程已合并其他模块,静态契约为 212 paths / 260 operations。v1 质量评测计划最多 30 次,实际在第 29 例因职责边界语义偏差停止,1 例未执行;另有改写价值有限、显式限制省略等观察项。
新增资源 ai/work-experience-deepseek-v2.txt,真实适配器用 PROMPT_VERSION 推导资源路径,Router 用同一常量返回版本。旧 v1 保留为历史,不再由真实适配器加载。stub 仍用 work-experience-v1,默认 off、dev 门禁、超时配置、无自动保存等行为不变。
v2 明确禁止把“不负责”变成“不参与”,不得省略或增强否定范围;保留指导、协助、权限、次数和上线状态。事实不足时追问,原文清晰时可保持原文并说明,不以制造改动替代真实价值。
离线验证能力边界
WorkExperiencePromptRegressionTest 用本机合成上游覆盖 Q29、Q16/Q17/Q21/Q24 及测试/上线和权限边界;检查发送的系统规则、用户原文与结构解析,不是事实语义校验器。返回版本和 JSON 结构通过不能证明模型忠实度。
离线执行仍必须关闭 DEEPSEEK_LIVE_TEST 和 DEEPSEEK_QUALITY_TEST、移除真实 Key。Live 质量测试扩充了历史问题样本,但本轮不启用。完整源码与精确哈希以新的隔离基线为准;旧 JAR 不作为 v2 制品。
待授权真实复验
v2 真实模型复验尚未执行;需单独授权和新制品重新复验,不能沿用旧质量结果放行。生产限流/费用控制、数据政策与正式告知授权仍是独立门槛。本轮不提交、不推送、不发布、不改前端。
2026-10-26 信息不足修正候选(新基线,历史记录保留)
规则与版本
上文“v2 尚未执行”为此前阶段记录。A3 后续授权真实复验实际 16 次,15 例质量通过,Q09“暂无相关经历。”返回 OPTIMIZED 后停止,14 例未执行;未编造经历,但违反信息不足返回 null 规则,不能登记完整质量通过。
新候选增加 WorkExperienceInformationPolicy:整段只由有限登记的无经历、占位、空泛评价或纯求职愿望语句组成,才在 Router 本地返回 NEED_MORE_INFO、空描述和补充问题,不调用供应商。支持有限的人称/时间前缀、空白、标点及分句组合;只要有未命中的分句,原文继续传给模型,不用“包含暂无”等子串或少于 10 字判定。模拟实现移除旧长度阈值,共用该规则。模型响应若只有同类已登记无事实语句,也归一为信息不足。
默认 off、dev 门禁、学生角色、同意和敏感输入校验仍生效;本地路径也先经过安全输入校验。路径、DTO、OpenAPI 212/260、保存流程不变;提示词资源仍是 work-experience-deepseek-v2,修正版本由新的源码清单和同次 JAR 哈希区分。simulated 表示运行模式,不是本次是否发生付费外呼;即使真实模式返回 false,也可能由本地判定直接返回。
离线验证边界
新回归涵盖 Q09、无事实变体、短真实经历、混合事实、供应商无事实返回、关闭/角色/同意/敏感输入门禁,以及完整 JWT 随机端口无写入检查。新基线冻结后重新执行定向、静态契约和完整构建;结果以新批次报告为准,不把计划写成通过。
该有限集合是保守补强,不是通用自然语言事实或信息充分性证明。集合外语句仍依赖模型,不声称识别所有愿望、隐私或事实漂移。
真实复验状态
新候选尚无真实模型质量结果。后续必须使用新 JAR;Q09 若本地直接返回,应记为本地规则验证,不得计入真实模型质量案例。此前 A3 的 16 次调用、Q09 失败及未执行项保留,不由离线回归覆盖。本轮不提交、不推送、不发布、不改前端。