아이티데일리 개통 가이드

개시일 D-DAY · 2026-08-18

아이티데일리 E2E 파일럿 개통 가이드

계약 개시일이 오늘인데 개통 스위치가 하나도 켜져 있지 않습니다. 켤 것은 4개이고, 그중 하나는 켜는 방식에 대한 결정이 남아 있습니다.

스위치4개 전부 OFF
결정 대기1건 — A / B / C
예상 LLM 비용월 $123~215
계약 잔여제7조② 시안 합의

1. 스위치 보드 — 지금 상태

TODO.md T6은 이것을 「이중 스위치」라고 부르지만 그 문구는 낡았습니다. T4(어댑터)가 착지하기 전에 쓰인 것이고, 지금은 3·4번 없이는 AC-발행(⑧~⑫)이 흐르지 않습니다.

1
엔진 수집 트리거 OFF · PAUSED
infra/envs/prod/scheduler.tf → paused = true
20분 주기(*/20 * * * *) · 커밋 → main 머지 시 terraform apply가 반영합니다. 라이브 실측도 PAUSED입니다.
2
엔진 소스 활성화 OFF
DB · engine.sources.enabled (slug=itdaily)
0004 시드가 false로 넣었습니다. 마이그레이션 파일이 없어 수기 UPDATE이며, 적용하면 docs/spec/deploy.md §4-a 표에 반드시 기입합니다 — 그 표가 유일한 기록입니다.
3
매거진 소스 활성화 결정 필요
config/sources/itdaily-kr.yaml → enabled: false
이 플래그 하나를 두 코드가 같이 읽습니다 — 어댑터(engine_pull.py:390)와 매거진 자체수집(collect.py:98). 아래 A/B/C가 이 스위치를 어떻게 켤지의 문제입니다.
4
매거진 사이클 OFF · PAUSED
infra/envs/prod/pipeline_worker.tf → paused = true
30분 주기(*/30 * * * *) · 재구성·검수·발행이 여기서 돕니다. 이게 꺼져 있으면 수집만 되고 기사가 나오지 않습니다.
⚠️ 1·4번은 Terraform이 진실입니다 gcloud scheduler jobs resume으로 켜면 다음 apply가 되돌립니다. 반드시 paused = false를 커밋해야 합니다 (scheduler.tf 헤더 주석).

2. A · B · C — 3번 스위치를 어떻게 켤 것인가

축이 셋인데 어느 안도 셋을 다 만족하지 않습니다. 그것이 이 표의 요지입니다.

자체수집 요청 빈도 유료 단계 건수 오늘 개통 코드
A 그대로 켠다 상시 — 사이클마다(30분) 전량 20~25건/일 가능 없음
B 구조적 차단 먼저 0 전량 20~25건/일 불가 필요
C 수동 시범 회차 수동 실행 시에만(하루 1~2회) 지정 건수만 가능 없음

각 안이 실제로 하는 일

🔴 오해하기 쉬운 두 가지 C는 자체수집을 「막지」 못합니다. run_cycle.py:147에서 collect.run()이 무조건 먼저 돌고, --only-raw-items는 그 뒤 ①단계 투입만 제한합니다. C가 사는 것은 빈도를 사람이 통제한다는 점입니다(상시 → 수동 실행 시에만). B는 비용을 줄이지 않습니다. 어댑터가 같은 건수를 그대로 유료 단계로 넘깁니다. B가 사는 것은 계약 축뿐입니다.

3. 예상 비용

스케줄러 주기는 비용을 만들지 않습니다. 폴링은 조건부 GET(304)이라 사실상 0이고, 비용은 신규 기사 건수에서 나옵니다. 20분을 30분으로 늘려도 비용은 그대로입니다.

단가 재구성 기사당 $0.28 ~ $0.39 ├ $0.394/사이클 (n=1) — 2026-08-14 벤더 실측, 블라인드 2콜 + gpt-4.1 교정 스택 └ $0.28/건 — TODO.md 「itdaily n=5(~$1.4)」 건수 주중 1일 20~25건 (계약 제4조① 참고조항) × 월 22 영업일 = 440~550건 일 $0.28 × 20 = $5.6 ~ $0.39 × 25 = $9.8 월 $5.6 × 22 = $123 ~ $9.8 × 22 = $215
월 (영업일 22)비고
A / B $5.6~9.8 $123~215 전량 — filters가 비어 있어 감축 근거가 없습니다
C (5건/일 기준) $1.4~2.0 $31~43 지정 건수만 유료 단계로

환율 1,400원/USD 가정 시 A/B는 월 약 17만~30만원입니다 — 계약료 월 50만원의 약 34~60%.

이 숫자의 한계 3가지 ① 단가는 n=1 실측이고 8/18 실수집분으로 재도출이 예정돼 있습니다. ② 실수집 스트레이트 기사(1~1.5k자)는 측정에 쓴 시드(5.1k자 정책 기사)보다 쌀 가능성이 있습니다 — 하한이 더 내려갈 수 있습니다. ③ Cloud Run·Cloud SQL 상시 비용은 별도입니다(engine-api는 min 1 인스턴스).

4. 실행 순서 — 번호가 의미를 가집니다

순서를 틀리면 오류가 아니라 침묵으로 실패합니다.

  1. 엔진 소스를 먼저 켠다정훈
    engine.sources.enabled = true (slug=itdaily) 수기 UPDATE → docs/spec/deploy.md §4-a 표 기입까지가 한 세트입니다. 버전 테이블이 없어 그 표가 유일한 기록입니다.
  2. 엔진 스케줄러를 켠다정훈 커밋 · 재민·어진 확인
    scheduler.tfpaused = false 커밋 → 머지 → terraform apply.
  3. 첫 회차는 사람이 지켜본다3인
    초회 실행은 RSS 50건을 한꺼번에 큐에 넣는데 버스트 상한이 코드에 없습니다. 방어선은 engine-normal 큐의 1 req/s뿐이고, 50건이면 약 50초에 걸쳐 나갑니다. 그것으로 충분한지 실물로 확인합니다.
  4. A / C 결정을 반영한다재민 결정
    A면 itdaily-kr.yaml enabled: true + pipeline_worker.tf paused = false. C면 yaml만 켜고 사이클은 PAUSED로 둔 채 Job을 --only-raw-items로 수동 실행합니다.
  5. AC 12술어 실증 + 되돌림 확인3인 + 곽팀장 참관
    스테이징 1회 실증 후 docs/audit/에 기록합니다 (T6). 이것까지가 파일럿 완료입니다.
🔴 2번을 1번보다 먼저 하면 worker가 409 source disabled로 끝나고 외부 요청이 0건입니다. 오류 화면이 없어 「돌고 있는데 왜 기사가 없지」가 되는 경로입니다 — scheduler.tf와 소스 YAML이 양쪽 다 같은 경고를 답니다. 되돌림: engine.sources.enabled = false + 발행 기사 unpublish.

5. 계약 체크

조항 번호와 요지만 옮깁니다. 문언 대조는 docs/partners/itdaily-contract-terms.md(⛔ 반출 금지)가 우선합니다.

조항요지상태
제4조② 전달 방식을 RSS 수신으로 규정 — 기사 페이지 본문 수집을 허용하는 문언이 없음 수용된 리스크
소스 YAML contract_note에 「인지·수용(2026-08-11 결정)」으로 기록됐고 제3조② 정식 전환 협의 안건으로 등록돼 있습니다. 이중 수집은 그 공백을 두 번 밟습니다.
제7조② 출처 표시 형식은 갑·을이 협의하여 정한 시안에 따름 미이행
우리 시안만 확정(ADR-0014 · attribution-display.md). 상대방 제시·합의가 남아 있습니다(T0 잔여). 제출 전 시안 오타 1건(세부 내용운내용은) 교정 필요.
명세서 기사별 유입 수·클릭 수를 매월 공유 계측 0
⚠️ 어제 개통한 view_count다른 축입니다 — 그건 우리 매거진 조회수이고, 계약이 요구하는 것은 아이티데일리로 넘어가는 유입·클릭입니다.
제8조① 접수 폼으로 수정·삭제 요청 → 즉시 반영 확인 필요
내림 경로와 파트너 어드민은 있으나 admin-web 배포 인증 방식 결정이 T5에 미체크입니다 — 파트너가 실제로 닿을 수 있는지 확인이 필요합니다.
제5조③
제6조①
제13조③
제5조⑥
제목 보존 / 유료 이미지 자동 필터 / 종료 시 내림 처리 / AI 학습 금지 이행 확인
각각 fail-closed 구현 · paid_stock 필터 · published→unpublished 경로 · 원문 픽스처 gitignore로 대응돼 있습니다.
주기 20분은 계약이 정한 값이 아닙니다 계약서에 폴링 주기 규정은 없습니다. 20분은 M0 실측(2026-08-12-itdaily-collect-baseline.md)과 반입본 5.2절 「10~30분」에서 나온 값입니다. ⚠️ 다만 RSS 보관량이 50건 = 영업일 2일치라, 수집이 이틀 멈추면 기사가 피드에서 밀려나 유실됩니다.

6. 후속 티켓 — 오늘 아님