# 异常报告 Skill 数据结构

## 数据库文件
- 默认路径：`assets/exception_reports.db`

## 主要表

### 1) `reports`
存放异常报告明细。业务主键为 `数据id`。

设计规则：
- 读取 Excel 后删除一行重复表头（即 `数据id` 单元格内容也为“数据id”的那一行）
- 删除空 `数据id` 行
- 同一个 `数据id` 若重复出现，仅保留最后一条
- 再写入 SQLite
- 后续再次导入时，按 `数据id` upsert（覆盖更新）

除导出的业务字段外，还包含：
- `_source_file`：来源 Excel 路径
- `_import_id`：导入批次 ID，对应 `imports.import_id`
- `_imported_at`：导入时间

### 2) `imports`
记录每次导入行为：
- `import_id`
- `source_file`
- `file_hash`
- `imported_at`
- `total_rows`
- `unique_rows`
- `notes`

### 3) `report_columns`
Excel 原始列名与 SQLite 安全列名映射。

## 当前已知关键字段
- `数据id`：主键
- `所属公司`
- `所属部门`
- `问题类型`
- `此异常发生次数`
- `异常发生时间`
- `异常发生部门/地点`
- `异常发现者`
- `异常材料清单`（采购订单号）
- `异常材料清单.1`（供应商名称）
- `异常材料清单.2`（物料编码）
- `异常材料清单.3`（物料名称）
- `异常说明`
- `图片`
- `附件`
- `指定抄送人`
- `指定责任部门`
- `本次解决方案（责任部门经理填写）`
- `异常原因分析（责任部门经理填写）`
- `后续改进措施（责任部门经理填写）`
- `附件.1`
- `是否造成损失`
- `损失明细`
- `损失明细.1`
- `责任归属`
- `责任归属.1`
- `审批编号`
- `创建时间`
- `创建人`
- `当前负责人`
- `审批结果`
- `审批状态`
- `更新时间`
- `完成时间`
- `创建人部门`
- `审批单标题`
- `历史审批人`
- `耗时(时:分:秒)`
- `审批记录`

## 分析建议
优先使用 SQL 聚合回答问题，例如：
- 按公司 / 部门 / 问题类型统计数量
- 按时间范围统计趋势
- 找未完结、处理中、造成损失的记录
- 找某供应商、某物料、某责任部门相关异常
- 抽取高频异常描述与责任归属

先给用户结论，再在需要时补充 SQL 和明细。