Actions
기능 #740
완료됨[Feature] Gmail 보도자료 수집 발신자 배열 설정 지원
기능 #740:
[Feature] Gmail 보도자료 수집 발신자 배열 설정 지원
시작일:
2026/07/01
완료일:
2026/07/06
진척도:
100%
추정시간:
(합계: 0:00 시간)
설명
h2. 분석 요약
현재 보도자료 메일 수집은 MonitoringBackendStack의 30분 주기 EventBridge Rule이 monitoring-press-release-mail-lambda를 호출하고, Lambda가 Gmail OAuth Secret을 읽은 뒤 환경변수 기반 검색 조건으로 Gmail messages API를 조회하는 흐름이다.
확인한 단일 발신자 전제:
- config/app-config-haap-dev.json, test, prod의 MonitoringBackendStack.GmailSearchFrom은 문자열이다.
- infra/stack/backend/monitoring-backend-stack.ts는 stackConfig.GmailSearchFrom을 GMAIL_SEARCH_FROM 환경변수에 그대로 주입한다.
- codes/lambda/monitoring-press-release-mail-lambda/src/handler.py의 load_search_config는 GMAIL_SEARCH_FROM을 단일 문자열로 읽는다.
- codes/lambda/monitoring-press-release-mail-lambda/src/gmail_handler.py의 GmailSearchConfig.search_from 타입과 _build_query는 단일 from: 조건만 만든다.
- 수집 후 raw MIME 파싱, MonitoringTable 저장, duplicate/too_large 처리, unread 읽음 처리는 발신자 수와 직접 결합되어 있지 않아 검색 조건 변경 회귀 검증이 핵심이다.
h2. 목표
GmailSearchFrom을 config JSON에서 배열로 관리하고, 여러 발신자 메일 주소가 Gmail 검색 조건에 함께 반영되게 한다. 기존 단일 문자열 설정은 전환 기간 동안 읽을 수 있게 할지 여부를 선행 계약 일감에서 확정한다.
h2. 완료 기준
- 환경별 app-config에서 GmailSearchFrom 배열 표현이 확정되고 문서화된다.
- CDK 환경변수 주입과 Lambda 설정 로딩이 동일 계약을 따른다.
- Gmail 검색 q가 여러 발신자를 누락 없이 포함하고 subject/after/unread 조건과 함께 동작한다.
- 단일 발신자 기존 설정 또는 마이그레이션 대상에 대한 회귀 테스트가 있다.
- dev 설정에 실제 추가 발신자 목록이 반영되고 배포/수집 검증 결과가 남는다.
주연 장이(가) 하루 전에 변경
진행 순서와 선후행 규칙입니다.
- #741 Contract: GmailSearchFrom 배열 설정 계약과 호환 정책을 먼저 확정합니다. 이 일감의 산출물과 커밋이 후행 구현의 기준입니다.
- #742 Infra와 #743 Lambda: #741 완료/커밋 이후에만 시작합니다. 두 일감은 계약 커밋을 기준으로 나뉘며, 서로의 미완성 코드를 전제로 진행하지 않습니다.
- #744 Test: #742와 #743가 모두 완료되고 각각 커밋된 뒤 시작합니다. 통합 회귀 테스트 결과를 노트에 남깁니다.
- #745 Config/Deploy: #744 완료/커밋 이후 시작합니다. 실제 추가 메일 주소 목록이 확정되지 않았으면 진행 상태로 전환하기 전에 목록부터 확정합니다.
선수행 일감의 산출물이나 코드가 후행 일감에 쓰이는 경우, 선행 일감은 완료 상태와 커밋 기록까지 확인된 뒤 후행 일감을 진행합니다.
주연 장이(가) 하루 전에 변경
#740 Gmail 보도자료 수집 발신자 배열 설정 지원 오케스트레이션 종료 요약입니다.
■ 목표 달성
GmailSearchFrom을 config JSON에서 배열로 관리하고, 여러 발신자 메일 주소가 Gmail 검색 조건(from: OR 그룹)에 함께 반영되도록 지원하는 목표를 달성했습니다. 단일 문자열 레거시 설정과 쉼표 env 호환도 전환 기간용으로 유지합니다.
■ 자식 5건 완료 및 커밋
- #741 Contract: e2e42dc (+ build-gate 0c3f5b9) / origin codex/redmine-741-gmailsearchfrom-contract
- #742 Infra: 62a6c93 / origin codex/redmine-742-gmailsearchfrom-infra
- #743 Lambda: 8420f8e / origin codex/redmine-743-gmail-multi-sender-lambda
- #744 Test: 43c62a0 / origin codex/redmine-744-gmail-multi-sender-regression
- #745 Config/Deploy: 200f7da / origin codex/redmine-745-gmailsearchfrom-dev-config
자식 5건 모두 Redmine 완료(100%, closed) 처리되었습니다.
■ 완료 기준 대응
- 환경별 app-config GmailSearchFrom 배열 표현 확정/문서화(#741), CDK 환경변수 주입과 Lambda 설정 로딩이 동일 계약(#742/#743), Gmail q가 다중 발신자를 subject/after/unread와 함께 포함(#743), 단일 발신자 회귀 테스트(#744), dev 설정에 실제 추가 발신자 반영(#745) 완료.
■ Deferred(옵션 A)
- dev 실배포 후 monitoring-press-release-mail-lambda 환경변수/Gmail 수집 결과 검증 및 prod 반영은 로컬 CDK synth 불가(Docker/pip 번들, 프론트 build asset 전제 미충족)로 이번 범위 밖입니다. 코드/계약은 완료·검증되었으며, 실제 배포 파이프라인에서 수행할 후속 항목으로 남깁니다. test/prod config는 미변경 유지합니다.
Actions