# 个人头像/企业 Logo:开发验证记录 日期:2026-10-27。范围:后端开发与定向回归,不是发布验收报告。 ## 源码与边界 仓库:C:/Users/15642/Desktop/zhilai,HEAD 为 c6ccab54044c7df580a80cb140391c4d2a69c340。本轮开始时已有注销、评分、配置与文档等未提交修改;不把这些已有修改登记为本轮成果,也没有清理或覆盖它们。 新增 V63,不修改 V1~V62 历史迁移;无新增依赖。图片存数据库,不增加宿主机目录或容器挂载;不修改 MySQL 的既有 32 MiB 配置。未改前端、未提交、未推送、未触发 Jenkins、未发布。 ## 已完成 - 上传自己的个人头像、上传自己的企业 Logo、分别删除和二进制读取。 - JPEG/PNG 扩展名/MIME/真实格式校验,2 MiB、4096 单边、400 万像素上限,最长边 512 重编码 JPEG,去除原始元数据。 - 个人头像与公司 Logo 独立;/auth/me 与现有会话摘要读取用户/公司当前引用。 - 私有头像只允许本人或符合当前 DIRECT 沟通授权的成员读取;第三方、拉黑、禁用、未选择身份、邀约隐私均有回归。 - 替换后新 URL、旧 URL 404、no-store;事务回滚恢复旧图,用户锁串行化并发替换。 - 企业普通资料更新也锁定企业行,避免旧快照覆盖并发 Logo 更新。 - 账号注销完成时清除二进制,物理删除时外键级联清理。 - 静态契约新增 3 paths / 5 operations,总量 216/266;同步受影响计数与身份门禁测试。 ## 定向测试 以 Surefire XML/txt 为准;下表是不同测试类的汇总,重复执行不累计: | 测试类 | tests | failures/errors/skipped | | --- | ---: | --- | | ProfileImageIntegrationTest | 18 | 0/0/0 | | CompanyServiceTest | 11 | 0/0/0 | | CompanyControllerMvcTest | 1 | 0/0/0 | | CompanySizeDisplayIntegrationTest | 8 | 0/0/0 | | CompanyResumeDownloadIntegrationTest | 19 | 0/0/0 | | UnifiedRegistrationIntegrationTest | 13 | 0/0/0 | | WorkExperienceOptimizationSecurityIntegrationTest | 9 | 0/0/0 | | AccountDeletionPersistenceIntegrationTest | 9 | 0/0/0 | | IdentityPolicyTest | 27 | 0/0/0 | | 合计 | 115 | 0/0/0 | ProfileImageIntegrationTest 校验整份运行时路径/方法集与静态契约一致,额外校验本批五个 operationId。静态 python docs/verify_openapi.py 与 git diff --check 均通过。 开发阶段第一次编译发现本批 SecurityRequirement 注解缺少必填 name,已修正;当时未执行测试,不把该次结果计入通过。首次静态 verifier 还发现 /auth 路径精确白名单缺少新头像路径,已同步并补专项断言。修正后重新运行,保留 target 下原始开发日志。 原始输出: - mydreamjob-server/target/profile-image-test.log:首次编译失败。 - mydreamjob-server/target/profile-image-test-run2.log:初轮头像/企业服务回归。 - mydreamjob-server/target/profile-image-regression.log:八类扩大回归,88 项。 - mydreamjob-server/target/profile-image-final.log:头像与身份策略复跑,45 项;与上表有重叠,不另累计。 - mydreamjob-server/target/profile-image-contract-final.log:加强五个 operationId 比对后的头像复跑。 - mydreamjob-server/target/surefire-reports/:各类 XML/txt;后续 Maven 执行可能更新,独立验收时应自行归档。 ## 尚未执行 - ProfileImageMySqlMigrationTest 的 MySQL 8.4 / 5.7.36 两个 V62→V63 专项:Docker 引擎当前不可连接(dockerDesktopLinuxEngine 管道不存在)。测试代码已增加,未执行,不计入通过。 - 完整 clean verify。 - 同次构建 JAR HTTP 黑盒、重启持久化。 - 前端图片组件、刷新/缓存策略、双设备真机联调。 H2 集成测试运行了 V63,但不能替代双真实 MySQL。当前结论仅为“后端实现及定向回归完成”,不能登记为完整验收通过或已上线。 ## 本轮精确文件范围 新增: 1. mydreamjob-server/src/main/java/com/mydreamjob/profileimage/ProfileImage.java 2. mydreamjob-server/src/main/java/com/mydreamjob/profileimage/ProfileImageRepository.java 3. mydreamjob-server/src/main/java/com/mydreamjob/profileimage/ProfileImageValidator.java 4. mydreamjob-server/src/main/java/com/mydreamjob/profileimage/ProfileImageService.java 5. mydreamjob-server/src/main/java/com/mydreamjob/profileimage/ProfileImageController.java 6. mydreamjob-server/src/main/resources/db/migration/V63__profile_images.sql 7. mydreamjob-server/src/test/java/com/mydreamjob/profileimage/ProfileImageIntegrationTest.java 8. mydreamjob-server/src/test/java/com/mydreamjob/profileimage/ProfileImageMySqlMigrationTest.java 9. docs/profile-images-frontend-handover-20261027.md 10. docs/profile-images-development-verification-20261027.md 修改: 11. mydreamjob-server/src/main/java/com/mydreamjob/company/CompanyRepository.java 12. mydreamjob-server/src/main/java/com/mydreamjob/company/CompanyService.java 13. mydreamjob-server/src/main/java/com/mydreamjob/config/SecurityConfig.java 14. mydreamjob-server/src/main/java/com/mydreamjob/auth/identity/IdentityAccessFilter.java 15. mydreamjob-server/src/main/java/com/mydreamjob/deletion/AccountDeletionCompletionWorker.java 16. docs/openapi-rc.json 17. docs/verify_openapi.py 18. mydreamjob-server/src/test/java/com/mydreamjob/company/CompanyServiceTest.java 19. mydreamjob-server/src/test/java/com/mydreamjob/application/CompanyResumeDownloadIntegrationTest.java 20. mydreamjob-server/src/test/java/com/mydreamjob/auth/identity/UnifiedRegistrationIntegrationTest.java 21. mydreamjob-server/src/test/java/com/mydreamjob/resume/optimization/WorkExperienceOptimizationSecurityIntegrationTest.java 此清单是本轮开发范围,不自动授权提交或发布。独立验收应锁定这些文件的哈希,同时保留原工作区既有改动。