# 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` 잠금을 추가했다. ## 검증 다음 검증을 완료했다. ```bash 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`로 유지되므로, 수동 정지는 자동 재개 대상이 아니다.