Skip to content

fix(automation):本地数据库配置对齐后端默认值,DB 断言兼容 ENUM 大小写 - #403

Merged
Rosshow merged 2 commits into
testfrom
fix/ticket-gate-init-schema
Oct 28, 2026
Merged

Rosshow merged 2 commits into
testfrom
fix/ticket-gate-init-schema

Conversation

@hxgeng01-star

Copy link
Copy Markdown
Collaborator

修改

  • automation/config/local/config.yaml:database 改为 root:123456@127.0.0.1:3306/helpdesk_724, 与 backend 的 DATABASE_URL 默认值一致,REAL_DB_ASSERTIONS=1 可直接使用。 原配置是 root:root@.../openrobot,与本地/后端实际使用的库对不上,导致数据库断言只能关闭。
  • automation/src/assertions/database.py:tasks.status 等列在 MySQL 中是 ENUM,落库值为大写 (NEW / IN_PROGRESS / PROBLEM),而接口返回小写(new / in_progress / problem),原 != 比较必然失败。 枚举字段(status / task_type / priority / ticket_type)改为大小写不敏感比较,其余字段仍严格比较。

验证

  • REAL_DB_ASSERTIONS=1 USE_MOCK=0 pytest tests/real -q → 10 passed(含 tasks 表落库核对)
  • pytest src/assertions -q → 27 passed

背景

本次调试修复前的报错:
Task 60 field 'status' mismatch: expected 'new', got 'NEW'
row={'id': 60, 'status': 'NEW', 'created_by': 'user_admin', ...}

Developer added 2 commits October 26, 2026 19:37
## 修改
- `automation/config/local/config.yaml`:database 改为 `root:123456@127.0.0.1:3306/helpdesk_724`,
  与 backend 的 `DATABASE_URL` 默认值一致,`REAL_DB_ASSERTIONS=1` 可直接使用。
  原配置是 `root:root@.../openrobot`,与本地/后端实际使用的库对不上,导致数据库断言只能关闭。
- `automation/src/assertions/database.py`:`tasks.status` 等列在 MySQL 中是 ENUM,落库值为大写
  (NEW / IN_PROGRESS / PROBLEM),而接口返回小写(new / in_progress / problem),原 `!=` 比较必然失败。
  枚举字段(status / task_type / priority / ticket_type)改为大小写不敏感比较,其余字段仍严格比较。

## 验证
- `REAL_DB_ASSERTIONS=1 USE_MOCK=0 pytest tests/real -q` → 10 passed(含 tasks 表落库核对)
- `pytest src/assertions -q` → 27 passed

## 背景
本次调试修复前的报错:
    Task 60 field 'status' mismatch: expected 'new', got 'NEW'
    row={'id': 60, 'status': 'NEW', 'created_by': 'user_admin', ...}
覆盖 10 条业务场景中剩余部分的设计方案,本期不实施,仅留档。

内容:
- 范围划分:②⑤⑧⑨ 纳入(纯接口),⑥⑩(依赖 AI 服务 8401)、⑦附件(依赖 MinIO)暂不做
- 已核实的接口契约(避免后续重复调研):
  - `PATCH /api/tasks/{id}/assign` 的 `user_id` 是 **query 参数**,不是 body
  - `POST /{id}/re-dispatch` 依赖 Redis 发布事件,本地无 Redis 时只断言 DB 状态
  - `POST /{id}/relations` 需 `backend:tasks:operate` 权限,relation_type 三值:
    predecessor / duplicate / subtask
  - 代理关系**无任何创建 API**,`create_task_proxy_relation.py` 只建表不插数据,
    用例需直接向 `task_proxy_relation` 表插入
  - `set-step-time` 仅对 `escalate_count > 0` 的工单生效,本期不测
- 用例清单 7 条 + 文件划分 + 实现步骤 + 风险表

文档顶部已标注"待排期,尚未实施",避免被误认为已批准。
@Rosshow
Rosshow merged commit c3d1c7f into test Oct 28, 2026
3 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants