김건호예비역 소령 · AI 자동화·서비스 기획

프로젝트/03

Work Navigator

담당자가 바뀌어도 업무 맥락이 남는 관리 도구

담당자가 바뀌면 업무가 리셋되는 문제를, 데이터 구조로 풀었습니다.

화면 투어 (19초) — 대시보드·업무 보드·8탭 상세(진행기록·이해관계자 탭 이동)·주간 캘린더·인수인계를 차례로 훑는다. 전부 데모 데이터
대시보드 — AI 브리핑이 오늘 기한을 묶어 주고, 확인하지 못한 것은 지어내지 않고 '확인 필요'로 남긴다. 우측 코치 제안에는 전부 실행 버튼이 붙는다
대시보드 — AI 브리핑이 오늘 기한을 묶어 주고, 확인하지 못한 것은 지어내지 않고 '확인 필요'로 남긴다. 우측 코치 제안에는 전부 실행 버튼이 붙는다
업무 보드 — 카드마다 상태·우선순위·진행률을 그 자리에서 고친다. 각 카드 우측의 자물쇠 배지가 공개 범위다
업무 보드 — 카드마다 상태·우선순위·진행률을 그 자리에서 고친다. 각 카드 우측의 자물쇠 배지가 공개 범위다
업무 상세 8탭. 우측 '인수인계 준비도'는 지금 자리를 비워도 남이 이어받을 수 있는지를 점수로 보여주고, 비어 있는 항목을 지목한다
업무 상세 8탭. 우측 '인수인계 준비도'는 지금 자리를 비워도 남이 이어받을 수 있는지를 점수로 보여주고, 비어 있는 항목을 지목한다
주간 캘린더 포커스 모드 — 현재 시각 ±2시간만 띄운다. 창 밖 일정은 '위쪽에 12건'으로 알리고, 우측 미배정 할 일을 끌어다 시간에 배정한다
주간 캘린더 포커스 모드 — 현재 시각 ±2시간만 띄운다. 창 밖 일정은 '위쪽에 12건'으로 알리고, 우측 미배정 할 일을 끌어다 시간에 배정한다
인수인계 — 진행중 업무를 준비도 낮은 순으로 세운다. 22년간 본 '담당자가 바뀌면 업무가 리셋되는' 문제에 직접 대응하는 화면
인수인계 — 진행중 업무를 준비도 낮은 순으로 세운다. 22년간 본 '담당자가 바뀌면 업무가 리셋되는' 문제에 직접 대응하는 화면

한 줄

업무를 본체로 두고 그 아래에 진행 상태와 판단 근거를 붙여, 3주 전에 왜 그렇게 결정했는지를 되찾을 수 있게 만든 업무 관리 웹앱입니다.

문제

인사 직위에서 22년간 반복해서 본 장면이 있습니다. 담당자가 전출하면 업무가 리셋됩니다. 문서는 남지만 "왜 그렇게 결정했는가"는 남지 않습니다. 후임은 결론만 물려받고 배경은 처음부터 다시 만듭니다.

민간에 와서 같은 문제를 다시 만났고, AI 도구를 쓰면서 오히려 심해졌습니다. 대화 기록은 쌓이는데 3주 전 판단을 찾으려면 스크롤해야 합니다. 대화 중심 도구는 축적은 하지만 회수는 못 합니다.

내가 한 일

남에게 제안하기 위한 기획물이 아니라, 제가 매일 돌려 보기 위한 도구로 만들었습니다. 설계 결정과 트레이드오프 검토는 제가 하고, 구현은 Claude Code에 위임하는 방식으로 진행했습니다. 열두 단계로 계획했고 열한 단계까지 구현했습니다.

  • Phase 0 — Next.js·Tailwind·Drizzle 기반 세팅, 디자인 토큰 정의, better-sqlite3 WAL 모드 연결
  • Phase 1 — 34개 테이블 스키마 전체 정의, 단일 가시성 필터(lib/repo/scope.ts) 구현, 업무 CRUD API, 가시성 전용 Vitest 테스트 38건 작성
  • Phase 2 — 업무 보드와 8탭 상세 화면, 다음 할 일 체크·순서 변경, 진행기록 스레드, 인라인 편집과 낙관적 업데이트. 실사용 시작점으로 계획한 단계
  • Phase 3 — AI 어댑터(프로바이더 추상화)와 코치 규칙 엔진 9종, 빠른 입력(Ctrl+K)
  • Phase 4 — 주간 캘린더. 현재 시각 ±2시간 포커스 모드, 시간블록 드래그 생성·이동, 미배정 할 일을 캘린더로 끌어 배정, 날짜 메시지와 읽음·확인 분리
  • Phase 5 — 대시보드, FTS5 trigram 전역검색(한국어 부분 문자열), 매일 자동 백업·30일 정리·복원, Markdown+JSON 내보내기
  • Phase 6 — 노하우뱅크. 경험 3줄 입력 → AI 구조화 → 되묻기 인터뷰. 새 업무 생성 시 관련 과거 경험 자동 제시
  • Phase 7 — 인수인계. 업무 이력을 자동 조립하고 인터뷰로 빈 곳을 채워 Markdown으로 출력. AI가 채우지 못한 항목은 확인 필요로 비워 둡니다
  • Phase 8 — 프로젝트·협업 기반. 활동 피드, 개인→공유 전환 시 함께 공개되는 기록 수 사전 표시, 멘션
  • Phase 9 — 주간 회고. 미확인 블록 일괄 처리, 계획 대비 실제 소요, 시간대별 미실행 패턴
  • Phase 10 — 업무폴더 인덱스. 로컬 폴더 메타데이터만 스캔해 버전 혼란 파일군을 묶고 관련 업무를 추정
  • Phase 11 — 프로바이더 확장(OpenAI·사내망 sLLM 스텁)과 설정 화면, AI 개입 강도 3단계
  • Phase 12(보류) — 서버 배포·다중 사용자 준비. 실사용 2주 데이터를 보고 착수 여부를 정하기로 했습니다

설계 판단

작업이 본체, 대화는 부속. 이 한 줄이 이 프로젝트의 전부입니다. 대부분의 AI 업무 도구는 대화를 상위 구조로 두고 그 안에 작업을 넣습니다. 그러면 회수 단위가 대화가 되고, 대화는 시간 순으로만 정렬됩니다. 저는 반대로 두었습니다.

가시성을 화면이 아니라 데이터 계층에서 강제했습니다. 테이블 34개를 세 계층으로 나눴습니다. 1계층은 공유 단위로 워크스페이스·소유자·공개범위를 직접 가지고(업무, 프로젝트, 일정, 일일노트 등), 2계층은 부모의 가시성을 상속하며(진행기록, 다음 할 일, 이슈, 인수인계 등), 3계층은 워크스페이스 범위만 갖는 조인·시스템 테이블입니다. 조회는 전부 단일 필터 함수를 거치게 했습니다.

이렇게 한 이유는 단순합니다. 권한 검사를 화면마다 넣으면 언젠가 한 화면에서 빠지고, 그 한 곳이 유출 경로가 됩니다. 필터를 한 곳에 몰아두면 빠뜨릴 자리가 없어집니다. 그래서 기능 테스트보다 가시성 테스트를 먼저 썼습니다. 전역검색도 같은 필터를 통과합니다.

AI가 모르는 것은 지어내지 않게 했습니다. 인수인계와 노하우뱅크에서 AI가 채우지 못한 항목은 빈칸으로 두고 확인 필요라고 표시합니다. 건너뛴 항목은 확인하지 못한 사항에 남습니다. API 키가 없어도 앱 전체가 구동되고 수동 경로가 제공되도록 했습니다. AI가 없어서 못 쓰는 도구는 AI가 틀렸을 때도 못 쓰는 도구입니다.

DB는 SQLite로 시작했습니다. 처음부터 PostgreSQL로 가면 초기 반복 속도가 떨어집니다. Drizzle로 추상화해 두고 다중 사용자 단계에서 전환하도록 설계했습니다. 화면 코드 어디에도 ORM이나 AI SDK를 직접 import하지 않는 것을 완료 기준에 넣었습니다.

단계 사이에 자동 진행을 두지 않았습니다. Phase가 끝나면 멈추고 구현한 것·미룬 것·확인이 필요한 것을 보고한 뒤 다음으로 갔습니다. 다만 원래 계획은 "Phase 2부터 실제로 써 보고 피드백에 따라 순서를 조정한다"였는데, 이것은 지키지 못했습니다. 열두 단계를 구현으로만 통과했습니다. AI 기능을 실사용 데이터 없이 붙인 셈이라, 무엇을 도와야 하는지는 이제부터 써 보며 확인해야 합니다.

결과와 한계

구현은 끝났지만 실사용은 아직 시작하지 않았습니다. 확인용 샘플 데이터를 넣어 화면과 조작을 점검한 단계입니다. 다음 할 일은 기능 추가가 아니라 2주간 실제 업무로 써 보는 것이고, 서버 배포(Phase 12) 착수 여부도 그 데이터로 정합니다.

수치로 남은 것은 다음과 같습니다. 테스트 374건(20개 파일) 통과, 화면 11개, API 60여 라우트, 프로덕션 빌드 통과. 업무 30건·진행기록 200건·시간블록 100건·날짜 메시지 50건 규모에서 가장 느린 화면이 76ms였습니다(기준 500ms).

한계도 분명합니다. 실사용 데이터가 없으므로 어떤 기능이 실제로 쓰이는지 모르고, 다중 사용자 권한·동시성은 검증되지 않았으며, 가시성 구조는 테스트로는 통과했지만 실전 다중 사용자 환경을 거치지 않았습니다. 인라인 편집 롤백, 코치 제안 실행 버튼 등 눈과 손으로 확인해야 하는 항목 15가지가 남아 있습니다. 코드는 들어가 있지만 자동 검증이 불가능해서 남긴 것들입니다.

화면과 시연

촬영 예정 목록. 실제 업무 데이터가 아니라 데모 데이터로 촬영합니다.

  • 영상 — 태스크 보드 조작 20~30초. 카드 이동·인라인 편집·상세 탭 이동 순
  • 스크린샷 — 업무 보드 메인 화면
  • 스크린샷 — 8탭 상세 화면 중 진행기록 스레드
  • 스크린샷 — 주간 캘린더 포커스 모드 (미배정 할 일 드래그 배정)
  • 스크린샷 — 인수인계 화면의 확인 필요 빈칸과 완성도 게이지
  • 스크린샷 — 가시성 테스트 Vitest 통과 결과 또는 scope.ts 코드 일부