S2 · 사내한

회신 미결 메일은 "PC에서 매시 추출해 칸반 API로 푸시"하는 방식이 가장 빠르고, 외부 저장 범위만 먼저 정하면 된다

최근 14일 후보 27건(약 2건/일) · Aside · 2026-10-28 기준 · 범위: Outlook 로컬(읽기 전용) → cands-todo-kanban
총괄 결론 — 칸반 서버(Cloudflare)는 로컬 Outlook에 닿지 못하므로, PC 작업 스케줄러가 매시 PowerShell(COM, 읽기 전용)로 미결 메일을 뽑아 POST /api/ingest로 올리는 안 A를 권장한다. 플래그 사용이 0건이라 "회신 흔적 + 요청 신호 점수"로 판정하고, 칸반의 "회신 불필요" 버튼으로 사용자가 보정한다. 먼저 결정할 1가지: 메일 제목·발신자 메타를 외부 클라우드에 저장해도 되는가.

1. 실측 — 14일간 To 직접수신 63건 중 회신 흔적이 없는 후보는 27건이다

항목(최근 14일)건수
수신 전체(받은편지함+하위폴더)84
To 직접수신63
회신 표시(LastVerb 102/103)26
동일 대화 후속 발신29
플래그 지정0
noreply·알림성(제외)7
미결 후보27
후보 폴더건수
AI10
받은 편지함4
노무 / 급여3 / 3
부서간 요청사항2
경영지원 / 디자인 용역2 / 2
정읍공장1
후보 수는 "회신 흔적 없음"만 본 상한치다. 실제 회신 필요 여부(제목·본문)는 열람하지 않았다. 받은편지함이 비어 있고 하위 폴더로 분류되므로 전 폴더 스캔이 필수다.

2. 구현 방식은 PC 푸시(안 A)가 즉시 가능하고 본문 반출이 없다

안방식장점한계판단
APC 스케줄러 → PowerShell(COM) → /api/ingest즉시 가능, 본문 반출 없음, 기존 스크립트 재사용PC 켜짐 + 클래식 Outlook 실행 필요채택
BMicrosoft Graph API 서버 조회PC 무관, 24시간Azure 앱 등록·관리자 동의, 메일이 클라우드 경유2단계
CPower Automate 규칙코드 최소회신 여부 판정 약함, 정책 확인 필요비권장

3. "회신 필요"는 6개 규칙으로 판정한다

#규칙내용
1대상최근 N일(기본 14), 전 폴더, 내가 To인 메일만(CC·숨은참조 제외)
2제외noreply·알림성, 내가 보낸 메일, 삭제·정크, 사용자 제외 발신자/도메인
3회신 완료LastVerb 102/103, 또는 보낸편지함 동일 ConversationID에 수신 이후 발신(옵션: 전달 104)
41대화 1카드ConversationID 기준, 최신 수신 메일 대표
5우선순위 점수요청 표현(물음표·"회신/검토/확인 부탁"·"까지") + 상급자·핵심 거래처 + 경과일 + 본문 기한. 로컬 계산, 본문 미전송
6재오픈Done 대화에 상대 답신이 오면 Doing 복귀. "회신 불필요"는 같은 발신자 새 메일 전까지 유지
출처: 로컬 Outlook COM 읽기 전용 측정(건수만, 2026-10-28) · D:\jsyang_Claude\tools\outlook_query.ps1 · 1 / 2

외부 저장은 메타데이터로 한정하고 민감 폴더는 마스킹해야 약 2일 안에 운영할 수 있다

아키텍처 · 보안 · 단계별 계획 · 미확인 사항 · 결정 요청

4. 매시 :05에 PC가 푸시하고 서버는 기존 병합 로직을 재사용한다

[PC] 작업 스케줄러(매시 :05, cands 동기화 이후)
  └ outlook_pending.ps1 (COM, 읽기 전용) → JSON {asOf, items[], resolved[]}
        ── HTTPS + Bearer INGEST_TOKEN ──▶
[Cloudflare Pages] POST /api/ingest → shared/sync.js 병합 로직 공용화 → KV(board-v1)
[화면] Doing 카드 "Outlook" 태그 · 대기일 뱃지 · "회신 불필요" 버튼

5. 개인정보 리스크는 전송 필드 최소화와 민감 폴더 마스킹으로 줄인다

항목설계비고
전송 필드제목, 발신자 표시명, 수신시각, 폴더명, 점수·사유만. 본문·첨부·수신자 목록 미전송. 완료 30일 후 KV에서 삭제본문은 로컬 계산에만 사용
민감 폴더급여·노무·변호사 검토·산재·퇴직 등은 제목을 "[노무] 회신 필요 메일"로 마스킹(발신자 이니셜) 또는 제외기본=마스킹, 확정 필요
접근 통제현재 단일 비밀번호 → 메일 메타 탑재 전 Cloudflare Access(이메일 OTP) 적용 권장확인 필요
등급cands 데이터는 외부 반출 상한 S1로 승인된 범위. Outlook 메타는 그 범위 밖이라 별도 판단 필요결정 1

6. 단계별로 P0 검수 후 진행하며 총 약 2일 공수다

단계내용수용 기준공수
P0outlook_pending.ps1 로컬 dry-run(전송 없음)14일 후보를 눈으로 검수, 오탐 30% 이하0.5일
P1/api/ingest + 병합 리팩터링 + UI푸시 시 Doing 생성, 회신 후 다음 푸시에 Done1일
P2작업 스케줄러 매시 등록 + 경고 표시24시간 무인 운영, 누락 시 경고0.5일
P3"회신 불필요" 학습, Graph(안 B) 검토오탐 20% 이하별도

7. 확인하지 못한 것과 사용자 결정 3건

확인 못함
후보 27건의 실제 회신 필요 여부(제목·본문 미열람) · 점수식 정확도 · 14일 전 폴더 스캔 소요시간 · outlook: 링크 동작 · Outlook 미실행 시 스케줄러 동작 · Graph 관리자 동의 가능 여부
결정 필요
① 메일 메타의 Cloudflare 저장 허용 및 민감 폴더 마스킹/제외
② 판정 기간 14일 vs 7일, 전달(104)을 완료로 볼지
③ 안 A(상시 켜진 PC) 진행 vs 처음부터 Graph 협의

💡 추천 프롬프트

출처: 로컬 Outlook COM(건수만) · cands-todo-kanban 구조(Cloudflare Pages+KV+cron Worker) · 2 / 2