2.6 KiB
2.6 KiB
Datacollector - 인증 복구 후 자동 재개 상태 전환 수정
- 작성 시각: 2026-04-25 22:39:30 KST
- 프로젝트:
/Volumes/Data/project/Antigravity/Datacollector - 관련 파일:
src/components/AgentDashboard.tsx,src/lib/engine.ts
상황
NotebookLM 인증 복구 로직을 강화했지만, 화면에서는 여전히 CONTINUE MISSION 버튼을 사용자가 눌러야 다음 큐가 이어지는 것처럼 보였다.
사용자 관찰:
- 작업은 일부 완료됨.
- 큐에는 아직 작업이 많이 남아 있음.
- 헤더 상태가
IDLE로 보임. CONTINUE MISSION버튼이 사용자의 수동 클릭을 기다림.
원인
프론트엔드 상태 전환에 빈틈이 있었다.
AgentDashboard의 useEffect는 status !== 'running'일 때 KnowledgeEngine.stop()을 호출한다. 그런데 기존 stop()은 내부 실행 플래그만 끄는 것이 아니라 항상 Zustand 상태까지 idle로 바꿨다.
그 결과 인증 오류 등으로 paused 상태를 유지해야 하는 경우에도 React effect를 지나면서 paused -> idle로 바뀌었다. 이렇게 되면 앱은 "복구 후 자동 재개 가능한 일시정지"가 아니라 "사용자가 다시 Continue를 눌러야 하는 대기 상태"처럼 동작했다.
조치
src/lib/engine.ts:
stop(updateStatus = true)형태로 변경했다.- 내부 엔진만 멈춰야 할 때는 UI 상태를 덮어쓰지 않도록 했다.
src/components/AgentDashboard.tsx:
status !== 'running'effect에서는engine.stop(false)를 호출하도록 변경했다.status === 'paused'이고 큐가 남아 있으면 NotebookLM 연결 확인 후 자동으로running으로 되돌리는 auto-resume effect를 추가했다.- 기존 버그로 이미
idle에 갇힌 화면도 구제하기 위해, 수동 정지나 작업 완료 로그가 없는idle + 남은 큐상태도 복구 가능한 멈춤으로 보고 자동 재개하도록 보강했다. - 중복 자동 재개를 막기 위해
autoResumeRef잠금을 추가했다.
검증
다음 검증을 완료했다.
npm run lint
curl -sS -I http://127.0.0.1:3000
curl -sS -X POST http://127.0.0.1:3002/api/check-connection
결과:
- TypeScript 검사 통과
- 프론트엔드 서버 응답 정상
- NotebookLM 브리지 연결 확인
success: true
운영 메모
앞으로 인증 복구나 연결 복구로 인해 paused 상태가 되면 앱이 NotebookLM 연결을 확인하고 자동으로 다음 큐를 이어서 실행한다.
사용자가 직접 STOP / PAUSE를 누른 경우는 기존처럼 idle로 유지되므로, 수동 정지는 자동 재개 대상이 아니다.