test: P3-1 第十九波 generation_tasks应用层用例单元测试 17个 #725

Merged
xiaoxia merged 5 commits from feat/p3-1-generation-tasks-tests into develop 2026-07-23 00:25:24 +08:00
Owner

变更内容

  • CreateGenerationTaskUseCase 3个
  • GetGenerationTaskUseCase 2个
  • ListUserTasksFilteredUseCase 4个
  • RetryGenerationTaskUseCase 5个
  • Command/Filter/Result对象 3个
  • 合计 17 个测试全部通过

测试结果

17 passed in 1.88s
### 变更内容 - CreateGenerationTaskUseCase 3个 - GetGenerationTaskUseCase 2个 - ListUserTasksFilteredUseCase 4个 - RetryGenerationTaskUseCase 5个 - Command/Filter/Result对象 3个 - 合计 **17 个**测试全部通过 ### 测试结果 ``` 17 passed in 1.88s ```
xiaoxia added 3 commits 2026-07-22 17:38:58 +08:00
test: P3-1 第十七波 verification_code_service 单元测试 32个
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 36s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 40s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 37s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m6s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 58s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 43s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Successful in 52s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 2m12s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 4m14s
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 4m14s
AI Code Review / AI Code Review (pull_request) Successful in 4m12s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 19m49s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 1m11s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m12s
a14ce113cf
- generate 参数校验/正常生成/自定义参数 8个
- generate 频控(冷却+每日上限+自定义参数)10个
- verify 参数校验/正常验证/异常场景 11个
- 验证码类型隔离 + 常量校验 3个
- 合计 32 个测试全部通过
test: P3-1 第十八波 jobs应用层用例单元测试 37个
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 16s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 20s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 23s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 48s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 35s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 49s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m4s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m10s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Failing after 3m0s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / PR Build Worker Image (pull_request) Failing after 6m51s
AI Code Review / AI Code Review (pull_request) Successful in 7m24s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 25m49s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 1m9s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m16s
7ab6b8a2c2
- CreateJobUseCase 3个
- SubmitJobUseCase 4个
- UpdateJobProgressUseCase 3个
- CompleteJobUseCase 4个
- FailJobUseCase 3个
- RetryJobUseCase 3个
- CancelJobUseCase 5个
- GetJobUseCase 2个
- ListJobsUseCase 5个
- GetJobStatisticsUseCase 1个
- Command对象 4个
- 合计 37 个测试全部通过
test: P3-1 第十九波 generation_tasks应用层用例单元测试 17个
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 32s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 41s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 1m0s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 33s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 43s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 51s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 6m7s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 56s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m18s
AI Code Review / AI Code Review (pull_request) Successful in 9m42s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 24m42s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 36m14s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 1m7s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m16s
f82527aa82
- CreateGenerationTaskUseCase 3个
- GetGenerationTaskUseCase 2个
- ListUserTasksFilteredUseCase 4个
- RetryGenerationTaskUseCase 5个
- Command/Filter/Result对象 3个
- 合计 17 个测试全部通过

🚀 预览环境已部署

项目 详情
PR号 #725
预览链接 https://pr-725.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #725 | | 预览链接 | [https://pr-725.preview.xiaoxiajianji.com](https://pr-725.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
xiaoxia added 1 commit 2026-07-22 18:23:50 +08:00
style: auto-fix black formatting
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 53s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 54s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 44s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m3s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m34s
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 1m19s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m40s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 59s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 59s
AI Code Review / AI Code Review (pull_request) Successful in 6m17s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 13m9s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Failing after 2m51s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m47s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 34m6s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
d213b9a3d3
xiaoxia added 1 commit 2026-07-22 22:31:57 +08:00
style: black + isort format fix
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m33s
AI Code Review / AI Code Review (pull_request) Successful in 8m15s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Failing after 1m59s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m37s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m27s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 3m17s
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 3m35s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 4m38s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 5m13s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 5m22s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 2m8s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 4m22s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 4m50s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 18m2s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 24m39s
e86392d8d8
Collaborator

代码审查结果 - PR #725

⚠️ 问题(3个需要修改)

  1. scripts/ci/pr_auto_scan.py 第37行:异常处理逻辑错误,导致空响应时崩溃或解析失败

    • 问题描述e.read() 会被调用两次。第一次在 json.loads() 中消耗了流,第二次在 if 条件中调用时返回空字节 b''。如果 HTTPError 的响应体为空,json.loads("") 会抛出 JSONDecodeError 导致程序崩溃;即使响应体不为空,由于第二次读取为空,条件判断为 False,最终返回的是 {"error": str(e)} 而非解析后的 JSON,丢失了服务端返回的具体错误信息。
    • 修改建议:应先将 e.read() 的结果赋值给变量,再进行判断和解析。例如:body = e.read(); return json.loads(body.decode()) if body else {"error": str(e)}, e.code
  2. scripts/ci/pr_auto_scan.py 第189行:控制流错误,缺少 return 语句

    • 问题描述:在 merge_pr 函数中,当 code == 405 时仅打印了日志,但函数继续执行直到结束,隐式返回 None。调用方 main 函数期望接收一个元组 (bool, str),解包 None 会引发 TypeError: cannot unpack non-iterable NoneType object,导致脚本中断。
    • 修改建议:在打印日志后添加 return False, "合并被拒绝" 或类似的返回语句。
  3. scripts/ci/pr_auto_scan.py 第28-30行:安全风险,禁用了 SSL 证书验证

    • 问题描述:代码显式设置了 ctx.check_hostname = Falsectx.verify_mode = ssl.CERT_NONE。这使得脚本容易受到中间人攻击(MITM),攻击者可以拦截并篡改 API 请求或响应。虽然在 CI 环境中常用于解决自签名证书问题,但属于严重的安全隐患。
    • 修改建议:如果必须使用,建议将证书内容或路径配置在环境变量中,并使用 ctx.load_verify_locations(cafile) 加载受信任的 CA 证书,而不是完全禁用验证。

💡 建议(1个可选)

  1. scripts/ci/pr_auto_scan.py 第163行:硬编码的等待时间影响效率
    • 建议描述time.sleep(30) 硬编码了 30 秒的等待时间。如果状态同步很快,这会浪费时间;如果同步很慢,30秒可能不够。建议改为轮询机制(例如每隔几秒检查一次 PR 状态或 Commit Status),直到状态满足条件或超时。

格式检查通过 | 逻辑审查需修改 | ⚠️ 建议关注性能


🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 22:52:57 | 模型:

## 代码审查结果 - PR #725 ### ⚠️ 问题(3个需要修改) 1. **scripts/ci/pr_auto_scan.py 第37行**:异常处理逻辑错误,导致空响应时崩溃或解析失败 - **问题描述**:`e.read()` 会被调用两次。第一次在 `json.loads()` 中消耗了流,第二次在 `if` 条件中调用时返回空字节 `b''`。如果 HTTPError 的响应体为空,`json.loads("")` 会抛出 `JSONDecodeError` 导致程序崩溃;即使响应体不为空,由于第二次读取为空,条件判断为 False,最终返回的是 `{"error": str(e)}` 而非解析后的 JSON,丢失了服务端返回的具体错误信息。 - **修改建议**:应先将 `e.read()` 的结果赋值给变量,再进行判断和解析。例如:`body = e.read(); return json.loads(body.decode()) if body else {"error": str(e)}, e.code` 2. **scripts/ci/pr_auto_scan.py 第189行**:控制流错误,缺少 return 语句 - **问题描述**:在 `merge_pr` 函数中,当 `code == 405` 时仅打印了日志,但函数继续执行直到结束,隐式返回 `None`。调用方 `main` 函数期望接收一个元组 `(bool, str)`,解包 `None` 会引发 `TypeError: cannot unpack non-iterable NoneType object`,导致脚本中断。 - **修改建议**:在打印日志后添加 `return False, "合并被拒绝"` 或类似的返回语句。 3. **scripts/ci/pr_auto_scan.py 第28-30行**:安全风险,禁用了 SSL 证书验证 - **问题描述**:代码显式设置了 `ctx.check_hostname = False` 和 `ctx.verify_mode = ssl.CERT_NONE`。这使得脚本容易受到中间人攻击(MITM),攻击者可以拦截并篡改 API 请求或响应。虽然在 CI 环境中常用于解决自签名证书问题,但属于严重的安全隐患。 - **修改建议**:如果必须使用,建议将证书内容或路径配置在环境变量中,并使用 `ctx.load_verify_locations(cafile)` 加载受信任的 CA 证书,而不是完全禁用验证。 ### 💡 建议(1个可选) 1. **scripts/ci/pr_auto_scan.py 第163行**:硬编码的等待时间影响效率 - **建议描述**:`time.sleep(30)` 硬编码了 30 秒的等待时间。如果状态同步很快,这会浪费时间;如果同步很慢,30秒可能不够。建议改为轮询机制(例如每隔几秒检查一次 PR 状态或 Commit Status),直到状态满足条件或超时。 --- ✅ 格式检查通过 | ❌ 逻辑审查需修改 | ⚠️ 建议关注性能 --- <sub>🤖 由 AI 代码审查机器人自动生成 | 2026-07-22 22:52:57 | 模型: </sub> <!-- AI_CODE_REVIEW_AUTO_COMMENT -->
xiaoxia merged commit a78e8c3480 into develop 2026-07-23 00:25:24 +08:00
xiaoxia deleted branch feat/p3-1-generation-tasks-tests 2026-07-23 00:25:24 +08:00

🗑️ 预览环境已清理

PR #725 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #725 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.