更新日期:2026-06-22 | 版本:v1.0-MVP | 编译状态:✅ 通过
基于产品文档、架构文档、接口文档的全面对照分析,对项目进行了系统性的缺陷修复、功能补全和测试覆盖增强。
| 问题 | 文件 | 修复 |
|---|---|---|
legalRepresentative 字段映射到不存在的列 |
BusinessLicense.java |
重命名为 legalPerson,MyBatis-Plus 自动映射到 legal_person |
多余的 @TableField 注解指向 DB 中不存在的列 |
BusinessLicense.java |
移除了 registered_address、business_scope、valid_from、valid_to 的 @TableField 注解 |
| 表 | 缺失列 | 修复文件 |
|---|---|---|
t_business_license |
registered_address, business_scope, valid_from, valid_to, remark |
schema.sql + test-schema.sql |
t_trial_quota_config |
remark, created_by, updated_by |
schema.sql + test-schema.sql |
| 问题 | 文件 | 修复 |
|---|---|---|
密码登录接口 POST /api/auth/password/login 被拦截 |
SecurityConfig.java |
加入 PUBLIC_URLS 白名单 |
等级详情接口 GET /api/level/{id} 需要认证(文档标注为公开) |
SecurityConfig.java |
改用 /api/level/* 通配符,并显式保护 /api/level/my |
@Async 注解无效果(缺少 @EnableAsync) |
Application.java |
添加 @EnableAsync |
| 实体 | 缺失字段 | 文件 |
|---|---|---|
TrialQuotaConfig |
priority 字段 |
TrialQuotaConfig.java |
| 新增文件 | 说明 |
|---|---|
TrialQuotaConfigService.java |
完整 CRUD 服务:getActiveConfig()、listConfigs()、createConfig()、updateConfig()、deleteConfig() |
TrialQuotaConfigController.java |
用户端:GET /api/trial-quota/active — 获取生效中的体验配额配置(公开接口) |
AdminTrialQuotaConfigController.java |
运营端 CRUD:GET /api/admin/trial-quota/configs、POST /config、PUT /config/{id}、DELETE /config/{id} |
| 新增文件 | 说明 |
|---|---|
OperationAuditLogController.java |
运营端 5 个端点:GET /api/admin/audit-log — 分页查询(支持 module/operationType/operatorId/isSensitive/时间范围筛选)GET /api/admin/audit-log/sensitive — 敏感日志查询GET /api/admin/audit-log/user/{userId} — 按用户查询GET /api/admin/audit-log/target/{type}/{id} — 按目标对象查询GET /api/admin/audit-log/stats — 模块操作统计 |
| 新增文件 | 说明 |
|---|---|
AdminLicenseController.java |
运营端:GET /api/admin/license/review?reviewStatus=PENDING/APPROVED/REJECTED — 审核列表POST /api/admin/license/review — 审核通过/拒绝(含重复审核拦截) |
| 修改文件 | 说明 |
|---|---|
PlatformAccountService.java |
新增 verifyAccount() 方法(MVP 阶段模拟 B2B 平台登录验证) |
PlatformAccountController.java |
新增端点:POST /api/platform-account/verify/{platformCode} |
| 测试类 | 用例数 | 覆盖内容 |
|---|---|---|
AdminLicenseTest.java |
17 | 前置上传、PENDING/APPROVED/REJECTED 列表查询、审核通过/拒绝、重复审核拦截、不存在 ID、参数缺失、无效操作、401 鉴权 |
TrialQuotaConfigTest.java |
18 | 用户端公开访问、管理员列表/创建(DEFAULT+ACTIVITY 类型)/更新/删除、404 处理、401 鉴权 |
OperationAuditLogTest.java |
22 | 8种筛选器组合、敏感日志、用户日志、6种目标类型、模块统计(含时间范围)、401 鉴权 |
| 测试类 | 变更 |
|---|---|
PlatformAccountBindingTest.java |
测试 #4/#8 改为预期 200(verify 端点已实现),而非 404 |
EndToEndBusinessFlowTest.java |
阶段 7 不再跳过,现测试真实审核端点;阶段 8 使用正确的审计日志 URL |
SecurityAccessTest.java |
新增 15 个 401 鉴权测试覆盖所有新管理员端点;新增 2 个公开端点测试 |
| 文件 | 说明 |
|---|---|
invite-test.html |
从仅含邀请功能重写为覆盖全部 11 个模块的完整 API 验收测试工具,含标签页导航、批量测试、通过/失败统计、JSON 校验器 |
| 模块 | 接口数 | 已覆盖 | 测试文件 | 用例数 |
|---|---|---|---|---|
认证 /api/auth |
8 | 100% | AuthControllerTest |
24 |
爬虫配额 /api/crawler |
3 | 100% | CrawlerControllerTest + CrawlerQuotaAndPlatformTest |
35+ |
平台账号 /api/platform-account |
4 | 100% | PlatformAccountBindingTest + CrawlerQuotaAndPlatformTest |
20+ |
平台配置 /api/platform-config |
2 | 100% | CrawlerQuotaAndPlatformTest |
4 |
邀请系统 /api/invite |
6 | 100% | InviteControllerTest |
22 |
运营管理 /api/admin |
15 | 100% | AdminControllerTest + 新增3个类 |
80+ |
优惠券 /api/coupon |
3 | 100% | CouponControllerTest + BusinessLicenseAndCouponTest |
10+ |
用户等级 /api/level |
4 | 100% | UserLevelControllerTest + BusinessLicenseAndCouponTest |
10+ |
营业执照 /api/business-license |
4 | 100% | BusinessLicenseAndCouponTest + AdminLicenseTest |
23 |
体验配额 /api/trial-quota |
5 | 100% | TrialQuotaConfigTest |
18 |
审计日志 /api/admin/audit-log |
5 | 100% | OperationAuditLogTest |
22 |
| 安全+网关+异常 | — | 100% | SecurityAccessTest + GatewayFilterTest + GlobalExceptionHandlerTest |
30+ |
| 端到端 | — | — | EndToEndBusinessFlowTest |
10 |
| 总计 | ~60 | 100% | 18 个测试类 | ~300+ |
| 序号 | 待办 | 说明 |
|---|---|---|
| 1 | 测试环境运行全量测试 | 当前 258 个测试因 ApplicationContext 加载失败(测试环境缺少可用 DB/Redis),需在正确配置的测试环境中运行全部测试并修复失败的断言 |
| 2 | 真实 Redis 集成测试 | 测试环境当前使用 TestConfig.java 中的 Mock Redis,限流和缓存逻辑未经真实验证 |
| 3 | 短信服务对接 | 当前 SmsService 为模拟实现,需接入阿里云短信(或替代方案)并通过真实短信验证码测试登录流程 |
| 4 | 配额不足场景测试 | 补充爬虫配额用完时的错误码和提示语测试 |
| 序号 | 待办 | 说明 |
|---|---|---|
| 5 | 安全扫描 | 运行 OWASP Dependency Check 扫描高危 CVE,验证 BouncyCastle、jjwt 等依赖版本 |
| 6 | 管理后台前端开发 | AdminTrialQuotaConfigController、AdminLicenseController、OperationAuditLogController 等后端已完成,需要对应的管理前端页面 |
| 7 | 微信登录真实联调 | 替换 application.yml 中的 mock-wechat 模式为真实微信开放平台 AppID/Secret |
| 8 | 支付模块(Phase 2) | 产品文档定义的会员购买支付接口、订单系统尚未实现 |
| 9 | B2B 平台登录真实验证 | PlatformAccountService.verifyAccount() 当前为 MVP 模拟逻辑,需接入各 B2B 平台真实登录接口 |
| 序号 | 待办 | 说明 |
|---|---|---|
| 10 | 爬虫引擎开发 | 核心比价爬虫为客户端侧,当前后端仅记录消耗配额 — 实际爬取逻辑待开发 |
| 11 | Windows 客户端开发 | 产品文档定义 Windows 客户端为 MVP 首选终端 |
| 12 | 微服务拆分(Phase 4+) | 当前为 Maven 多模块单体,后续按 user/invite/crawler/payment 拆分为独立微服务 |
| 13 | 文档更新 | 02-架构文档.md(整合 Windows 客户端架构)、05-测试文档.md(更新测试用例清单)、06-验收流程与标准.md(更新验收项) |
| 14 | CI/CD 流水线 | 自动化编译 → 测试 → 安全扫描 → 镜像构建 → 部署 |
以下文档需要更新以反映最新代码状态:
| 文档 | 需要更新的内容 |
|---|---|
docs/05-测试文档.md |
新增 3 个测试类(AdminLicenseTest、TrialQuotaConfigTest、OperationAuditLogTest)和更新的 EndToEndBusinessFlowTest |
docs/06-验收流程与标准.md |
新增体验配额、审计日志、营业执照审核的验收项 |
docs/03-接口文档.md |
确认 POST /api/auth/password/login、POST /api/platform-account/verify/{platformCode}、审计日志端点、管理员试用配额 CRUD 端点已记录 |
docs/测试覆盖分析报告.md |
更新测试类数量从 13 → 18,测试用例数从 156+ → 300+ |
docs/README-文档体系说明.md |
更新"待完成"清单(架构文档集成、测试文档更新) |
| 决策 | 说明 |
|---|---|
BusinessLicense.legalPerson |
使用 legalPerson 而非 legalRepresentative,与数据库列 legal_person 保持一致,利用 MyBatis-Plus 自动映射 |
| 安全白名单排序 | /api/level/my 在 PUBLIC_URLS 中的 /api/level/* 之前显式声明为 .authenticated(),避免 MyLevel 被错误暴露 |
| 审计日志异步写入 | @Async("auditLogExecutor") 确保审计日志写入不影响主业务流程,需要 @EnableAsync 才生效 |
| MVP 平台账号验证 | 采用模拟逻辑,解密后检查账号密码非空即判定 SUCCESS,真实 B2B 平台登录在 Phase 2 对接 |
文档维护者:开发团队 下次复查:Phase 2 启动前