개발 이력

사이트 개발 기록

이 홈페이지/자동화 파이프라인에 어떤 변경이 있었는지 Slack #프로젝트 채널 기록을 그대로 모아둔 페이지입니다.

최신 업데이트 · 2026-08-22

📋 8/22 추가 작업 — 개발 이력 페이지 완전 자동화

지금까지 "개발 이력"(devlog.html) 페이지는 Slack에 올릴 때마다 대화 세션에서 사람이 직접 devlog_entries.json에 옮겨 적어야 반영되는 반자동 구조였습니다. 이번에 이 수동 단계를 없앴습니다.

구현

  • Slack 앱("Devlog Sync") 생성 + 봇 토큰 발급 (channels:history, channels:read 권한), #프로젝트 채널에 초대
  • sync_devlog_from_slack.py 신규 작성 — #프로젝트 채널에서 📋로 시작하는 게시물만 골라 devlog_entries.json에 자동 반영, 마지막 처리 시각을 watermark로 저장해 중복 방지
  • 정기 파이프라인(run_daily_project_status.ps1)의 devlog 빌드 단계 직전에 실행되도록 연결 예정

비용: Claude API 호출 없음(순수 Slack API 조회 + 텍스트 복사) — 추가 비용 $0

이 메시지 자체가 새 자동화 경로로 정상 반영되는지 확인하는 테스트입니다. 다음을 사용하여 보냄 Claude

전체 기록
11건
2026-08-06 ~ 2026-08-22
총 항목 수
84
전체 변경 항목 합계
이번 주 게시
0
최근 7일 기준
건당 평균 항목
7.6
기록 1건당 변경사항 수

최근 업데이트

최신 8건
2026-08-22

8/22 추가 작업 — 개발 이력 페이지 완전 자동화

2026-08-22

오늘(08-22) 작업 내역 — 메일 분류 발신자 신호 추가

2026-08-21

오늘(08-21) 작업 내역

2026-08-20

오늘(08-20) 작업 내역

2026-08-14

오늘(08-14) 작업 내역

2026-08-13

오늘(08-13) 작업 내역

2026-08-12

오늘(08-12) 변경사항 정리

2026-08-11

오늘 작업 기록 (2026-08-11) — Cloudflare Pages 독립 미러링 준비

최신 하이라이트

2026-08-22 기준
  • 구현
  • 비용_: Claude API 호출 없음(순수 Slack API 조회 + 텍스트 복사) — 추가 비용 $0

전체 기록

11개 · 최신순
날짜제목항목 수
2026-08-228/22 추가 작업 — 개발 이력 페이지 완전 자동화3
2026-08-22오늘(08-22) 작업 내역 — 메일 분류 발신자 신호 추가3
2026-08-21오늘(08-21) 작업 내역10
2026-08-20오늘(08-20) 작업 내역7
2026-08-14오늘(08-14) 작업 내역10
2026-08-13오늘(08-13) 작업 내역12
2026-08-12오늘(08-12) 변경사항 정리9
2026-08-11오늘 작업 기록 (2026-08-11) — Cloudflare Pages 독립 미러링 준비10
2026-08-088/7 작업 요약6
2026-08-07프로젝트 현황 업데이트 (2026-08-07)3
2026-08-06프로젝트 현황 페이지 개선 (2026-08-06)11
상세 기록
2026-08-22

📋 8/22 추가 작업 — 개발 이력 페이지 완전 자동화

지금까지 "개발 이력"(devlog.html) 페이지는 Slack에 올릴 때마다 대화 세션에서 사람이 직접 devlog_entries.json에 옮겨 적어야 반영되는 반자동 구조였습니다. 이번에 이 수동 단계를 없앴습니다.

구현

  • Slack 앱("Devlog Sync") 생성 + 봇 토큰 발급 (channels:history, channels:read 권한), #프로젝트 채널에 초대
  • sync_devlog_from_slack.py 신규 작성 — #프로젝트 채널에서 📋로 시작하는 게시물만 골라 devlog_entries.json에 자동 반영, 마지막 처리 시각을 watermark로 저장해 중복 방지
  • 정기 파이프라인(run_daily_project_status.ps1)의 devlog 빌드 단계 직전에 실행되도록 연결 예정

비용: Claude API 호출 없음(순수 Slack API 조회 + 텍스트 복사) — 추가 비용 $0

이 메시지 자체가 새 자동화 경로로 정상 반영되는지 확인하는 테스트입니다. 다음을 사용하여 보냄 Claude

2026-08-22

📋 오늘(08-22) 작업 내역 — 메일 분류 발신자 신호 추가

배경: 일반적인 이메일 정리 방법론(GTD, Inbox Zero, Gmail/Outlook/Superhuman/SaneBox 등)을 조사해보니 공통 원칙 중 하나가 "본문 내용만 보는 것보다 발신자 신호(과거 답장 이력)가 action/reply 판단에 더 신뢰도 높다"는 것 - 지금 파이프라인엔 이게 전혀 없어서 추가함

구현

  • sync_mail_to_sqlite.py: Sent 폴더 메일의 To 헤더를 recipient 컬럼에 저장하도록 변경, 기존에 저장돼 있던 Sent 139건도 백필해서 105개 발신자 주소의 실제 답장 이력 확보
  • summarize_mails.py: 메일 분류 시 "이 발신자에게 과거 답장 이력 N회" 신호를 프롬프트에 표시 - 단, "참고만 하고 그 자체로 분류를 결정짓지 말 것"이라고 명시해 신호가 본문 판단을 대체하지 않도록 함
  • 실제 API 호출로 검증 완료 (금액/수량/기한 등 구체적 사실 반영, 오류 없음)

배포 상태: 강제 반영 없이 신규/변경 메일부터 자연 적용, 며칠 지켜보고 효과 판단 예정

2026-08-21

📋 오늘(08-21) 작업 내역

1. 사용량 페이지(usage.html) 일별 비용 그래프 개편

  • 기존 기능별 스택 막대 → 합계는 막대 + 기능별(메일요약/프로젝트요약/Motor Tech Brief/방치이슈추적) 내역은 겹친 꺾은선으로 변경, 범례 색상은 아래 상세(파이/시간대) 차트와 동일하게 통일
  • Y축 단위 $0.5로 변경 (실제 최댓값을 다음 $0.5 배수로 올림)
  • 날짜 클릭 시 나오는 시간대별 상세 차트: Y축을 $1.00 이하면 $1.00, 초과하면 $2.00으로 고정, $1 단위 흰 점선 눈금

2. 14시 정기 업데이트 정상 완료 확인 - 전 단계 exit 0, Cloudflare 배포까지 정상

3. 비용 분석 (Haiku vs Sonnet, 배치/캐싱)

  • 메일/프로젝트 요약 파이프라인은 prompt caching 대상 아님 (Haiku 4.5 캐시 최소 길이 4096토큰인데 지시문은 200~400토큰 수준이라 애초에 캐시가 안 걸림)
  • 배치 크기·prev_state 절감은 계산해보니 연 $5~10 수준으로 효과 작음
  • Sonnet 5 전환 시 비용: 이론상 2~3배, 실측(과거 혼입 데이터) 6.8배 - "빠름"이 아니라 "더 똑똑함" 쪽 트레이드오프

4. 메일/프로젝트 요약 품질 개선 (뭉뚱그려짐/분류부정확/문체어색 피드백 반영)

  • summarize_mails.py, summarize_projects.py 프롬프트에 구체성 강제 지시 + action/reply 분류 예시 + 문체 좋은예/나쁜예 추가
  • 미결 액션(open_actions)이 처음 등장한 지 *6개월 넘으면 자동 제외* - 모델 판단이 아니라 코드에서 날짜로 직접 추적/필터링 (project_state.action_since_json 신규 컬럼)

5. 전체 반영 + 배포

  • 메일 요약 2,142건 새 프롬프트로 전체 재생성(--force), 프로젝트 요약은 자연 반영(11개 갱신)
  • project.html / usage.html / archive / cycle / devlog 전부 재생성 후 Cloudflare Pages 배포 완료 (비용 약 $3.92)
2026-08-20

📋 오늘(08-20) 작업 내역

1. Cloudflare KV list() 사용 완전 제거

  • 남아있던 4개 기능(대분류/중분류, 프로젝트 현황, 주간 현황, 미분류 대기열)을 list() 방식에서 get()/put() 단일 키 방식으로 재설계
  • list()는 하루 쿼터가 1,000회로 get()/put()의 100,000회보다 100배 낮아 여러 기능이 공유하는 쿼터가 자주 소진되던 문제 해결
  • 기존 데이터(대분류 33건·프로젝트 현황 17건·주간 현황 19건·미분류 대기 5건) 전부 마이그레이션 후 운영 서버에서 직접 검증, 배포 완료
  • apply_unclassified_actions.py(로컬 스크립트)도 새 큐 방식에 맞게 재작성

2. "미분류" 탭 재접속 시 초기화되는 문제 개선

  • 분류/삭제 요청 후 페이지를 새로고침하거나 다시 열면, 아직 실제 반영(하루 2회 파이프라인) 전이라 예전 목록이 그대로 보이던 문제
  • 페이지 로드 시 대기 큐를 조회해서 이미 요청한 항목은 화면에서 미리 숨기도록 개선 - 실제 반영 주기는 그대로지만 체감상 즉시 처리된 것처럼 보임
  • 배포 완료, 운영 서버 확인
2026-08-14

📋 오늘(08-14) 작업 내역

1. 주간 현황 대시보드를 참고 디자인 구조에 정확히 맞춤

  • 처음엔 KPI 카드/2단 그리드/Risk·Issue/범례 중 일부를 생략한 축약판으로 냈다가, 참고 이미지와 다르다는 피드백 받고 전부 복원
  • 전체 상태(넓은 카드) + 정상/주의/조치필요/미결액션 카드 5개, 우선 Action Top 5 + 이번 주 변화 2단 그리드, 프로젝트 테이블, Risk/Issue, 상태 보는 법 범례까지 참고 이미지와 동일 구성
  • project.html → "주간 현황" 탭에서 확인 가능

2. Slack 자동 게시 연동 완료

  • Incoming Webhook 발급 + .env 저장, 실제 게시 검증 완료
  • 매주 금요일 07:15 스케줄러 등록 완료 (오늘 07:15 첫 자동 실행 확인됨)

3. 로그인 게이트 다크 테마 색상 누락 버그 수정

  • 원인: 새로 추가한 색상 변수(--navy, --danger, --shadow)를 게이트의 어두운 보라 테마 쪽에 안 넣어서, 라이트 테마용 어두운 남색 글자가 검은 배경 위에 그대로 나와 프로젝트 이름 등이 거의 안 보였음
  • 다크 테마용 값 추가로 해결 (--navy는 밝은 라벤더, --danger는 밝은 빨강, --warn도 핑크→앰버로 통일)

4. "개발 이력" 페이지도 동일한 대시보드 구조로 재구성

  • KPI 카드(전체 기록/총 항목 수/이번 주 게시/건당 평균) + 2단 패널(최근 업데이트 타임라인 / 최신 하이라이트) + 전체 기록 테이블
  • 프로젝트 상태·미결 액션 같은 개념이 없어 Risk·범례 패널은 억지로 채우지 않고 제외
  • 기존 상세 기록(전체 내용)은 그 아래 그대로 유지
2026-08-13

📋 오늘(08-13) 작업 내역

1. Daily Motor Tech Brief 완전 자동화

  • 기존엔 ChatGPT에서 수동 생성 → 브라우저로 다운로드해서 폴더에 직접 넣는 방식이었음 (파일 메타데이터로 확인)
  • Claude Sonnet 5 + 웹 검색으로 매일 아침 자동 생성하도록 전환, 수동 다운로드 단계 제거
  • 홈 화면에 Tech Brief 카드 신규 추가 (프로젝트 현황 ↔ 차량관리 사이), 최신 15일치 허브 페이지(techbrief.html) 구성, 상단에 오늘자 요약 박스 배치

2. 프로젝트 현황 요약 방식 전면 개편

  • 기존: 메일 20통 오면 요약 20개 → 결국 사람이 다 읽어야 전체 그림 파악
  • 개편: 프로젝트별 "누적 상태" 하나로 관리 (현재 단계 / 최근 변경 / 미결 액션 / 핵심 수치 / 원문 근거), 새 메일만 이전 상태와 병합
  • 첨부파일(견적서·BOM·사양서)에서 뽑은 실제 숫자도 이제 반영됨 — 기존엔 첨부파일 내용이 아예 빠져 있었음
  • 31개 프로젝트 전체 실데이터로 검증 완료, 배포 완료

3. "팀원 출장·연차·교육" 탭 미업데이트 버그 수정

  • 원인: JADE 신청 메일이 7월 중순부터 Trash/퇴사자 폴더 대신 Inbox로 라우팅이 바뀌었는데, 동기화 스크립트가 Inbox를 안 보고 있어서 한 달 넘게 누락
  • Inbox 포함하도록 수정, 누락된 16건 백필 완료 (오늘자 08-13 신청까지 정상 반영), 배포 완료

4. 신규 메일 30분 단위 경량 체크 자동화 추가

  • IMAP STATUS만 확인(본문 안 가져옴, 실측 7초/1회) → 토큰/부하 부담 거의 없음
  • 신규 메일 20건 이상 누적되면 전체 파이프라인 조기 실행, 정규 스케줄(07/10/13/16/19시)과 중복 실행은 90분 디바운스로 자동 방지
  • Task Scheduler에 KakaoworkMail-MailCountCheck 등록 완료
2026-08-12

📋 오늘(08-12) 변경사항 정리

1. 메일 동기화 대규모 확장 (sync_mail_to_sqlite.py, 09:59)

  • --all-folders모드 추가: 담당자별 개인/부서 폴더까지 전체 동기화 (IDB2 프로젝트가 Inbox에만 있는 줄 알고 놓쳤던 사고 계기)
  • 메일 본문 + 첨부파일 내용 추출/저장 신규 (PDF/DOCX/PPTX/XLSX 텍스트 파싱, 원본 파일도 로컬 저장 → 다운로드 기능용)
  • IMAP 폴더별 재연결/재시도 로직 추가 (네트워크 hiccup 대비)
  • 신규 프로젝트 태그 규칙 10건 추가: IDB2, 휴먼로이드, AIDA 인덱스 정보, GMB EOP, Pierburg, ATLAS 휴머노이드(DY AUTO), Eckerle MX, 현대모비스 로보틱스 BT1 30, BCSC 품목 선정

2. Netlify 배포 일시중단 → Cloudflare 전환 (deploy_to_netlify.py, .env, 10:28~10:31)

  • Netlify 계정 크레딧 소진으로 배포 잠정 중단(NETLIFY_DEPLOY_PAUSED=1)
  • GitHub → Cloudflare Pages(jackey-cloudflare)가 현재 배포 경로. 08-31에 Netlify 완전 제거 여부 재검토 예정

3. 프로젝트 현황 페이지 "UPDATE" 버튼 제거 (generate_project_status.py, 17:26)

  • 기존 버튼이 실제로는 단순 새로고침(location.reload)만 하고 메일 갱신/배포와는 무관해 오해 소지 있어 제거
  • 19시 자동 파이프라인 실행에서 반영되어 Cloudflare에 이미 배포 완료

4. 자동 파이프라인 정상 가동

  • 오늘 예정된 5회(07/10/13/16/19시) 모두 정상 실행, 배포까지 성공
2026-08-11

오늘 작업 기록 (2026-08-11) — Cloudflare Pages 독립 미러링 준비

기존 Netlify 호스팅(jackey-public)은 전혀 건드리지 않고, GitHub + Cloudflare Pages로 완전히 독립된 두 번째 배포 경로를 준비했습니다. 첨부파일 다운로드 등 모든 기능이 Netlify와 무관하게 동작하도록 구성했습니다.

진행한 작업

  • gate.js / login.html / account.html의 인증 호출 경로를 /api/auth로 통일
  • netlify.toml에 /api/auth, /api/download-attachment 리다이렉트 추가 (기존 Netlify 로그인 기능 안 깨지도록)
  • generate_project_status.py의 첨부파일 다운로드 링크를 /api/download-attachment로 변경
  • jackey-cloudflare/ 폴더 신규 생성 — Cloudflare Pages Functions 버전
  • functions/api/auth.js: 비밀번호 해시를 Cloudflare Workers KV에 저장 (Netlify 계정과 무관, 완전 독립)
  • functions/api/download-attachment.js: imapflow/mailparser로 카카오워크 IMAP 직접 조회 (Netlify 함수 경유 없음)
  • wrangler.toml, package.json (nodejs_compat) 구성
  • sync_to_cloudflare.py 작성: jackey/ 정적 페이지만 jackey-cloudflare/로 자동 미러링 + git commit/push
  • deploy_to_netlify.py에 통합 완료 → 앞으로 Netlify 배포할 때마다 Cloudflare용 저장소도 자동으로 함께 최신화됨
  • jackey-cloudflare/ git 저장소 초기화 + 첫 커밋 완료 (정적 페이지 88개 파일)
2026-08-08

📅 8/7 작업 요약

휴먼로이드 프로젝트 — 메일 병합

  • "소형 CORE 와이어컷" 관련 메일 4건 병합 (17건 → 21건)

신규 프로젝트 "IDB" 등록

  • "IDB 2.0" 견적 요청 메일(한국어판 + 중국 발주처용 중국어판) 2건 등록
  • 기존 "IDB2"(멕시코 현지화)와는 별개 프로젝트로 분리 — 두 메일은 수신자가 달라 둘 다 유지

중복 메일 정책

  • 같은 메일이 여러 폴더에 중복 저장되면 하나만 등록하는 로직 재확인 (발신자+제목+분단위 시각 기준). 제목이 다른 이중언어 메일 등은 자동 탐지가 안 되니 발견 시 알려주시면 처리

차량 페이지(car.html) 버그 수정

  • 주유단가 추이 그래프 정렬 순서 수정 (최신순 → 과거~최신 오름차순)
  • 운행일지에 월별 보기(전체/4월~8월) 탭 버튼 추가
2026-08-07

📋 프로젝트 현황 업데이트 (2026-08-07)

신규 프로젝트: IDB

  • "IDB 2.0" 관련 견적 요청 메일 2건 등록 (한국어판 + 중국 발주처용 중국어판 — 서로 다른 수신자라 둘 다 유지)
  • 기존 IDB2(멕시코 현지화) 프로젝트와는 별개로 분류

휴먼로이드 프로젝트

  • "소형 CORE 와이어컷" 관련 메일 4건 병합 (동일 프로젝트로 확인) — 17건 → 21건
2026-08-06

📋 프로젝트 현황 페이지 개선 (2026-08-06)

신규 프로젝트 등록

  • IDB2 (메일 55건 — 기존엔 Inbox만 봐서 1건만 잡히던 것 수정)
  • 휴먼로이드 (17건)
  • AIDA 인덱스 정보

동기화 범위 확대

  • 담당자별 개인/부서 폴더까지 전체 60여 개 폴더 동기화 (기존엔 Inbox만 봄)
  • 보낸편지함 최신 100건도 포함 — 내가 먼저 보낸 협조 메일도 이제 반영됨
  • 하루 5회(07/10/13/16/19시) 자동 갱신

버그 수정

  • 큰 첨부파일(5MB+) 낀 메일이 조용히 누락되던 문제 수정
  • 서로 다른 폴더에 저장된 동일 메일이 중복 표시되던 문제 수정

표시 방식 개선

  • 상태 분류: 승인/진행중/활동없음 3단계 → 진행중/활동없음 2단계로 단순화
  • 메일 분류: 조치필요/의사결정/참고용 3단계 → 조치필요/회신필요 2단계로 단순화
  • 상세보기에 시간순 / 카테고리순 보기 전환 버튼 추가 (기본: 시간순)