Skip to content

웹 대시보드 백필 제어(딸깍) — supervisor·Job Object·잔여 카운터 #352

Description

@wjdtjddns98

배경

백필(A=이메일 채우기, C=도메인 해석→승격)을 현재 bat 러너로 수동 운영 중 — 인코딩(cp949/LF)·재부팅 유실·세션 종속 등 함정 다수. 운영자가 웹 대시보드에서 "딸깍" 한 번으로 제어하도록 백엔드를 만든다. (Codex·Claude 독립 설계 후 종합 확정안, 2026-08-18)

사용자 관점 (딸깍 원칙 — 트랙 개념 비노출)

  • 상시 잔여 패널: GET /admin/backfill/overview — 조건(국가·제외업종·상장) 변경 시 즉시 재계산되는 깔때기(도메인해석 대기→이메일 대기→큐 pending)
  • 버튼 하나: POST /admin/backfill/start {조건} — 내부에서 C·A 자동 병행 가동. stop으로 중지
  • 진행 카드 하나: GET /admin/backfill/status — 처리/해석/승격/이메일 누적·잔여·오류·예산소진

내부 구조 확정안

  • 서버는 supervisor 스레드만 — 자식 CLI 프로세스(--max-batches N)를 세대(generation) 단위 재기동(메모리 리셋 유지, OOM 이력). Playwright 는 서버 프로세스에 안 올림
  • Windows Job Object(KILL_ON_JOB_CLOSE)로 서버 종료 시 자식+Chromium 트리 자동 정리
  • PG advisory lock으로 웹·bat·crawl companion 전 경로 트랙 중복 방지
  • backfill_job 테이블 1개(필터 스냅샷·누적 카운터·세대·취소플래그) + CLI --job-id 자기보고(로그 파싱 금지)
  • 서버 재시작 시 자동 재개(취소플래그 재확인 후 — 과거 워치독 취소사고 방어), 예산 소진 시 budget_exhausted 명시 종료
  • review_queue.created_at 마이그레이션 — 신규 승격이 전체큐 상단에 노출(적재시각 LIFO)

PR 분해

  • PR① 필터 정식 편입 — fill/resolve --exclude-industry·--exclude-listed (worktree 구현분)
  • PR② backfill_job 테이블 + review_queue.created_at 마이그레이션
  • PR③ CLI --job-id(진행 자기보고·취소 폴링) + 트랙 advisory lock
  • PR④ supervisor + Job Object 프로세스 관리
  • PR⑤ admin API(overview/start/stop/status) + FE 계약 공유

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions