"""查询某天数据完成度,供重试逻辑判断"该重跑哪个阶段" .venv/bin/python scripts/day_status.py 2026-09-24 退出码: 0 已有精编(xwlb_daily_ext 有数据)→ 视为完成 1 识别已全部完成(存在 .asr_complete_<日期> 标记)但有分片无精编 → 只缺切分环节 2 其余情况(分片未入库 / 识别只跑了一半)→ 必须重跑全链路 注意:只有 daily 有数据**不足以**说明识别跑完了。识别中途卡死时也会留下一部分分片, 此时若无条件走"只重跑切分",会把半天内容当成完整一天切分入库——所以用标记文件区分。 同时在 stdout 打印 daily=<分片数> ext=<精编条数>,便于日志排查。 """ import os import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from mysqlHandle import MySQLDB # noqa: E402 from audioRead import asr_marker_path # noqa: E402 def main(): if len(sys.argv) < 2: print('用法: day_status.py ') return 3 raw = sys.argv[1] date10 = f"{raw[:4]}-{raw[4:6]}-{raw[6:]}" if len(raw) == 8 else raw db = MySQLDB() try: daily = db.query_one('xwlb_daily', 'COUNT(*) n', 'news_days = %s', (date10,)) ext = db.query_one('xwlb_daily_ext', 'COUNT(*) n', 'news_date = %s', (date10,)) finally: db.close() n_daily = (daily or {}).get('n', 0) or 0 n_ext = (ext or {}).get('n', 0) or 0 marker = asr_marker_path(date10) asr_done = os.path.exists(marker) print(f"daily={n_daily} ext={n_ext} asr_complete={int(asr_done)}") if n_ext > 0: return 0 if n_daily > 0 and asr_done: return 1 return 2 if __name__ == '__main__': sys.exit(main())