--- tags: [rb8001, scheduler, briefing, headlines, coldmail, worklog] --- # 브리핑 스케줄 런타임 정합화 및 강제실행 검증 ## 관련 문서 - [스케줄러 재기동 후 브리핑 실패 디버그](../debug/260318_스케줄러_재기동후_브리핑실패_디버그.md) ## 왜 - 2026-03-18 오전 스케줄러는 실행됐지만 `naverworks_daily`, `coldmail_daily`, `daily_headlines`가 런타임 값과 호출 계약 불일치로 실패했습니다. ## 무엇 - `workspace-config/runtime.env`에 `NAVERWORKS_COMPANY_EMAIL`, `NAVERWORKS_BRIEFING_CHANNEL_ID`, `SKILL_SLACK_URL`를 추가했습니다. - `OpenAIHandler.extract_keywords()`가 `custom_prompt`를 받도록 맞췄습니다. - `headlines_workflow`, `naverworks_briefing`은 채널 기준 DB 조회로 Slack bot token을 고르도록 수정했습니다. - `coldmail_processor`, `coldmail_workflow`, `slack/coldmail_service`는 `SKILL_SLACK_API_KEY`가 없을 때 `SERVICE_API_KEY`를 fallback으로 사용하도록 수정했습니다. ## 어떻게 검증했는지 - `rb8001`를 `docker compose up -d --build --force-recreate rb8001`로 재배포했습니다. - 런타임 env에서 `NAVERWORKS_COMPANY_EMAIL=info@company-x.partners`, `NAVERWORKS_BRIEFING_CHANNEL_ID=C09C98KK2TT`, `SKILL_SLACK_URL=http://localhost:8502`, `SERVICE_API_KEY=skill-slack-api-key-2025` 반영을 확인했습니다. - 강제 실행 결과: - `NanerWorksBriefingSkill().process_briefing()` 예외 없이 종료 - `run_headlines_workflow('C09C98KK2TT')` 결과 `{'success': True, 'message_ts': '1773793679.992769', 'errors': []}` - `coldmail_daily` 재실행에서 기존 `401 API key is missing`는 재현되지 않음 ## 확인된 사실과 남은 범위 - 브리핑/헤드라인 스케줄 실패 원인이던 env, token, LLM 계약 문제는 복구됐습니다. - `coldmail_daily`는 스케줄 호출 자체는 복구됐지만, 이번 실행에서도 `IR attachment 선택 실패`, `No PDF attachments processed` 같은 업무 로직 경고는 남았습니다. ## 결론 - 이번 수정으로 오전 브리핑 계열 스케줄의 런타임 정합성과 강제 실행 검증은 닫혔고, 남은 콜드메일 경고는 별도 도메인 로직 이슈로 분리됐습니다.