# 自动入库规则

## 触发原则
当用户：
- 发送新的“异常报告”Excel 文件
- 提供本地路径并说明这是异常报告
- 指定一个目录让系统批量处理异常报告历史文件

就先执行导入，再继续分析。

## 单文件自动入库
如果收到一个 Excel 文件，且满足以下任一条件：
- 文件名包含“异常报告”
- 用户明确说明这是钉钉 OA 的“异常报告”导出文件

执行：

```bash
python3 scripts/import_exception_report.py <excel_path>
```

默认会按文件哈希去重：
- 相同文件内容再次导入时，直接跳过
- 如果用户明确要求重新导入，可加 `--force`

## 批量补录历史文件
如果用户给的是目录，执行：

```bash
python3 scripts/scan_exception_reports.py <folder>
```

规则：
- 递归扫描 `.xlsx` / `.xls`
- 仅处理文件名包含“异常报告”的文件
- 对每个文件自动导入
- 相同文件内容按哈希跳过

## 对话行为
- 先导入，后分析
- 导入完成后告诉用户：导入了几份文件、跳过了几份、是否有报错
- 如果用户随后提出分析问题，直接基于 SQLite 回答，不再要求手工重复导入

## 注意
- 数据主键仍然是 `数据id`
- 文件级防重复依赖 `imports.file_hash`
- 业务级防重复依赖 `reports.数据id`
- 若后续出现新的 Excel 列，导入脚本会自动给 `reports` 表补列
