6.2 KiB
Executable File
6.2 KiB
Executable File
2026-04-05 작업일지
오늘 작업
- Plan 작업 등록 시
메인까지 자동등록옵션 추가 및 자동 main 반영 흐름 연결 - 대기성 알림을 줄이고 실제 자동화 시작/핵심 단계 중심 알림으로 재정렬
- 기본 진입 화면을 Plans로 조정하고 알림 진입 시 plan 상세 연결 개선
- Plan 성과 차트를 보드 하단에서 별도 사이드 메뉴(차트) 화면으로 분리
- 작업 ID 기본값일 때 알림 제목을
#채번번호기준으로 표기 - Codex Live 채팅 기능 추가 후 별도 Chat 메뉴/사이드바로 분리
- 채팅을 폴링 기반에서
work-server /ws/chatWebSocket 기반으로 전환 - 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 보드 운영 기능(정상처리 구분, 상세 이동, 자동화 상태 반영)을 보강해 운영 화면으로서 활용도를 높임
스크린샷
소스
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.mdsrc/app/main/MainChatPanel.tsxsrc/features/planBoard/PlanBoardPage.tsxsrc/features/planBoard/charts.tsxsrc/features/planBoard/api.tsetc/servers/work-server/src/services/plan-service.tsetc/servers/work-server/src/services/plan-notification-service.tsetc/servers/work-server/src/services/plan-notification-policy.tsetc/servers/work-server/src/services/chat-service.tsetc/servers/work-server/src/workers/plan-worker.ts

