## [ERR-20260425-007] AutomationExecution 表列名陷阱：`task_code` 不存在 / `duration_ms` 不存在

**日期**: 2026-04-25
**类别**: Database / Prisma 命名映射
**严重度**: 低（一次失败即可定位）

### 问题描述
人工排查 `platform_automation.automation_executions` 时按直觉写：
```sql
SELECT task_code, status, started_at, duration_ms FROM ...
```
两个错误：
1. `column "task_code" does not exist` —— 实际只有 `task_id` 外键，`code` 在 `automation_tasks` 表上
2. `column "duration_ms" does not exist` —— 实际列名是 `duration`（虽然单位是 ms）

### 根因
- Prisma model 字段 `task` (relation) 不会变成列，列名只有 `taskId` → `task_id`
- Prisma 字段 `durationMs: Int?` 在数据库里被 `@map("duration")` 映射成 `duration`（无单位后缀）

### 正确写法
```sql
SELECT t.code, e.status, e.started_at, e.duration
FROM platform_automation.automation_executions e
JOIN platform_automation.automation_tasks t ON t.id = e.task_id
ORDER BY e.started_at DESC;
```

### 启示
排查同步中心数据时，永远先 `\d table_name` 一遍。Prisma `@map` 让字段名 ↔ 列名对应关系不直观，**直接 SQL 查询前先确认实际列名**比按 model 名靠记忆猜更快。

---
