# Ark批量打标限流补跑诊断器
## 诊断流程样例
### 场景
Ark v31 批量打标 5,000 条人工客服原声。主跑 raw 写满 5,000 条,但 clean 后只有 3,915 条成功,剩余 1,085 条失败,怀疑是高并发限流、超时或解析错误。
### 入口
```bash
python /Users/bytedance/Documents/job-bu/data-analysis-workspace/tools/ark_retry_diagnose.py diagnose \
--run-dir projects/<project>/runs/v31_manual_5000 \
--input input/manual_sessions_5000.csv \
--raw output/raw/ark_v31_raw.jsonl \
--clean output/clean/ark_v31_clean.csv \
--log logs/ark_v31_runner.log
```
### 检查顺序
| 步骤 | 检查 | 通过信号 | 失败信号 |
|---|---|---|---|
| 1 | input session 去重 | 5,000 个唯一 session | 输入自身重复或 session_id 缺失 |
| 2 | raw 覆盖率 | raw 覆盖全部 input session | raw 缺 session 或同一 session 多次成功 |
| 3 | clean 状态 | clean 成功数等于 input 数 | clean 失败、解析为空、标签不在枚举 |
| 4 | 错误归因 | error_type 可聚合到 rate_limit/timeout/schema/empty_response | 错误文本不可解析,无法判断是否可补跑 |
| 5 | 补跑计划 | retry plan 只包含失败 session | 成功 session 被纳入补跑,存在覆盖风险 |
### 输出
```text
input_unique: 5000
raw_rows: 5000
clean_success: 3915
clean_failed: 1085
major_error_type: ark_rate_limit_or_timeout
retry_plan: retry_plan_only_errors.jsonl
safe_to_finalize: false
safe_to_retry: true
recommended_concurrency: 8
```
### 补跑
```bash
python scripts/batch_label_sessions_v31.py \
--retry-plan retry_plan_only_errors.jsonl \
--only-errors \
--concurrency 8 \
--append-raw \
--no-overwrite-success
```
### 验收
补跑后执行:
```bash
python /Users/bytedance/Documents/job-bu/data-analysis-workspace/tools/ark_retry_diagnose.py verify-retry \
--input input/manual_sessions_5000.csv \
--raw output/raw/ark_v31_raw.jsonl \
--clean output/clean/ark_v31_clean.csv
```
只有当报告返回 `safe_to_finalize: true`,并且 `input_unique == clean_success == 5000`、`failed == 0`、`success_overwritten == 0` 时,才进入 CSV/HTML/Excel/审计表生成。