Files
ai-code-app/docs/worklogs/2026-04-05.md
2026-04-21 03:33:23 +09:00

6.2 KiB
Executable File

2026-04-05 작업일지

오늘 작업

  • Plan 작업 등록 시 메인까지 자동등록 옵션 추가 및 자동 main 반영 흐름 연결
  • 대기성 알림을 줄이고 실제 자동화 시작/핵심 단계 중심 알림으로 재정렬
  • 기본 진입 화면을 Plans로 조정하고 알림 진입 시 plan 상세 연결 개선
  • Plan 성과 차트를 보드 하단에서 별도 사이드 메뉴(차트) 화면으로 분리
  • 작업 ID 기본값일 때 알림 제목을 #채번번호 기준으로 표기
  • Codex Live 채팅 기능 추가 후 별도 Chat 메뉴/사이드바로 분리
  • 채팅을 폴링 기반에서 work-server /ws/chat WebSocket 기반으로 전환
  • Vite 개발 환경에 /ws/chat 프록시 추가 및 재연결 안정화
  • 채팅 UI를 하단 입력 고정형으로 개편하고 진단/오프라인 폴백 개선
  • 진행 알림(1분/3분) 메시지에 현재 처리 단계/요약 반영
  • 재처리/재시작 알림 조건 정교화(실제 재실행 예약 시만 노출)
  • Web Push 알림 태그 충돌(덮어쓰기) 방지 처리
  • Noti 토큰 관리 UI 및 전송 조건(토큰 등록 시) 정리
  • Docs 기본 선택을 worklogs로 조정
  • Plan 목록에서 정상처리 구분(상/중/하) 즉시 변경 기능 추가

이슈 및 메모

  • 채팅 연결 이슈는 프론트 코드보다 프록시/업그레이드 헤더/URL 계산의 영향이 큼
  • 진행 알림은 내용 품질이 낮으면 오히려 운영 피로도를 높임
  • Web Push는 tag 충돌 시 중요한 이벤트가 사라질 수 있어 이벤트 키 설계가 중요
  • 재처리 알림은 "실행 예약"과 "단순 응답" 구분이 필요

결정 사항

  • 채팅은 WebSocket 기본, 실패 시 진단 가능 메시지와 폴백 제공
  • 진행 알림은 1분 후, 이후 3분마다 유지하되 현재 단계 중심 문구 사용
  • 알림 제목은 사용자 입력값보다 채번 ID 우선 전략 유지
  • 재시작 알림은 실제 재실행이 예약된 경우에만 발송
  • Docs 진입 기본 탭은 작업일지 우선

상세 작업 내역

  • Plan/Chat 네비게이션을 재구성해 상단 메뉴-사이드바-콘텐츠 관계를 명확히 분리
  • 워커 알림 체계를 시작/경과/완료/재시작으로 세분화하고 노이즈 이벤트를 제거
  • 채팅은 UI 레이아웃, 연결 안정성, 진단 문구, 오프라인 대체 응답까지 함께 다듬어 실사용 대응 범위를 확장
  • 푸시 알림은 iOS/Web 공통 이벤트 일관성을 높이고 덮어쓰기 문제를 줄이도록 이벤트 키 전략을 조정
  • Plan 보드 운영 기능(정상처리 구분, 상세 이동, 자동화 상태 반영)을 보강해 운영 화면으로서 활용도를 높임

스크린샷

feature-chat-live feature-plans-charts

소스

  • etc/servers/work-server/src/services/chat-service.ts, src/app/main/MainChatPanel.tsx: Codex Live 채팅을 WebSocket 기반으로 연결하고, 현재 화면/Plan 상태를 반영한 응답 흐름을 추가했습니다.
  • src/features/planBoard/charts.tsx, src/features/planBoard/PlanBoardPage.tsx: Plan 성과 차트를 별도 메뉴로 분리하고 보드 운영 기능을 확장했습니다.
  • src/features/planBoard/api.ts: Plan 데이터 조회를 no-store 중심으로 바꿔 현재 상태가 바로 반영되게 조정했습니다.
  • etc/servers/work-server/src/services/plan-service.ts, etc/servers/work-server/src/workers/plan-worker.ts: 메인까지 자동등록, 정상처리 구분, 진행 알림/재시작 조건을 서버 흐름에 연결했습니다.
diff --git a/etc/servers/work-server/src/services/chat-service.ts b/etc/servers/work-server/src/services/chat-service.ts
+type ChatInboundMessage =
+  | { type: 'context:update'; payload: ChatContext }
+  | { type: 'message:send'; payload: { text: string } };
...
+function isWorklogRequest(input: string) {
+  return mentionsWorklog || (normalized.includes('log') && asksToWrite);
+}
...
+function buildWorklogReply(context: ChatContext | null, snapshot: PlanSnapshot | null) {
+  return [
+    `# ${today} 작업일지`,
+    '## 오늘 작업',
+  ].join('\\n');

변경 파일 (전체, 중복 제거, KST 기준)

  • M etc/servers/work-server/src/services/chat-service.ts
  • M etc/servers/work-server/src/routes/plan.ts
  • M src/app/main/MainChatPanel.tsx
  • M etc/servers/work-server/src/services/plan-notification-service.ts
  • M src/app/main/MainHeader.tsx
  • A src/app/main/tokenAccess.ts
  • M src/features/planBoard/PlanBoardPage.tsx
  • M etc/servers/work-server/src/config/env.ts
  • M etc/servers/work-server/src/services/plan-service.ts
  • M scripts/run-plan-codex-once.mjs
  • M src/features/planBoard/types.ts
  • M src/styles.css
  • M etc/servers/work-server/src/workers/plan-worker.ts
  • M src/app/main/MainContent.tsx
  • M vite.config.ts
  • M etc/servers/work-server/package-lock.json
  • M etc/servers/work-server/package.json
  • M etc/servers/work-server/src/server.ts
  • A etc/servers/work-server/src/services/chat-service.ts
  • M src/app/main/MainSidebar.tsx
  • M src/app/main/MainView.tsx
  • M src/app/main/types.ts
  • M src/store/appStore/types/index.ts
  • A src/app/main/MainChatPanel.tsx
  • A src/features/planBoard/charts.tsx
  • M src/features/planBoard/index.ts
  • M src/store/appStore/context/AppStoreContext.tsx
  • M src/sw.js
  • M src/features/planBoard/api.ts
  • M docker-compose.yml
  • M scripts/serve-app-dist.mjs
  • R src/sw.ts -> src/sw.js
  • A scripts/serve-app-dist.mjs
  • M src/app/main/appUpdate.ts

실행 커맨드

npm run build
npm run capture:feature -- --date 2026-04-05 --target chat-live
npm run capture:feature -- --date 2026-04-05 --target plans-charts

변경 파일

  • docs/worklogs/2026-04-05.md
  • src/app/main/MainChatPanel.tsx
  • src/features/planBoard/PlanBoardPage.tsx
  • src/features/planBoard/charts.tsx
  • src/features/planBoard/api.ts
  • etc/servers/work-server/src/services/plan-service.ts
  • etc/servers/work-server/src/services/plan-notification-service.ts
  • etc/servers/work-server/src/services/plan-notification-policy.ts
  • etc/servers/work-server/src/services/chat-service.ts
  • etc/servers/work-server/src/workers/plan-worker.ts