hwss-investigation-agent-frontend

HWSS 프론트엔드 가이드

로컬 실행 방법, 화면마다 부르는 API, 폴더와 파일마다 맡은 역할을 정리했습니다. 역할 문장은 파일 맨 위 또는 첫 export 위 주석의 첫 문장을 옮겼고, UI 킷은 components/ui/README.md 에서 가져왔습니다. 파일 이름을 누르면 GitHub 소스로 가고, 최근 변경된 파일은 강조됩니다. 섹션 제목 옆 말풍선으로 댓글을, 이슈 버튼으로 GitHub 이슈를 남길 수 있습니다.

37화면
791소스
428Vitest 테스트
94E2E 스펙
124/240화면이 부르는 API

dev 기준 #2181 머지 11/13 17:36 · 커밋 b8b358b4 · 계기 Merge pull request #2181 from fdxchatgpt/feat/proto-front-parity-20261112 프로토·프론트 화면 차이 9건 동일화 (야간 20261112 아침 확인) 완료 · 2026-11-13 17:48 KST 빌드 · 빌드 런

화면이 데이터를 가져오는 길

  1. proxy.ts1차 가드 — access 쿠키 없으면 /auth/start
  2. app/…/page.tsx화면 진입점 → _components
  3. _lib/queries.tsqueryOptions → lib/api/client.ts(ky)
  4. /api/v1/*next.config.ts rewrites → 백엔드

화면은 백엔드 주소를 모릅니다. 같은 오리진의 /api/v1 로만 부르고 Next.js 가 넘깁니다. 백엔드 없이 개발할 때는 MSW 가 이 요청을 브라우저에서 가로챕니다.

폴더 이름이 뜻하는 것

(auth)
로그인·온보딩 (URL 에 안 붙음)
(workspace)
앱 쉘 안 화면
(popup)
별도 창 화면
_components
그 화면 전용 컴포넌트
_lib
그 화면 쿼리·규칙
[reportNo]
동적 경로 파라미터
components/ui
프리미티브·UI 킷
mocks/
MSW 목 응답
e2e/
Playwright 스모크·수용 시나리오

시작하기

로컬 실행

Node 22 · pnpm(corepack) · 모든 명령은 hwss-investigation-agent-frontend/ 에서 실행

접속 주소

개발 서버http://localhost:3000 로그인http://localhost:3000/login
API 프록시/api/v1/* → BACKEND_ORIGIN (기본 http://localhost:8080, next.config.ts rewrites)
E2E 서버http://localhost:3187 — pnpm test:e2e 가 MSW 를 켜고 자동 기동 (CI 는 빈 포트를 골라 E2E_PORT 로 넘김)
백엔드 실행백엔드 가이드 · 로컬 실행 · Swagger

브라우저는 같은 오리진의 /api/v1 로만 요청하고 Next.js 가 백엔드로 넘깁니다. 그래서 세션 쿠키(httpOnly)가 자동으로 붙고, 백엔드 주소를 바꿀 때는 BACKEND_ORIGIN 만 바꾸면 됩니다.

로그인과 가드

1차 가드 — proxy.ts 가 /user/*·/admin/*·/onboarding 요청에 access 쿠키가 없으면 /auth/start?from=원래경로 로 보냅니다. 이 진입점이 SSO 여부를 보고 WebAgent 콜백이나 로그인 화면으로 넘깁니다.

2차 가드 — 앱 쉘이 GET /api/v1/auth/me 로 세션을 확인합니다. 401 이면 재발급을 한 번 시도하고, 실패하면 로그인으로 보냅니다.

백엔드와 함께 띄울 때 로그인은 사번 H2016-0071(시드 시스템 관리자) / 비밀번호는 백엔드를 띄울 때 준 AUTH_LOCAL_PASSWORD 값입니다.

LNB 메뉴는 코드에 적혀 있지 않고 권한 API 응답으로 그립니다. 화면이 아직 없는 메뉴는 비활성으로 보이며, 화면을 붙일 때 components/common/workspace-menu.ts 의 MENU_ROUTES 에 한 줄 추가합니다.

개발 서버 띄우기

# 최초 1회
corepack enable
pnpm install

# ① 백엔드와 함께 — 백엔드(8080)를 먼저 띄운다
pnpm dev

# ② 백엔드 없이 — MSW 가 /api/v1 요청을 가로채 계약 모양의 목 응답을 준다
NEXT_PUBLIC_API_MOCKING=enabled pnpm dev

# ③ 다른 백엔드 주소로
BACKEND_ORIGIN=http://10.0.0.5:8080 pnpm dev

환경변수는 매번 앞에 붙이는 대신 .env.local 에 적어 둬도 됩니다(커밋되지 않음). ② 에서 아직 화면용 더미가 없는 엔드포인트도 계약 스켈레톤(mocks/handlers.generated.ts)이 성공 응답을 돌려주므로 404 가 나지 않습니다.

환경변수 lib/env.ts

BACKEND_ORIGIN선택백엔드 origin — next.config.ts rewrites가 /api/v1을 이 주소로 프록시한다 — 값: URL, 기본 http://localhost:8080
AUTH_GUARD_DISABLED선택백엔드 auth 구현 전 로컬 개발용 가드 해제 스위치 — 값: true / false, 기본 false
NEXT_PUBLIC_API_MOCKING선택MSW 브라우저 모킹 활성화 (개발·E2E 전용, 클라이언트에서도 사용) — 값: enabled / disabled, 기본 disabled
NEXT_DIST_DIR선택E2E 개발 서버가 일반 개발 서버와 빌드 잠금을 공유하지 않도록 분리한다. — 값: .next / .next-e2e, 기본 .next

새 환경변수는 lib/env.ts 의 zod 스키마에 등록하고 env.X 로 읽습니다. process.env 를 직접 읽지 않습니다(클라이언트 컴포넌트의 NEXT_PUBLIC_* 만 예외). 시크릿에는 NEXT_PUBLIC_ 접두사를 붙이지 않습니다.

pnpm 명령 package.json scripts

pnpm dev명령개발 서버 (http://localhost:3000).
pnpm build명령프로덕션 빌드 (standalone 출력 — Dockerfile 이 사용).
pnpm start명령빌드 결과 실행.
pnpm lint명령ESLint — 역할 경계 import 규칙·TanStack Query 규칙 포함.
pnpm format명령Prettier 일괄 적용.
pnpm format:check명령포맷이 안 된 파일 검사.
pnpm typecheck명령TypeScript 타입 검사.
pnpm test명령Vitest 단위·컴포넌트 테스트.
pnpm test:coverage명령vitest run --passWithNoTests --coverage
pnpm test:e2e명령bddgen 후 Playwright E2E(스모크·수용 시나리오) — MSW 를 켠 dev 서버(3187)를 자동 기동. 최초 1회 pnpm exec playwright install chromium.
pnpm test:e2e:prod명령bddgen && E2E_SERVER=prod playwright test
pnpm test:e2e:real명령bddgen && playwright test --project=real
pnpm test:e2e:coverage명령bddgen && E2E_COVERAGE=1 playwright test && node --max-old-space-size=6144 scripts/e2e-coverage-report.mjs
pnpm test:mutation명령stryker run
pnpm openapi:gen명령백엔드 openapi.json 스냅샷 → lib/api/schema.d.ts · mocks/handlers.generated.ts 생성.
pnpm check:openapi명령생성물이 스냅샷과 같은지 검사만 (갱신 안 함).
pnpm check:design-tokens명령node scripts/check-design-tokens.mjs
pnpm check:content-page명령node scripts/check-content-page.mjs
pnpm check명령PR 전 전체 검사 — format:check → lint → typecheck → check:openapi → check:design-tokens → check:content-page → test → build.

CI(.github/workflows/frontend-check.yml, 사내 러너)는 프론트 코드가 바뀐 PR·dev 푸시에서 pnpm check, pnpm check:openapi, pnpm test:e2e 를 돌립니다. 백엔드 API 계약이 바뀌면 백엔드에서 ./gradlew :hwss-api:exportOpenApiSpec 후 여기서 pnpm openapi:gen 을 같은 PR 에 커밋합니다.

시작하기

코드 배치·경계 규칙

원문: docs/guides/frontend-module-guide.md · docs/rules/frontend.md

코드를 어디에 둘까

app/<route>/_components한 화면에서만 쓰는 컴포넌트
app/<route>/_lib한 화면의 쿼리(queries.ts)·순수 계산·필터 규칙
components/user · admin한 콘솔의 여러 화면이 같이 쓰는 것
components/commonUser·Admin 양쪽에서 실제로 같은 의미로 쓰는 것 (예상만으로 올리지 않는다)
components/uishadcn 프리미티브와 UI 킷 — 업무 의미를 담지 않는다
lib/유틸, API 클라이언트, 여러 화면이 함께 쓰는 쿼리(세션·메뉴·위탁사·컬렉션·챗봇 등)

넘지 않는 경계 eslint no-restricted-imports

common · ui · libapp·components/user·components/admin 를 import 하지 않는다
user ↔ adminUser 화면·컴포넌트와 Admin 화면·컴포넌트는 서로 import 하지 않는다
(popup) ↛ 다른 route · admin별도 창 화면은 다른 route·components/admin 을 import 하지 않는다 — 함께 쓰는 코드는 components/user 로
frontend ↔ backendHTTP API 로만 통신한다 — 코드 직접 참조 금지

폴더 경계는 권한 보장이 아닙니다. 권한 검증은 서버(API)가 합니다.

상태는 섞지 않는다

서버 상태API 응답 — TanStack Query 캐시가 유일한 출처. 전역 스토어에 복사하지 않는다
URL 상태공유·새로고침에 살아야 하는 조건(필터·쪽 번호) — search param (lib/url)
폼React Hook Form + zod
전역 UI여러 화면이 공유하는 UI 상태만 Zustand
지역 상태그 외는 useState 우선

API 호출

lib/api/client.ts유일한 호출 경로(ky) — apiGet·apiPost… 401 이면 재발급 후 재시도, success:false 는 오류로 던진다
_lib/queries.ts화면별 queryOptions 팩토리. queryFn 안에서 fetch 를 직접 쓰지 않는다
lib/api/schema.d.ts백엔드 OpenAPI 스냅샷에서 생성한 타입 — 손으로 고치지 않는다

테스트 배치: 순수 함수는 옆에 Vitest, 상호작용은 Testing Library, API 의존 컴포넌트는 MSW(mocks/server.ts), 핵심 흐름·수용 시나리오(e2e/features/**/*.feature)는 Playwright(e2e/).

변경 추적

최근 변경

최근 14일 · PR 320건 (최근 20건 표시)

dev 에 머지된 PR 중 이 가이드 범위의 파일을 바꾼 것입니다. 파일을 누르면 아래 해당 행으로 이동하고, 7일 이내에 바뀐 파일 행은 주황색으로 강조됩니다.

#218111/13 · 오늘제목은 로그인 후 표시
app/(auth)/login/_components/login-form.test.tsxapp/(auth)/login/_components/login-form.tsxapp/(auth)/onboarding/_components/onboarding-form.test.tsxapp/(auth)/onboarding/_components/onboarding-form.tsxapp/(workspace)/admin/mail-account/_components/mail-account-settings-form.test.tsxapp/(workspace)/admin/mail-account/_components/mail-account-settings-form.tsxapp/(workspace)/admin/mail-account/_components/mail-dispatch-log-section.test.tsxapp/(workspace)/admin/mail-account/_components/mail-dispatch-log-section.tsx+41
#218911/13 · 오늘제목은 로그인 후 표시
#218611/13 · 오늘제목은 로그인 후 표시
app/(workspace)/admin/agent-studio/_components/test-attach-column.tsxapp/(workspace)/admin/agent-studio/_components/test-extract-panel.test.tsxapp/(workspace)/admin/agent-studio/_components/test-extract-panel.tsxapp/(workspace)/admin/agent-studio/_components/test-view.test.tsxapp/(workspace)/admin/agent-studio/_components/test-view.tsxapp/(workspace)/admin/agent-studio/_lib/extract-review-gate.test.tsapp/(workspace)/admin/agent-studio/_lib/extract-review-gate.tsapp/(workspace)/admin/agent-studio/_lib/test-run-api.test.ts+3
#218711/13 · 오늘제목은 로그인 후 표시
components/common/workspace-nav.test.tsx
#217011/13 · 오늘제목은 로그인 후 표시
app/(workspace)/user/investigations/[reportNo]/_components/document-box.test.tsxapp/(workspace)/user/investigations/[reportNo]/_components/document-box.tsxapp/(workspace)/user/investigations/[reportNo]/_components/investigation-workspace.tsxapp/(workspace)/user/investigations/[reportNo]/_components/workspace-center.test.tsxapp/(workspace)/user/investigations/[reportNo]/_components/workspace-center.tsxapp/(workspace)/user/investigations/[reportNo]/_lib/scan-sections.test.tsapp/(workspace)/user/investigations/[reportNo]/_lib/scan-sections.tsapp/(workspace)/user/investigations/[reportNo]/page.test.tsx+4
#218011/13 · 오늘제목은 로그인 후 표시
#218411/13 · 오늘제목은 로그인 후 표시
#218211/13 · 오늘제목은 로그인 후 표시
app/(workspace)/admin/agent-studio/_components/test-extract-panel.test.tsxapp/(workspace)/admin/agent-studio/_components/test-extract-panel.tsxapp/(workspace)/admin/agent-studio/_components/test-view.test.tsxapp/(workspace)/admin/agent-studio/_components/test-view.tsxapp/(workspace)/admin/agent-studio/_lib/test-run-api.test.tsapp/(workspace)/admin/agent-studio/_lib/test-run-api.tse2e/realdata/screens/prepared/studio-execution-essential.spec.tsscripts/design-token-baseline.json
#216811/13 · 오늘제목은 로그인 후 표시
#214911/13 · 오늘제목은 로그인 후 표시
app/(workspace)/admin/agent-studio/_components/extract-coverage-notice.test.tsxapp/(workspace)/admin/agent-studio/_components/extract-coverage-notice.tsxapp/(workspace)/admin/agent-studio/_components/next-step-bar.test.tsxapp/(workspace)/admin/agent-studio/_components/next-step-bar.tsxapp/(workspace)/admin/agent-studio/_components/report-panel.tsxapp/(workspace)/admin/agent-studio/_components/schema-view.test.tsxapp/(workspace)/admin/agent-studio/_components/step-bar.tsxapp/(workspace)/admin/agent-studio/_components/test-attach-column.test.tsx+16
#216111/13 · 오늘제목은 로그인 후 표시
app/(workspace)/admin/agent-studio/_components/deploy-bar.test.tsxapp/(workspace)/admin/agent-studio/_components/schema-deploy-notice.tsxapp/(workspace)/admin/agent-studio/_components/schema-view.test.tsxapp/(workspace)/admin/agent-studio/_components/test-view.test.tsxapp/(workspace)/admin/agent-studio/_lib/deployment-api.test.tsapp/(workspace)/admin/agent-studio/_lib/deployment-api.tsapp/(workspace)/admin/agent-studio/_lib/studio-config-save.test.tsapp/(workspace)/admin/agent-studio/_lib/studio-config-save.ts+15
#216511/12 · 오늘제목은 로그인 후 표시
app/(workspace)/admin/application-forms/_components/question-editor-dialog.test.tsxapp/(workspace)/admin/application-forms/_components/question-editor-dialog.tsxcomponents/common/hospital-search-dialog.test.tsxcomponents/common/hospital-search-dialog.tsxcomponents/ui/search-input.tsx
#215811/12 · 오늘제목은 로그인 후 표시
app/(workspace)/user/investigations/[reportNo]/_lib/extraction-review.test.tsapp/(workspace)/user/investigations/[reportNo]/_lib/extraction-review.ts
#215711/12 · 오늘제목은 로그인 후 표시
app/(workspace)/admin/organization/_components/user-detail-dialog.test.tsxapp/(workspace)/admin/organization/_components/user-detail-dialog.tsx
#215611/12 · 어제제목은 로그인 후 표시
app/(workspace)/admin/organization/_components/user-detail-dialog.tsxapp/(workspace)/admin/organization/_lib/role-edit.test.tsapp/(workspace)/admin/organization/_lib/role-edit.tsapp/(workspace)/admin/organization/page.test.tsx
#215511/12 · 어제제목은 로그인 후 표시
app/(workspace)/admin/hospital-aliases/_components/hospital-alias-table.tsxapp/(workspace)/admin/hospital-aliases/page.test.tsxcomponents/common/hospital-search-dialog.test.tsxcomponents/common/hospital-search-dialog.tsxcomponents/ui/search-input.tsx
#215411/12 · 어제제목은 로그인 후 표시
#215211/12 · 어제제목은 로그인 후 표시
#215011/12 · 어제제목은 로그인 후 표시
#214711/12 · 어제제목은 로그인 후 표시

화면 · API

화면 지도

라우트 → 호출 API → 백엔드 컨트롤러 → E2E

화면마다 부르는 API — 각 라우트 폴더(_lib·_components 포함)의 apiGet·apiPost… 호출을 모아 백엔드 OpenAPI 계약의 컨트롤러와 짝지었습니다. 컨트롤러 이름을 누르면 백엔드 가이드의 해당 파일 행으로 갑니다. 메뉴 표시는 LNB 메뉴 코드(MENU_ROUTES)입니다.

/auth/resumepage.tsx루트세션 이어받기 — `proxy.ts` 가 access 쿠키 없는 화면 요청을 여기로 보낸다.
/auth/unregisteredpage.tsx루트SSO 로그인은 됐지만 사용자 디렉터리(스마트심사 뷰)에 없거나 비활성인 사번 — 백엔드 SSO 콜백이 여기로 보낸다 (S-008 2-2).
/loginpage.tsx인증로그인 화면.
/onboardingpage.tsx인증최초 로그인 온보딩 화면.
/user/investigations/analysis-conditionspage.tsxUser`사전분석조건` 열람 창 — 워크스페이스 상단에서 `window.open` 으로 띄운다(기준선 「워크스페이스 공통 — 상단」 동작 2번).
/user/investigations/report-before-changepage.tsxUser`변경 전 보기` 창 — 사고조사 화면의 반영 하이라이트 바가 `window.open` 으로 띄운다(결정 20261020).
/user/investigations/report-snapshotpage.tsxUser`AI 보고서 다시 보기` 창 — 보고서 초안 화면이 `window.open` 으로 띄운다(프로토타입 `report-snapshot` 팝업).
/admin/agent-studiopage.tsx메뉴 AGENT_MANAGEMENTAdminLNB `에이전트 스튜디오` 의 대표 주소 — 첫 탭(스키마 정의)으로 보낸다.
GETadmin/agent-studio/document-type-schemas/{…}/studio-configs → openapi 에 없음
POST{…}/classify/shape-alignment → openapi 에 없음
POST{…}/classify/studio-configs → openapi 에 없음
GET{…}/classify/studio-configs/{…} → openapi 에 없음
POST{…}/extract/studio-configs → openapi 에 없음
GET{…}/extract/studio-configs/{…} → openapi 에 없음
DELETE{…}/{…} → openapi 에 없음
GET{…}/{…} → openapi 에 없음
PATCH{…}/{…} → openapi 에 없음
POST{…}/{…}/classify → openapi 에 없음
PUT{…}/{…}/classify/pages → openapi 에 없음
POST{…}/{…}/extract → openapi 에 없음
PUT{…}/{…}/extract/fields → openapi 에 없음
POST{…}/{…}/extract/fields/confirm → openapi 에 없음
POST{…}/{…}/files → openapi 에 없음
DELETE{…}/{…}/files/{…} → openapi 에 없음
GET{…}/{…}/files/{…}/content → openapi 에 없음
POST{…}/{…}/report → openapi 에 없음
POST{…}/{…}/report/tabs/{…}/run → openapi 에 없음
/admin/agent-studio/schemapage.tsxAdmin보고서 설정 위탁사를 URL search param(`?company=`)으로 받으므로 본체는 Suspense 경계 안에 둔다.
/admin/agent-studio/testpage.tsxAdmin/admin/agent-studio/test 화면 진입점.
/admin/application-formspage.tsx메뉴 APPLICATION_FORMAdmin/admin/application-forms 화면 진입점.
/admin/approval-centerpage.tsx메뉴 APPROVAL_CENTERAdmin상태 필터는 서버에서 읽어 넘긴다 — 클라이언트 화면이 `useSearchParams` 를 쓰지 않아 Suspense 경계가 필요 없고, 모르는 값(오래된 링크·손으로 고친 주소)은 여기서 기본값으로 떨어진다.
POST{…}/approve → openapi 에 없음
GET{…}/files/{…}/content → openapi 에 없음
POST{…}/reject → openapi 에 없음
/admin/approval-center/reviewpage.tsxAdmin검토할 요청은 `?id=` 로 받는다(프로토타입 경로 그대로).
/admin/audit-logspage.tsx메뉴 AUDIT_LOGAdmin/admin/audit-logs 화면 진입점.
/admin/classification-mappingspage.tsx메뉴 CLASSIFICATION_MAPPINGAdmin고른 위탁사를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다.
/admin/client-workspacepage.tsx메뉴 CLIENT_WORKSPACEAdmin/admin/client-workspace 화면 진입점.
/admin/dashboard/lifecyclepage.tsxAdmin/admin/dashboard/lifecycle 화면 진입점.
/admin/dashboardpage.tsx메뉴 DASHBOARDAdmin통계 대시보드는 메뉴 `DASHBOARD`의 독립 URL이다.
/admin/dashboard/unmappedpage.tsxAdmin/admin/dashboard/unmapped 화면 진입점.
/admin/hospital-aliasespage.tsx메뉴 HOSPITAL_ALIASAdmin관리자 · 병원 명칭 매핑 (`/admin/hospital-aliases`) — 결정 [20260910 병원 마스터 매칭](docs/decisions/20260910-hospital-master-matching.md) §6, 프로토타입 `app/(workspace)/admin/hospital-a…
/admin/knowledgepage.tsx메뉴 KNOWLEDGE_MANAGEMENTAdmin열린 폴더를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다 — 경계가 없으면 프리렌더 단계에서 빌드가 막힌다.
/admin/mail-accountpage.tsx메뉴 MAIL_ACCOUNTAdmin프로토타입 기준: 좌측 통합 설정 폼, 우측 실제 발송 로그.
/admin/organizationpage.tsx메뉴 ORGANIZATIONAdmin/admin/organization 화면 진입점.
/adminpage.tsxAdmin`/admin`은 화면이 아니라 권한 기반 콘솔 진입점이다.
/admin/permissionspage.tsx메뉴 PERMISSIONAdmin/admin/permissions 화면 진입점.
/admin/report-disposal-logspage.tsx메뉴 REPORT_DISPOSAL_LOGAdmin/admin/report-disposal-logs 화면 진입점.
/admin/report-send-logspage.tsx메뉴 REPORT_SEND_LOGAdmin조건·쪽 번호를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다.
/admin/report-typespage.tsx메뉴 REPORT_TYPEAdmin관리자 · 보고서 유형 설정 (`/admin/report-types`) — 야간 20260930 NT02.
/user/agent/[sessionId]page.tsxUser/user/agent/[sessionId] 화면 진입점.
/user/agentpage.tsx메뉴 AGENTUser에이전트 — 새 대화 시작 (`/user/agent`).
/user/conversationspage.tsx메뉴 USAGE_HISTORYUser조건·쪽 번호를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다.
/user/investigations/[reportNo]page.tsxUser사고조사 워크스페이스 (P1-2).
/user/investigationspage.tsx메뉴 INVESTIGATION_AGENTUser조건·쪽 번호를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다.
/user/knowledgepage.tsx메뉴 KNOWLEDGE_COLLECTIONUser탭 상태를 URL search param 으로 읽으므로(`useSearchParams`) 목록 본체는 Suspense 경계 안에 둔다.
/userpage.tsxUser`/user`는 화면이 아니라 권한 기반 콘솔 진입점이다.
/user/profilepage.tsxUser내 정보 (`/user/profile`) — 사용자 카드가 가리키는 읽기 전용 화면.
/page.tsx루트/ 화면 진입점.
components/user/investigation/공용여러 화면이 함께 쓰는 호출
PUT{…}/cards/{…}/items/{…} → openapi 에 없음
PUT{…}/cards/{…}/items/{…}/report-reflection → openapi 에 없음
POST{…}/confirmation → openapi 에 없음
POST{…}/confirmation-reset → openapi 에 없음
PUT{…}/latest → openapi 에 없음
POST{…}/latest/discard → openapi 에 없음
PUT{…}/latest/sections/{…} → openapi 에 없음
POST{…}/latest/sections/{…}/revert → openapi 에 없음
PUT{…}/report-reflection → openapi 에 없음
lib/auth/공용여러 화면이 함께 쓰는 호출
lib/chat/공용여러 화면이 함께 쓰는 호출
lib/collection-approvals/공용여러 화면이 함께 쓰는 호출
lib/collection-folders/공용여러 화면이 함께 쓰는 호출
lib/collections/공용여러 화면이 함께 쓰는 호출
POST{…}/delete → openapi 에 없음
POST{…}/description/generate → openapi 에 없음
GET{…}/download → openapi 에 없음
POST{…}/file-approvals → openapi 에 없음
POST{…}/files → openapi 에 없음
POST{…}/reindex → openapi 에 없음
GET{…}/status → openapi 에 없음
lib/customer-companies/공용여러 화면이 함께 쓰는 호출
lib/customer-onboarding/공용여러 화면이 함께 쓰는 호출
lib/diseases/공용여러 화면이 함께 쓰는 호출
lib/hospital-master/공용여러 화면이 함께 쓰는 호출
lib/mail-account/공용여러 화면이 함께 쓰는 호출

화면 · API

아직 화면이 부르지 않는 API

백엔드 계약 240개 중 116개

백엔드에는 있지만 어느 화면도 부르지 않는 엔드포인트 — 화면을 붙일 차례인 API 를 찾을 때 봅니다. 주소를 변수로 조합해 부르는 호출은 잡히지 않을 수 있습니다.

AgentStudioConfigVersionController8개
AgentStudioInstructController2개
GETadmin/agent-studio/instruct/versions INSTRUCT 설정 버전 목록
GETadmin/agent-studio/instruct/versions/{versionNo} INSTRUCT 설정 특정 버전
AgentStudioTestRunController14개
AnalysisRequestController1개
ApplicationFormQueryController1개
GETapplication-forms 청약서 폼 설정 조회(조사자)
AuditLogController1개
GETaudit-logs/export 감사 로그 CSV 내보내기
AuthController2개
POSTauth/refresh 세션 재발급
GETauth/session 세션 상태 조회
ChatController1개
POSTchat-sessions/{sessionId}/messages 질문 전송 — 답변을 만들어지는 대로 SSE 로 흘려 보낸다
ChatPromptController2개
GETadmin/agent-studio/chat-prompts/{key} 지시문 지금 문구
ClassificationResultController2개
CollectionApprovalController6개
GETcollection-approvals/{id} 승인 요청 검토 상세
POSTcollection-approvals/{id}/approve 승인 요청 승인
GETcollection-approvals/{id}/files/{fileId}/content 승인 요청 원본 파일 조회
GETcollection-approvals/{id}/files/{fileId}/preview 승인 요청 파일 미리보기
POSTcollection-approvals/{id}/reject 승인 요청 반려
POSTcollections/{id}/file-approvals 공용 컬렉션 파일 추가 승인 요청
CollectionController15개
POSTcollections/search 지식컬렉션 검색
DELETEcollections/{id} 지식컬렉션 삭제
GETcollections/{id} 지식컬렉션 상세 조회
PATCHcollections/{id} 지식컬렉션 설명 수정
POSTcollections/{id}/description/generate 지식컬렉션 설명 자동 생성
POSTcollections/{id}/files 지식컬렉션 파일 등록
POSTcollections/{id}/files/delete 지식컬렉션 파일 일괄 삭제
POSTcollections/{id}/files/reindex 지식컬렉션 파일 일괄 재색인
DELETEcollections/{id}/files/{fileId} 지식컬렉션 파일 삭제
PATCHcollections/{id}/files/{fileId} 지식컬렉션 파일명 수정
GETcollections/{id}/files/{fileId}/download 지식컬렉션 파일 내려받기
GETcollections/{id}/files/{fileId}/preview 지식컬렉션 파일 미리보기
GETcollections/{id}/reference-defaults 지식컬렉션 위탁사별 참조 기본값 조회
PUTcollections/{id}/reference-defaults 지식컬렉션 위탁사별 참조 기본값 저장
GETcollections/{id}/status 지식컬렉션 상세 상태 (반복 조회용)
CollectionFolderController3개
DELETEcollection-folders/{id} 지식컬렉션 폴더 삭제
PATCHcollection-folders/{id} 지식컬렉션 폴더 이름 변경
GETcollection-folders/{id}/deletion-summary 지식컬렉션 폴더 삭제 요약
DocumentTypeSchemaController7개
ExtractionResultController1개
HospitalMatchController2개
InvestigationChatController7개
DELETEinvestigation-reports/{reportNo}/chat 사고조사 챗봇 대화 내용 삭제 — 이 보고서의 내 대화를 비운다(대화·검색 범위는 남는다, 되돌릴 수 없다)
POSTinvestigation-reports/{reportNo}/chat/attachments 사고조사 챗봇 첨부 준비 — PDF 변환 뒤 Studio 에 올리고 내 대화에 묶는다(대화가 없으면 만든다). 판정은 질문과 같다
POSTinvestigation-reports/{reportNo}/chat/attachments/inspect 사고조사 챗봇 첨부 검사 — 형식·합계 쪽수·파일당 용량만 본다(저장 안 함). 볼 수 없으면 404·403, 질문할 수 없는 단계면 409
GETinvestigation-reports/{reportNo}/chat/attachments/{attachmentId}/content 사고조사 챗봇 첨부 출처 PDF — 내 대화의 답변 출처로 남은 첨부만 inline 으로 중계한다. 열람만 본다(404·403), 출처가 아니면 404
POSTinvestigation-reports/{reportNo}/chat/messages 사고조사 챗봇 질문 — 첫 질문이면 내 대화를 만든다. 볼 수 없으면 404·403, 질문할 수 없는 단계면 409
DELETEinvestigation-reports/{reportNo}/chat/messages/{messageId} 사고조사 챗봇 마지막 질문 삭제 — 질문·답변 한 쌍과 그 질문의 첨부를 지운다(질문이 하나뿐이어도 대화는 남는다)
POSTinvestigation-reports/{reportNo}/chat/messages/{messageId}/reflect 사고조사 챗봇 AI 보고서 반영 — 이 답변의 근거로 보고서를 다시 써 새 판으로 남긴다. AI 보고서 확인 단계의 담당자만(409), 판이 바뀌었으면 409, 플랫폼 실패는 502 이고 보고서는 그대로다
InvestigationReportEventController1개
GETinvestigation-reports/{reportNo}/events 실시간 갱신 신호 구독 (SSE)
LifecycleBackfillController1개
POSTadmin/statistics/lifecycle/backfill 생애주기 통계 사실 재적재 명령
MailAccountController1개
POSTadmin/mail-account/password 메일 발송 계정 비밀번호 재설정
MenuPermissionController1개
GETmenu-permissions/{roleCode} 레벨별 메뉴 권한 조회
ReportDeliveryLogController1개
GETadmin/report-deliveries/export 보고서 초안 전송 로그 CSV 내보내기
ReportDisposalLogController1개
GETadmin/report-disposal-logs/export 보고서 파기 로그 CSV 내보내기
ReportDraftController7개
POSTinvestigation-reports/{reportNo}/report-drafts 확정 요약에서 초안 생성 (버전 증가)
POSTinvestigation-reports/{reportNo}/report-drafts/latest/discard 최신 초안을 폐기하고 보고서 검수로 돌아가기
POSTinvestigation-reports/{reportNo}/report-drafts/latest/sections/{sectionKey}/revert 최신 초안 구역을 AI 요약으로 되돌리기
ReportMailController1개
GETinvestigation-reports/{reportNo}/report-mails 보고서 메일 발송 이력
ReportMailDispatchLogController1개
GETadmin/report-mail-dispatches/export 메일 발송 로그 CSV 내보내기
ReportPageImageController1개
ReportTemplateController8개
GETadmin/report-templates 활성 보고서 양식 목록
DELETEadmin/report-templates/{templateCode} 보고서 양식 삭제
GETadmin/report-templates/{templateCode} 보고서 양식 조회 (활성 버전)
POSTadmin/report-templates/{templateCode} 보고서 양식 등록
PUTadmin/report-templates/{templateCode} 보고서 양식 수정 (버전 증가)
GETadmin/report-templates/{templateCode}/versions 보고서 양식 버전 이력
StatisticsBackfillController1개
POSTadmin/statistics/backfill 통계 사실 재적재(backfill) 명령
SummaryResultController5개
SummarySkeletonController4개
GETadmin/summary-skeletons 활성 골격 목록
GETadmin/summary-skeletons/{scopeCode} 범위의 활성 골격
PUTadmin/summary-skeletons/{scopeCode} 골격 저장 (새 버전, 활성 전환)
GETadmin/summary-skeletons/{scopeCode}/versions 범위의 골격 버전 이력
UserController1개
GETusers/{employeeNo} 사용자 단건 조회
ImageIntegrationController6개시스템 간 연동 — 화면 대상 아님
PUTimage-integration/customers API-06 위탁사 전체 동기화
PUTimage-integration/customers/{customerCompanyId}/document-types API-07 위탁사별 문서분류 체계 동기화
POSTimage-integration/reports/{reportNo}/confirm API-05 분류·추출 시작 확정
POSTimage-integration/transfers/complete API-02 이미지 전송 결과 통지
POSTimage-integration/transfers/logical API-03 논리 변경 전송
POSTimage-integration/transfers/start API-01 이미지 전송 시작 통지

루트

hwss-investigation-agent-frontend/GitHub

빌드·린트·테스트·배포 설정

(루트)56GitHub

앱 루트 — 루트 레이아웃, Provider(TanStack Query·MSW), 전역 스타일.

proxy.ts이력테스트100.0%3일 전 · #2097가드1차 가드 — /user·/admin·/onboarding 요청에 access 쿠키가 없으면 /auth/start?from= 로 보낸다 (Next 16 proxy, 구 middleware).
playwright.admin-knowledge.config.ts이력모듈설명 주석 없음
playwright.agent-chat-delete.config.ts이력모듈설명 주석 없음
playwright.analysis-conditions.config.ts이력모듈설명 주석 없음
playwright.application-forms.config.ts이력모듈설명 주석 없음
playwright.audit-logs.config.ts이력모듈설명 주석 없음
playwright.classification-mapping.config.ts이력모듈설명 주석 없음
playwright.client-workspace.config.ts이력모듈설명 주석 없음
playwright.collection-approval.config.ts이력모듈설명 주석 없음
playwright.collection-viewer.config.ts이력모듈설명 주석 없음
playwright.full-journey.config.ts이력5일 전 · #1967모듈설명 주석 없음
playwright.hospital-aliases.config.ts이력모듈설명 주석 없음
playwright.image-system-integration.config.ts이력모듈설명 주석 없음
playwright.investigation-list.config.ts이력모듈설명 주석 없음
playwright.login.config.ts이력모듈설명 주석 없음
playwright.mail-account.config.ts이력모듈설명 주석 없음
playwright.organization.config.ts이력모듈설명 주석 없음
playwright.permissions.config.ts이력모듈설명 주석 없음
playwright.realdata.config.ts이력5일 전 · #1978모듈설명 주석 없음
playwright.reanalysis.config.ts이력모듈설명 주석 없음
playwright.report-disposal-logs.config.ts이력모듈설명 주석 없음
playwright.report-draft.config.ts이력모듈설명 주석 없음
playwright.report-send-logs.config.ts이력모듈설명 주석 없음
playwright.report-send.config.ts이력6일 전 · #1957모듈설명 주석 없음
playwright.report-settings.config.ts이력모듈설명 주석 없음
playwright.report-templates.config.ts이력모듈설명 주석 없음
playwright.report-types.config.ts이력모듈설명 주석 없음
playwright.statistics-dashboard.config.ts이력모듈설명 주석 없음
playwright.studio-execution.config.ts이력모듈설명 주석 없음
playwright.studio-schema.config.ts이력모듈설명 주석 없음
playwright.summary.config.ts이력모듈설명 주석 없음
playwright.usage-history.config.ts이력모듈설명 주석 없음
playwright.workspace-classification.config.ts이력모듈설명 주석 없음
playwright.workspace-extraction-live.config.ts이력모듈설명 주석 없음
playwright.workspace-extraction.config.ts이력모듈설명 주석 없음
playwright.workspace-intake.config.ts이력모듈설명 주석 없음
stryker.config.mjs이력6일 전 · #1946모듈변이 테스트(Stryker) — 단위 테스트(Vitest)가 로직의 틀린 변경을 실제로 잡아내는지 잰다.
AGENTS.md이력문서Codex 작업 지침.
CLAUDE.md이력문서Claude Code 작업 컨텍스트 — 구조·API 호출·가드·환경변수 규칙.
README.md이력오늘 · #2168문서화면별 동작 규칙 — 목록 필터·URL 조건, 워크스페이스 진행 단계 등.
.dockerignore이력배포이미지 빌드 컨텍스트에서 뺄 파일.
Dockerfile이력배포3단 빌드 — pnpm install → next build(standalone) → node:22-alpine 에서 server.js 를 3000 포트로 실행.
.gitignore이력설정커밋하지 않을 파일 (.env.local, 빌드 산출물 등).
.prettierignore이력설정포맷 대상에서 뺄 경로 (생성물 등).
.prettierrc.json이력설정Prettier 규칙 (프로토타입과 동일).
components.json이력설정shadcn/ui 설정 (base-nova 스타일, lucide 아이콘, 경로 별칭).
eslint.config.mjs이력7일 전 · #1871설정역할 경계 import 금지(common·ui·lib ↛ app·user·admin, user ↔ admin, popup ↛ 다른 route·admin)와 TanStack Query lint 규칙.
next.config.ts이력6일 전 · #1946설정standalone 출력, /api/v1/* 를 BACKEND_ORIGIN 으로 넘기는 same-origin 프록시(rewrites).
package.json이력5일 전 · #1969설정스크립트·의존성, pnpm 버전 고정(packageManager).
playwright.config.ts이력설정E2E 설정 — 스모크·수용 시나리오. MSW 를 켠 dev 서버를 3187(CI 는 E2E_PORT)로 자동 기동, 실제 백엔드(real)·운영 빌드(E2E_SERVER=prod) 모드 포함.
pnpm-lock.yaml이력5일 전 · #1969설정단일 lockfile — 설치는 항상 --frozen-lockfile.
pnpm-workspace.yaml이력설정설치 스크립트 실행 허용 목록(allowBuilds).
postcss.config.mjs이력설정Tailwind CSS 4 PostCSS 플러그인.
tsconfig.json이력설정TypeScript strict 와 @/ 경로 별칭.
vitest.config.mts이력4일 전 · #2009설정Vitest — e2e 제외, @ 별칭, vitest.setup.ts 연결.
vitest.setup.ts이력설정jest-dom 매처 등록, jsdom 에서 상대 경로 fetch 를 브라우저처럼 보정.

app/ · 화면

app/ (루트·앱 쉘)GitHub

루트 레이아웃·Provider·(workspace) 공통 레이아웃·(popup) 별도 창 화면

app/9GitHub

앱 루트 — 루트 레이아웃, Provider(TanStack Query·MSW), 전역 스타일.

layout.tsx이력0.0%레이아웃/ 아래 화면이 함께 쓰는 레이아웃.
page.tsx이력0.0%화면/ 화면 진입점.
globals.css이력2일 전 · #2118스타일Tailwind·shadcn 테마 토큰과 전역 스타일.
error.tsx이력테스트100.0%컴포넌트설명 주석 없음
global-error.tsx이력테스트100.0%컴포넌트설명 주석 없음
msw-provider.tsx이력테스트100.0%컴포넌트NEXT_PUBLIC_API_MOCKING=enabled일 때만 MSW 워커를 기동한다.
not-found.tsx이력테스트100.0%컴포넌트설명 주석 없음
providers.tsx이력0.0%컴포넌트설명 주석 없음
favicon.ico이력파일파비콘.

app/(popup)/1GitHub

/ 화면.

layout.tsx이력0.0%레이아웃팝업(보조 창) 레이아웃 — `window.open` 으로 띄우는 열람 화면이 쓰는 껍데기다.

app/(popup)/user/1GitHub

/user 화면.

layout.tsx이력0.0%6일 전 · #1939레이아웃보조 창도 사용자 콘솔 화면이라 **같은 메뉴 가드**를 거친다 — 앱 쉘(LNB)만 없다.

app/(popup)/user/investigations/analysis-conditions/1GitHub

/user/investigations/analysis-conditions 화면.

page.tsx이력테스트0.0%화면`사전분석조건` 열람 창 — 워크스페이스 상단에서 `window.open` 으로 띄운다(기준선 「워크스페이스 공통 — 상단」 동작 2번).

app/(popup)/user/investigations/analysis-conditions/_components/1GitHub

/user/investigations/analysis-conditions 화면에서만 쓰는 컴포넌트.

analysis-conditions-view.tsx이력96.8%6일 전 · #1955컴포넌트`사전분석조건` 열람 — 저장된 분석 요청(조건)을 **읽기 전용**으로 그린다(기준선 「워크스페이스 공통 — 상단」 동작 2번: 전 필드 잠금·실행 버튼 없음·계약 전부 펼침).

app/(popup)/user/investigations/report-before-change/1GitHub

/user/investigations/report-before-change 화면.

page.tsx이력테스트100.0%화면`변경 전 보기` 창 — 사고조사 화면의 반영 하이라이트 바가 `window.open` 으로 띄운다(결정 20261020).

app/(popup)/user/investigations/report-before-change/_components/1GitHub

/user/investigations/report-before-change 화면에서만 쓰는 컴포넌트.

report-before-change-view.tsx이력100.0%3일 전 · #2094컴포넌트`변경 전 보기` 창 본문 — 챗봇 `AI 보고서 반영` 직전 요약 판을 `AI 보고서 확인` 단계 모양 그대로 읽기 전용으로 그린다 (결정 20261020 2항).

app/(popup)/user/investigations/report-snapshot/1GitHub

/user/investigations/report-snapshot 화면.

page.tsx이력테스트0.0%화면`AI 보고서 다시 보기` 창 — 보고서 초안 화면이 `window.open` 으로 띄운다(프로토타입 `report-snapshot` 팝업).

app/(popup)/user/investigations/report-snapshot/_components/1GitHub

/user/investigations/report-snapshot 화면에서만 쓰는 컴포넌트.

report-snapshot-view.tsx이력100.0%3일 전 · #2094컴포넌트`AI 보고서 다시 보기` 창 본문 — 초안의 근거가 된 요약 버전에서 **반영한 항목만** 읽기 전용으로 그린다(화면 안 창과 같은 `ReportSnapshot`).

app/(popup)/user/investigations/_components/3GitHub

/user/investigations 화면에서만 쓰는 컴포넌트.

popup-missing-target.tsx이력테스트100.0%6일 전 · #1955컴포넌트팝업 창을 띄운 쪽이 건(·판)을 넘기지 않았을 때(주소를 직접 고친 경우)의 화면 — 조회할 대상이 없어 경고 안내만 보인다.
popup-window-header.tsx이력테스트100.0%6일 전 · #1950컴포넌트사고조사 화면에서 띄우는 읽기 전용 팝업 창(`AI 보고서 다시 보기`·`챗봇 반영 전 보고서`)의 머리말 — 제목·안내 줄과 오른쪽 닫기 아이콘 버튼.
use-report-evidence-source.ts이력테스트100.0%4일 전 · #1999훅보고서 팝업 창(`AI 보고서 다시 보기`·`챗봇 반영 전 보고서`)이 근거를 이 창 안의 모달 문서 뷰어로 열 때 쓰는 세 가지를 만든다.

app/(workspace)/1GitHub

/ 화면.

layout.tsx이력0.0%레이아웃/ 아래 화면이 함께 쓰는 레이아웃.

app/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/1GitHub

/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709 화면.

results.json이력파일설명 주석 없음

app/ · 화면

app/(auth)/GitHub

로그인·최초 로그인 온보딩

app/(auth)/auth/resume/1GitHub

/auth/resume 화면.

page.tsx이력테스트100.0%3일 전 · #2097화면세션 이어받기 — `proxy.ts` 가 access 쿠키 없는 화면 요청을 여기로 보낸다.

app/(auth)/auth/resume/_components/1GitHub

/auth/resume 화면에서만 쓰는 컴포넌트.

session-resume.tsx이력테스트95.7%3일 전 · #2097컴포넌트화면 이동 — 테스트가 갈아 끼울 수 있게 객체로 둔다(`vi.spyOn(resumeNavigation, "replace")`).

app/(auth)/auth/start/1GitHub

/auth/start 화면.

route.ts이력테스트100.0%2일 전 · #2114모듈로그인 진입점 — 세션이 없을 때 `proxy.ts`·`lib/api/client.ts` 가 모두 여기로 보낸다(S-008 2-2).

app/(auth)/auth/unregistered/1GitHub

/auth/unregistered 화면.

page.tsx이력테스트100.0%화면SSO 로그인은 됐지만 사용자 디렉터리(스마트심사 뷰)에 없거나 비활성인 사번 — 백엔드 SSO 콜백이 여기로 보낸다 (S-008 2-2).

app/(auth)/login/1GitHub

/login 화면.

app/(auth)/login/_components/1GitHub

/login 화면에서만 쓰는 컴포넌트.

login-form.tsx이력테스트98.1%오늘 · #2181컴포넌트SSO 로그인 폼이 제출되는 백엔드 경로 — 응답은 login.fcc 자동 제출 HTML 이다(S-008 2-2).

app/(auth)/onboarding/1GitHub

/onboarding 화면.

page.tsx이력0.0%화면최초 로그인 온보딩 화면.

app/(auth)/onboarding/_components/1GitHub

/onboarding 화면에서만 쓰는 컴포넌트.

onboarding-form.tsx이력테스트95.0%오늘 · #2181컴포넌트설명 주석 없음

app/ · 화면

app/(workspace)/user/GitHub

User Console 화면

app/(workspace)/user/3GitHub

/user 화면.

layout.tsx이력0.0%6일 전 · #1939레이아웃/user 아래 화면이 함께 쓰는 레이아웃.
page.tsx이력0.0%화면`/user`는 화면이 아니라 권한 기반 콘솔 진입점이다.
error.tsx이력테스트100.0%컴포넌트콘솔 레이아웃(쉘) 안쪽 오류 경계 — 화면 하나의 렌더링 오류가 LNB 까지 지우지 않게 한다.

app/(workspace)/user/agent/1GitHub

/user/agent 화면.

page.tsx이력테스트97.1%2일 전 · #2108화면에이전트 — 새 대화 시작 (`/user/agent`).

app/(workspace)/user/agent/[sessionId]/1GitHub

/user/agent/[sessionId] 화면.

page.tsx이력테스트97.9%2일 전 · #2108화면/user/agent/[sessionId] 화면 진입점.

app/(workspace)/user/agent/_components/7GitHub

/user/agent 화면에서만 쓰는 컴포넌트.

chat-composer.tsx이력96.8%4일 전 · #2040컴포넌트질문 입력 — 프로토타입 `ChatComposer` 의 배치(입력칸 + 하단 칩 줄 + 원형 전송 버튼)를 따른다.
chat-conversation.tsx이력96.0%6일 전 · #1939컴포넌트주고받은 줄을 아래로 누적해 그린다 — 야간 20260930 NX03.
chat-delete-header-button.tsx이력100.0%2일 전 · #2108컴포넌트답변을 기다리는 동안 머리줄 `대화 삭제`가 잠긴 이유.
chat-screen-frame.tsx이력100.0%2일 전 · #2108컴포넌트대화 화면의 틀 — 프로토타입 `agent-chat-screen` 의 머리줄·배경·입력창 페이드를 따른다.
chat-source-list.tsx이력테스트91.3%5일 전 · #1975컴포넌트답변 근거 목록 — 프로토타입 근거 칩(`지식컬렉션` 표식 + 문서명 + `p.N` + 펼침 화살표)의 모양을 따른다.
knowledge-collection-dialog.tsx이력100.0%컴포넌트에이전트 대화의 배경지식(지식 컬렉션) 고르기 — 문서보관함 팝업(`KnowledgeFilePicker`)에 대화의 규칙을 얹는다.
chat-sent-attachments.test.tsx이력테스트ChatSentAttachments

app/(workspace)/user/agent/_lib/9GitHub

/user/agent 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

answer-stream.ts이력테스트98.1%모듈SSE 본문을 이벤트 단위로 나눈다.
ask-stage.ts이력92.3%모듈질문 전송이 지금 어느 단계인지 — 대기 줄의 안내 문구를 고른다.
chat.ts이력테스트100.0%4일 전 · #2040모듈에이전트 채팅 화면이 응답을 읽는 규칙 — 야간 20260930 NX03.
context-capacity.ts이력테스트100.0%모듈범용 대화 용량 — 화면이 그리는 막대·이어 가기 안내와 입력 잠금(결정 20261102-agent-chat-context-capacity).
queries.ts이력98.1%쿼리목록 계열(LNB `최근 항목`·사용 내역)을 무효화한다.
ask-chat-mutation.test.ts이력테스트sendChatQuestion — 새 대화가 미리 준비한 첨부
ask-chat-request.test.ts이력테스트질문 전송 요청 — 10초 timeout 없이 보낸다
title-refresh.test.ts이력테스트맥락의 첫 답변 판정
use-session-knowledge.ts이력100.0%훅진행 중인 대화의 배경지식 바꾸기 — 사고조사 챗봇의 「참조 지식컬렉션」과 같은 흐름이다(결정 20261019 「개정 2026-10-28」).

app/(workspace)/user/conversations/1GitHub

/user/conversations 화면.

page.tsx이력테스트100.0%3일 전 · #2094화면조건·쪽 번호를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다.

app/(workspace)/user/conversations/_components/2GitHub

/user/conversations 화면에서만 쓰는 컴포넌트.

usage-history-view.tsx이력97.9%2일 전 · #2122컴포넌트사용 내역 (`/user/conversations`).
usage-list-skeleton.tsx이력66.7%3일 전 · #2094컴포넌트사용 내역 행 자리 — 실제 행(`h-18`: 구분 아이콘 · 제목·구분 두 줄 · 오른쪽 시각)과 같은 틀.

app/(workspace)/user/conversations/_lib/2GitHub

/user/conversations 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

usage-filter.ts이력테스트100.0%모듈사용 내역(`/user/conversations`)의 조회 조건을 URL search param 에 싣는 규칙 — 사고조사 목록과 같은 방식 (`docs/guides/frontend-module-guide.md` §6 — 공유 가능한 화면 조건은 URL 이 소유한다).
usage-retention.ts이력테스트100.0%모듈사용 내역 행의 보관 만료 표시 규칙(결정 20261023 2·3항).

app/(workspace)/user/investigations/1GitHub

/user/investigations 화면.

page.tsx이력테스트100.0%6일 전 · #1939화면조건·쪽 번호를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다.

app/(workspace)/user/investigations/[reportNo]/16GitHub

/user/investigations/[reportNo] 화면.

page.tsx이력테스트0.0%화면사고조사 워크스페이스 (P1-2).
workspace-analysis-conditions.test.tsx이력테스트상단 `사전분석조건`
workspace-analysis.test.tsx이력어제 · #2148테스트추출완료 워크스페이스
workspace-arrow-keys.test.tsx이력어제 · #2162테스트낱장 키보드 이동
workspace-change-detected-bar.test.tsx이력2일 전 · #2113테스트추가 서류 감지 상단 바
workspace-chat-dock.test.tsx이력5일 전 · #1975테스트워크스페이스 우측 사고조사 챗봇 독
workspace-classification.test.tsx이력오늘 · #2181테스트미분류검출 워크스페이스
workspace-disclosure-room.test.tsx이력테스트상단 `공시실`
workspace-initial-collapse.test.tsx이력테스트워크스페이스 처음 접힘
workspace-low-confidence-field.test.tsx이력어제 · #2147테스트추출 검수 — 저신뢰 항목 바로가기의 필드 강조
workspace-reanalysis.test.tsx이력5일 전 · #1981테스트상단 `다시 분석` 그룹의 단계별 모양
workspace-reclassification-reserved.test.tsx이력테스트재분류 예약 안내
workspace-saved-edit-gate.test.tsx이력7일 전 · #1871테스트강제 게이트 — 분류 ~ 추출 완료
workspace-summary-source.test.tsx이력4일 전 · #2008테스트요약 근거·스캔 문서함 — 뷰어가 열리는 자리
workspace-transfer-lock.test.tsx이력테스트보고서 전송 완료 — 문서함 폭 잠금
workspace-view-only.test.tsx이력오늘 · #2189테스트조회 전용 워크스페이스

app/(workspace)/user/investigations/[reportNo]/_components/45GitHub

/user/investigations/[reportNo] 화면에서만 쓰는 컴포넌트.

analysis-conditions-button.tsx이력100.0%4일 전 · #2043컴포넌트상단 `사전분석조건` 버튼 — 펼친 GNB(상태 뱃지 오른쪽, `다시 분석` 그룹 뒤)와 접힌 슬림 바 두 곳에 같은 버튼이 선다(기준선 「워크스페이스 공통 — 상단」).
analysis-summary-center.tsx이력테스트93.3%2일 전 · #2124컴포넌트요약·해석 센터 — `AI 보고서 확인` 부터 `보고서 전송 완료` 까지 네 단계를 한 화면이 맡는다 (S-014 §6·§7, 화면 계획 「AI 보고서」·「보고서 검수」·「보고서 초안 편집」·「전송」, work-plan 「요약·해석 화면 본격 구현」 ④).
center-header.tsx이력테스트100.0%컴포넌트결과 센터(분류 확인·추출완료·분석완료)의 머리 — 원형 아이콘 + 20px 제목 + 설명 한 줄.
classification-issue-dialog.tsx이력테스트93.8%오늘 · #2181컴포넌트`정보 추출 진행 불가` — 프로토타입 `ClassificationIssueModal`.
classification-panel.tsx이력테스트98.1%오늘 · #2181컴포넌트뷰어 오른쪽 `문서 분류` 패널 — 프로토타입 document-viewer 의 「문서 분류값」 자리.
classification-review-actions.tsx이력100.0%오늘 · #2181컴포넌트`정보 추출` 이 막힌 기본 사유 — 미분류·저신뢰가 남아 있을 때.
classification-review-center.tsx이력테스트100.0%오늘 · #2181컴포넌트분류 확인 화면 (W07) — `미분류검출` 센터.
classification-select.tsx이력100.0%컴포넌트`문서 분류값` 검색 입력(부분 일치 자동완성) + Select — 분류 검수의 `ClassificationPanel` 과 추출 이후의 `ExtractionPanel` 이 함께 쓴다.
concurrency-limit-notice.tsx이력테스트100.0%컴포넌트동시 작업 한도 경고 — 화면 맨 위 가운데에 떠서 4.2초 뒤 사라진다(프로토타입 `workspace-client` 의 경고 띠, WBS 29.12.3).
disclosure-room-button.tsx이력100.0%4일 전 · #2043컴포넌트`공시실` 버튼 — 접힌 슬림 바와 요약·보고서 센터의 단계 안내 줄 두 곳에 같은 버튼이 선다 (기준선 「워크스페이스 공통 — 상단」 슬림 바 · 「AI 보고서」·「보고서 검수」·「보고서 초안 편집」 구성).
document-box-section.tsx이력95.2%어제 · #2150컴포넌트문서함 섹션 하나 — 머리(폴더 또는 병원 제목·장수)와 그 안의 낱장 평면 목록.
document-box.tsx이력테스트100.0%오늘 · #2181컴포넌트스캔 문서함 — 프로토타입 `document-panel` 의 배치를 따른다.
document-page-risk-tags.tsx이력테스트100.0%2일 전 · #2102컴포넌트낱장 행의 위험 태그 — 파일명 말줄임 영역 밖에 놓인다(결정 20261109-low-confidence-row-text-tags).
document-page-row.tsx이력97.6%어제 · #2150컴포넌트문서함 낱장 한 행 — 그룹 박스 머리(이 낱장이 박스의 첫 장일 때)와 낱장 줄을 함께 그린다.
extraction-panel.tsx이력테스트97.1%3일 전 · #2094컴포넌트뷰어 오른쪽 `정보추출 결과 · 편집` 패널 — 프로토타입 document-viewer 의 추출값 패널을 따른다.
extraction-review-center.tsx이력테스트100.0%어제 · #2152컴포넌트추출완료 화면 (N06) — `EXTRACTION_COMPLETED` 센터.
hospital-match-dialog.tsx이력테스트91.5%어제 · #2135컴포넌트`분석 요청 전 확인 — 병원 지정` — 프로토타입 `HospitalMatchingModal`.
insured-mismatch-confirm-dialog.tsx이력83.3%어제 · #2162컴포넌트`분석 요청 전 확인 — 피보험자와 다른 이름` — 프로토타입 `ReferenceMismatchModal`.
investigation-chat-dock.tsx이력테스트96.2%4일 전 · #2040컴포넌트설명 주석 없음
investigation-workspace.tsx이력96.8%오늘 · #2181컴포넌트사고조사 워크스페이스 — 프로토타입 workspace-client 의 골격(GNB 70px + 스테퍼 68px + 좌 문서 패널 / 중앙 상태 센터 / 우 사고조사 챗봇 독)을 따르는 풀블리드 화면.
low-confidence-confirm-dialog.tsx이력100.0%어제 · #2152컴포넌트`분석 요청 전 확인 — 저신뢰 추출 항목` — 프로토타입 `LowConfidenceExtractionConfirmationModal`.
page-edit-card.tsx이력100.0%4일 전 · #2043컴포넌트`문서 편집 · 저장 전 N건` 카드 — 문서함 목록 맨 위에 선다(기준선 「저장 전에는 목록 맨 위 … 카드에 변경 목록과 `되돌리기`·`편집 저장` 을 두고, 다음 단계 버튼은 모두 막는다」).
page-image-viewer.tsx이력테스트95.2%오늘 · #2181컴포넌트드래그한 패널 너비를 허용 범위로 자른다.
processing-failure-dialog.tsx이력테스트100.0%5일 전 · #1987컴포넌트실패 안내의 조치 — 모달과 실패 센터가 같은 값을 받는다.
reanalysis-actions.tsx이력테스트100.0%2일 전 · #2113컴포넌트상단 `다시 분석` 그룹(S-012 §4-1) — 펼친 GNB(상태 뱃지 오른쪽)와 접힌 슬림 바 두 곳에 같은 그룹이 선다.
reanalysis-confirm-dialog.tsx이력테스트100.0%2일 전 · #2113컴포넌트`다시 분석` 실행 전 확인 창(S-012 §4-2) — `증분` 은 요약이 만들어진 뒤에만, 나머지 범위는 항상 거친다.
report-draft-editor.tsx이력테스트100.0%2일 전 · #2121컴포넌트초안 편집기가 요구하는 조치 — 읽기 전용이면 넘기지 않는다.
report-generating-center.tsx이력100.0%4일 전 · #2018컴포넌트보고서 생성이 거치는 단계 — 프로토타입 `workflow-status-centers.tsx` 의 `summarizing` 단계 그대로다.
report-mail-confirm-dialog.tsx이력100.0%7일 전 · #1871컴포넌트`메일 전송` 확인 창 — 프로토타입 `SmartReviewModal` 과 같은 틀(전송 대상·보고서 버전, `취소`·`전송하기`)에 받는 사람을 더한다.
report-reflection-bar.tsx이력100.0%4일 전 · #2043컴포넌트챗봇 `AI 보고서 반영` 하이라이트 바 — `변경`·`추가` 범례, 바뀐 줄 수, `변경 전 보기`, `표시 끄기`(결정 20261008 3·4항, 20261020 1항).
resize-rail.tsx이력테스트100.0%컴포넌트패널 사이 세로 경계 — 끌어서 폭을 바꾸고, 더블클릭으로 기본 폭으로 돌린다.
saved-page-edit-gate-card.tsx이력100.0%4일 전 · #2043컴포넌트문서함에 내려 주는 게이트 한 벌 — 꼴과 실행 경로를 함께 든다.
slim-bar-stage-actions.tsx이력100.0%컴포넌트접힌 슬림 바의 단계 액션 자리 — 상단을 접으면 센터의 단계 안내 줄도 함께 접히므로(기준선 「슬림 바 … 센터의 단계 안내 줄도 함께 접힌다」), 그 줄의 단계 버튼(`AI 보고서 생성 완료`·`초기화`·`보고서 항목 선택 완료`·`AI 보고서 다시 보기`)은 슬림 바로 옮겨 선다.
smart-review-confirm-dialog.tsx이력100.0%7일 전 · #1871컴포넌트`스마트심사 전송` 확인 창 — 프로토타입 `SmartReviewModal` 과 같은 틀(전송 대상·보고서 버전, `취소`·`전송하기`)이다.
source-page-button.tsx이력테스트100.0%컴포넌트결과의 근거 낱장을 뷰어로 여는 버튼 — 분류 확인(N05)·추출 확인·요약(N06) 센터가 함께 쓴다.
start-classification-button.tsx이력100.0%2일 전 · #2103컴포넌트`AI 분류 시작` 버튼 — `서류 대기`(확정전) 센터의 착수 액션.
transfer-history.tsx이력100.0%컴포넌트전송 이력 — 확정 전까지 분할 스캔이 계속 들어오므로(S-004 §2), 조사자가 "지금까지 몇 번, 마지막이 언제"를 보고 확정 시점을 판단한다.
viewer-stage-actions.tsx이력100.0%오늘 · #2181컴포넌트문서 뷰어 아래 줄의 단계 액션 자리 — 뷰어가 열리면 센터가 가려지므로(`hidden`, 언마운트하지 않는다), 분류 검수 단계의 `문서 확인 (N)`·`정보 추출` 을 뷰어 위에서도 누를 수 있게 한다(프로토타입 `ClassificationRiskActions` 가 뷰어 아래 줄에도 선다).
workflow-stepper.tsx이력100.0%컴포넌트진행 단계 스테퍼 — 화면 기준선 「워크스페이스 공통 — 상단(GNB·진행 스텝)」의 7단계 + `N / 7` 카운터 표기를 따른다.
workspace-center.tsx이력테스트100.0%오늘 · #2181컴포넌트워크스페이스 가운데 영역 — 프로토타입 workflow-status-centers 의 센터 카드 스케일(원형 아이콘 + 24px 제목 + 16px 본문)을 따른다.
workspace-header.tsx이력테스트100.0%오늘 · #2189컴포넌트워크스페이스 GNB — 프로토타입 investigation-workspace-gnb 의 배치(뒤로가기 + 에이전트 아이콘 + 제목·뱃지 / 오른쪽 메타 칩)를 따른다.
workspace-skeleton.tsx이력100.0%3일 전 · #2094컴포넌트사고조사 워크스페이스 첫 진입 — 업무 머리글(70px)·진행 단계(68px) 아래, 왼쪽 스캔 문서함과 가운데 센터로 나뉜 화면 전체 틀.
analysis-condition-terms-disclosure.test.tsx이력어제 · #2147테스트분석 조건 약관 칸 `공시실에서 찾기 ↗`
report-mail-send.test.tsx이력4일 전 · #2044테스트보고서 전송 — `메일 전송`
smart-review-send.test.tsx이력7일 전 · #1871테스트보고서 전송 — `스마트심사 전송`

app/(workspace)/user/investigations/[reportNo]/_lib/41GitHub

/user/investigations/[reportNo] 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

analysis-conditions-window.ts이력테스트92.9%모듈상단 `사전분석조건` — 노출 단계 판정과 팝업 창 열기 한 곳.
analysis-knowledge-start.ts이력테스트100.0%모듈분석 조건 ③ 지식컬렉션의 첫 선택 — 서버와 같은 범위 모양(`fileIds` 가 비면 컬렉션 전체).
concurrency-limit-notice.ts이력테스트96.4%모듈1인 동시 AI 분석 요청 한도(WBS 29.12.3)에 걸린 착수의 화면 알림 — 프로토타입의 상단 경고 띠와 같은 동작이다.
disclosure-room.ts이력테스트100.0%모듈상단·센터의 `공시실` — 노출 판정, 받은 링크의 판정, 안내 문구 한 곳.
document-box-head.ts이력테스트100.0%4일 전 · #2053모듈펼친 문서함 머리의 상태 뱃지 — 프로토타입 `document-panel` 머리와 같다.
document-box-width.ts이력테스트100.0%모듈스캔 문서함 폭 — 프로토타입 워크스페이스와 같은 범위(220~420px)·기본값(370px)이다.
document-change-notice.ts이력테스트100.0%2일 전 · #2113모듈확정 이후 문서 변경(`changedAfterConfirm`) 안내 문구 — 상단 경고 바와 문서함 위 `문서 변경 감지` 카드가 함께 읽는다.
extraction-review.ts이력테스트100.0%오늘 · #2158모듈추출 결과(`GET .../extraction-results/latest`)를 화면이 읽는 규칙 — 순수 계산만 둔다.
hospital-match.ts이력테스트100.0%어제 · #2138모듈조사자가 `병원 찾기`에서 목록에 없는 병원으로 진행하기로 한 항목 표시.
hospital-segments.ts이력테스트100.0%어제 · #2152모듈병원 묶음 경계 라벨 — 백엔드 `HospitalFolderAllocator.COVER_LABEL` 과 같다.
initial-collapse.ts이력테스트100.0%모듈워크스페이스 상단(GNB·진행 스텝)과 왼쪽 스캔 문서함의 접힘 규칙 — 결정 20261019-workspace-initial-collapse, 문서함은 결정 20261105-document-box-default-expanded 로 개정.
page-classification.ts이력테스트100.0%오늘 · #2181모듈분류 결과를 낱장 단위로 읽는 순수 계산 — 문서함·뷰어·분류 확인 화면이 같은 판정을 쓴다.
page-edits.ts이력테스트100.0%오늘 · #2181모듈스캔 문서함의 **낱장 편집(저장 전)** 모델 — 순수 계산만 둔다.
page-keyboard.ts이력테스트100.0%모듈열린 낱장을 ↑/↓ 키로 앞뒤 낱장으로 옮기는 규칙 — 순수 계산(프로토타입 스캔 문서함 키보드 이동).
report-before-change-window.ts이력테스트90.9%모듈`변경 전 보기` — 챗봇 `AI 보고서 반영` 직전 보고서를 별도 창으로 연다(결정 20261020).
report-mail-gate.ts이력테스트100.0%4일 전 · #2044모듈초안을 준비하는 중이라 보낼 수 없을 때의 안내 — 버튼 `title` 로 보인다.
report-snapshot-window.ts이력테스트90.9%모듈`AI 보고서 다시 보기` — 별도 창 열기 한 곳.
saved-edit-gate.ts이력테스트100.0%모듈저장한 문서 편집이 **마지막 분류 실행에 반영되지 않았을 때** 문서함 맨 위에 서는 게이트 — 순수 판정만 둔다.
scan-sections.ts이력테스트97.0%오늘 · #2170모듈문서함이 그리는 보기 — 이미지시스템 폴더별 또는 병원별.
summary-sources.ts이력모듈요약 근거 표시 규칙은 사용자 콘솔과 관리자 실행 테스트가 같이 쓰는 공통 모듈로 옮겼다 — 이 파일은 route 안의 import 경로를 유지하는 재export 다(`lib/collections/queries` 와 같은 방식).
summary-stage.ts이력테스트100.0%7일 전 · #1921모듈요약·해석 센터의 단계 — 글로벌 상태 → 단계 매핑과 단계 안내 문구만 여기 두고, 구역·카드·byte 규칙은 사용자·관리자(실행 테스트)가 같이 쓰는 공통 모듈(`components/common/summary/summary-stage.ts`)에 있다(아래 재export).
top-bar-buttons.ts이력테스트100.0%4일 전 · #2043모듈상단 바 버튼의 크기 토큰 한 곳 — `다시 분석` 그룹·`사전분석조건`·`공시실`·접기/펼치기가 같은 줄에 서므로 높이·글자·아이콘이 어긋나면 바로 보인다.
workspace-refresh.ts이력테스트100.0%모듈사용자 조치(분류 확정·분석 요청 …)가 백엔드에서 상태 전이를 일으켰을 수 있을 때, 워크스페이스의 **진행 상태와 상세**, 그리고 **조사 목록**을 다시 받게 한다.
workspace-steps.ts이력테스트100.0%모듈워크스페이스 상단 스테퍼의 단계 정의 — 화면 기준선 「워크스페이스 공통 — 상단(GNB·진행 스텝)」의 7단계 골격과 `N / 7` 카운터, 그리고 그 절의 활성 위치 표를 그대로 옮긴 것이다.
workspace-transition-lock.tsx이력테스트100.0%2일 전 · #2103컴포넌트서버 진행 상태가 바뀔 때까지 다시 제출하면 안 되는 사고조사 단계 전환 조치.
use-case-settings.test.tsx이력테스트조사건에 고정한 설정 조회
workspace-transition-actions.test.tsx이력2일 전 · #2103테스트요약 확정 거절
use-application-form-templates.ts이력100.0%훅분석 조건 입력이 읽는 청약서 폼 설정 — 관리자 `청약서 폼 설정` 가운데 이 조사건이 인입될 때 고정한 판.
use-claim-type-options.ts이력100.0%훅분석 조건 1번 청구유형 선택지 — 이 조사건이 인입될 때 고정한 목록.
use-classification-actions.ts이력100.0%2일 전 · #2103훅분류 확인(W07)의 세 조치 — 수동 확정·AI 일괄 확정·정보 추출 시작 — 과 그 뒤의 캐시 갱신을 한 곳에 둔다.
use-disclosure-room.ts이력100.0%훅`공시실` 누르기 — 링크를 받아 있으면 새 탭으로 열고(`noopener,noreferrer`), 없으면 안내 토스트, 조회 실패는 오류 토스트다(결정 20261017-customer-onboarding-status-api 4항).
use-extraction-actions.ts이력100.0%2일 전 · #2103훅청약서 폼 설정을 받지 못한 채 분석을 시작하려 할 때의 안내 — 서버 문구가 없는 자리라 화면이 정한다.
use-page-drag.ts이력88.9%훅끌고 있는 낱장 — 어느 폴더에서 출발했는지까지 들고 있어야 놓을 수 있는 자리를 가릴 수 있다.
use-page-edit-actions.ts이력테스트81.8%2일 전 · #2102훅스캔 문서함의 낱장 편집 — **저장 전 상태**와 `편집 저장` 조치를 한 곳에 둔다 (`use-classification-actions`·`use-extraction-actions`·`use-summary-actions` 와 같은 자리).
use-processing-retry.ts이력테스트100.0%2일 전 · #2103훅처리 실패 `다시 시도` — 실패한 단계부터 새 실행을 만든다(S-004 §8-6).
use-progress-sync.ts이력100.0%훅진행 상태가 바뀌었을 때 화면의 나머지를 따라 맞춘다 — **주소(`status=`)와 상세 캐시** 둘이다.
use-reanalysis-actions.ts이력테스트97.1%2일 전 · #2113훅워크스페이스 상단 `다시 분석` 그룹의 조치(S-012 §4) — 범위 조회, 확인 창의 열림/닫힘, 실행과 그 뒤의 캐시 갱신을 한 곳에 둔다.
use-report-events.ts이력테스트100.0%훅서버가 보내는 변경 신호 이름 — 백엔드 `ReportChangedEvent.Type` 과 같다.
use-report-mail-send.ts이력100.0%2일 전 · #2103훅전송을 마친 뒤의 알림 — 보낸 초안 버전을 그대로 적는다(프로토타입 `…보고서 vN를 전송했습니다.`).
use-smart-review-transfer.ts이력100.0%2일 전 · #2103훅스마트심사는 받았는데 그 사이 건 상태가 바뀌어 `보고서 전송 완료` 로 옮기지 못했다는 서버 코드.
use-summary-actions.ts이력테스트100.0%2일 전 · #2103훅요약·해석 센터의 조치(S-014 §6·§7) — 확정·초기화·항목 수정·반영 체크·초안 생성·구역 수정·되돌리기·초안 폐기 — 와 그 뒤의 캐시 갱신을 한 곳에 둔다.

app/(workspace)/user/investigations/_components/5GitHub

/user/investigations 화면에서만 쓰는 컴포넌트.

investigation-list-filters.tsx이력98.2%컴포넌트사고조사 목록 필터 줄 — 화면 기준선 「사고조사 목록」의 조회 조건(검색 · 소속 · 위탁사 · 청구유형 · 진행 상태 다중 선택 · 접수일자 범위 · 초기화 · 조회)을 계약에 맞춰 쓴 것이다.
investigation-list-view.tsx이력94.1%오늘 · #2189컴포넌트사고조사 목록 (P1-1).
processing-failure-badge.tsx이력테스트100.0%컴포넌트처리 실패 뱃지 — 목록의 `상태` 열과 워크스페이스 헤더가 함께 쓴다.
risk-sub-status-badges.tsx이력100.0%컴포넌트위험 서브 상태 뱃지들 — 목록의 `위험` 열과 워크스페이스 헤더가 함께 쓴다.
workflow-status-badge.tsx이력테스트100.0%컴포넌트글로벌 상태 뱃지 하나 — 목록의 `상태` 열과 워크스페이스 헤더가 함께 쓴다.

app/(workspace)/user/investigations/_lib/4GitHub

/user/investigations 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

list-filter.ts이력테스트100.0%모듈화면이 다루는 조건.
org-scope.ts이력테스트100.0%모듈담당자를 알 수 없는 행의 표시 — 상세 화면과 같은 문구라 `./investigator.ts` 가 갖는다.
view-stage.ts이력테스트100.0%모듈목록에서 **남의 건을 열 수 있는 단계** 판정 한 곳 — 순수 계산만 둔다.
queries.ts이력테스트100.0%쿼리queryOptions 팩토리 — queryKey와 queryFn을 한 곳에 묶는다.

app/(workspace)/user/knowledge/1GitHub

/user/knowledge 화면.

page.tsx이력테스트100.0%오늘 · #2168화면탭 상태를 URL search param 으로 읽으므로(`useSearchParams`) 목록 본체는 Suspense 경계 안에 둔다.

app/(workspace)/user/knowledge/_components/6GitHub

/user/knowledge 화면에서만 쓰는 컴포넌트.

addition-request-banners.tsx이력100.0%오늘 · #2168컴포넌트문서 추가 승인 대기·반려 배너 — 요청별 파일명, 승인 대기는 `{요청자} · {요청 시각} 요청`, 반려는 `({처리 시각} · {처리자})` 와 사유, 바로 조작(`요청 취소`·`제거`·`다시 승인요청`).
collection-detail-view.tsx이력테스트95.3%오늘 · #2168컴포넌트사용자 지식 컬렉션 상세 — 화면에서는 폴더 브라우저의 말단 폴더 안(`embedded`)에만 그린다.
collection-info-dialog.tsx이력100.0%오늘 · #2168컴포넌트컬렉션 `상세보기` — 케밥 메뉴에서 여는 컬렉션 정보 창(프로토타입 `CollectionActionMenu` 의 `컬렉션 상세`).
collection-list-view.tsx이력92.5%오늘 · #2168컴포넌트사용자 지식 컬렉션 — 폴더 브라우저(공용 컬렉션 + 내 컬렉션).
file-rename-dialog.tsx이력테스트95.5%오늘 · #2168컴포넌트`파일명 수정` — 내 컬렉션(개인 컬렉션) 파일만(docs/decisions/20260916-knowledge-collection-file-rename-removal.md 2026-10-07 개정).
share-conversion-dialog.tsx이력90.9%오늘 · #2168컴포넌트무엇을 보내는지 — 파일 표에서 체크한 파일의 새 요청, 또는 반려된 요청 한 건을 다른 대상으로 다시 보내기.

app/(workspace)/user/knowledge/_lib/2GitHub

/user/knowledge 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

collection-detail.ts이력테스트100.0%오늘 · #2168모듈지식컬렉션 상세 화면의 표시 규칙.
collection-list.ts이력테스트100.0%오늘 · #2168모듈지식 컬렉션 화면(폴더 브라우저·검색 결과·상세)의 표시 규칙 — 백엔드 enum 을 화면 어휘로 옮긴다.

app/(workspace)/user/profile/1GitHub

/user/profile 화면.

page.tsx이력0.0%화면내 정보 (`/user/profile`) — 사용자 카드가 가리키는 읽기 전용 화면.

app/(workspace)/user/profile/_components/2GitHub

/user/profile 화면에서만 쓰는 컴포넌트.

profile-email-form.tsx이력100.0%오늘 · #2181컴포넌트내 정보의 이메일 편집 — 기준선 「내 정보」: 입력하는 대로 검사하고, `되돌리기`는 바꿨을 때, `저장`은 바꿨고 오류가 없을 때 켜진다.
profile-view.tsx이력테스트100.0%오늘 · #2181컴포넌트내 정보 (`/user/profile`) — 로그인한 직원의 계정 정보를 보여 주고, 이메일만 본인이 고친다.

app/(workspace)/user/profile/_lib/3GitHub

/user/profile 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

email-edit.ts이력테스트100.0%모듈내 정보 이메일 편집 규칙 — 기준선 「내 정보」: 빈 값·형식은 입력하는 대로 검사하고, 다른 직원과의 중복은 서버가 판정한다.
profile-format.ts이력테스트100.0%모듈값이 없는 HR 항목을 화면에서 비워 두지 않는다.
queries.ts이력100.0%쿼리내 정보 화면 전용 호출.

app/ · 화면

app/(workspace)/admin/GitHub

Admin Console 화면

app/(workspace)/admin/3GitHub

/admin 화면.

layout.tsx이력0.0%6일 전 · #1939레이아웃/admin 아래 화면이 함께 쓰는 레이아웃.
page.tsx이력0.0%화면`/admin`은 화면이 아니라 권한 기반 콘솔 진입점이다.
error.tsx이력테스트100.0%컴포넌트콘솔 레이아웃(쉘) 안쪽 오류 경계 — 화면 하나의 렌더링 오류가 LNB 까지 지우지 않게 한다.

app/(workspace)/admin/agent-studio/1GitHub

/admin/agent-studio 화면.

page.tsx이력0.0%화면LNB `에이전트 스튜디오` 의 대표 주소 — 첫 탭(스키마 정의)으로 보낸다.

app/(workspace)/admin/agent-studio/schema/1GitHub

/admin/agent-studio/schema 화면.

page.tsx이력0.0%6일 전 · #1939화면보고서 설정 위탁사를 URL search param(`?company=`)으로 받으므로 본체는 Suspense 경계 안에 둔다.

app/(workspace)/admin/agent-studio/test/1GitHub

/admin/agent-studio/test 화면.

page.tsx이력0.0%화면/admin/agent-studio/test 화면 진입점.

app/(workspace)/admin/agent-studio/_components/37GitHub

/admin/agent-studio 화면에서만 쓰는 컴포넌트.

classify-editor.tsx이력테스트100.0%4일 전 · #1924컴포넌트1단계 CLASSIFY 2depth 문서종 편집기 — 확정 기획대로 이름·설명만 노출한다.
classify-stage.tsx이력100.0%4일 전 · #1924컴포넌트1단계 CLASSIFY 카드 — 1depth·2depth 문서종 설정 하나다(요약 설정은 2단계, 결정 20261020-studio-run-result-field-types 5항).
config-version-sync.tsx이력100.0%어제 · #2135컴포넌트단계 머리의 `수정 초기화` 왼쪽 — 그 단계 Studio 에이전트의 지시서(Config) 버전 버튼(`v6 · 배포`).
deploy-bar.tsx이력테스트100.0%오늘 · #2184컴포넌트AI 보고서까지 테스트를 마친 실행을 배포한다 — 서버가 실행을 검증해 배포 기록을 남긴다(결정 20261111 3·4항).
document-viewer.tsx이력48.0%3일 전 · #2086컴포넌트첨부 원본 뷰어.
extract-coverage-notice.tsx이력테스트100.0%오늘 · #2149컴포넌트안내 제목을 정하는 건수 — `total` 은 알릴 문서종 전체
extract-doc-type-picker-dialog.tsx이력83.3%7일 전 · #1871컴포넌트2단계에서 분류 문서종 하나를 고르는 창 — `추출 스키마 추가`·`항목 옮기기`가 함께 쓴다.
extract-stage.tsx이력테스트98.7%2일 전 · #2122컴포넌트EXTRACT 안의 하위 화면 — 추출 스키마 설정 / 요약 설정(요약 그룹)
extraction-field-card.tsx이력테스트100.0%어제 · #2135컴포넌트카드 머리의 유형 표기 — 목록이면 `String 목록`
extraction-workbench.tsx이력테스트96.2%3일 전 · #2086컴포넌트2단계 정보 추출 작업대 — 왼쪽 문서 업로드·미리보기(선택), 오른쪽 추출 스키마 설정.
instruct-dialogs.tsx이력테스트100.0%7일 전 · #1868컴포넌트보고서 설정 단계의 대화상자 — 다른 위탁사에서 복사 · 프롬프트 변수 설명 · 다른 탭에서 복사.
instruct-stage.tsx이력테스트100.0%4일 전 · #1924컴포넌트스키마 정의 3단계 INSTRUCT(보고서 설정) — 위탁사를 고르고 그 위탁사의 보고서 탭 지침을 편집한다.
insurer-instruct-layout.tsx이력테스트98.3%어제 · #2135컴포넌트스키마 정의 3 INSTRUCT `보고서 설정` — 위탁사 보고서 탭(= 보고서 에이전트 Instruct 노드)마다 공통 보고서 유형 지침(프롬프트·출력 JSON 골격)과 보고서 유형별 본문을 관리한다.
new-doc-type-form.tsx이력테스트100.0%4일 전 · #1924컴포넌트1단계 `2depth 문서종 추가` — 편집기 자리에 빈 폼을 띄운다.
next-step-bar.tsx이력테스트100.0%오늘 · #2149컴포넌트실행 테스트 아래 플로팅 — 이 단계를 마치고 다음 단계로 간다(결정 20261103-studio-test-version-risk-review 6항).
output-schema-field.tsx이력테스트100.0%컴포넌트보고서 탭의 출력 JSON 골격 편집기·뷰어.
report-panel.tsx이력테스트98.3%오늘 · #2184컴포넌트실행 테스트 3단계 — 탭마다 만든 AI 보고서 결과와, 그 탭에 조립한 프롬프트 조각
schema-deploy-notice.tsx이력100.0%오늘 · #2161컴포넌트스키마 정의 — 저장본이 배포본과 다를 때의 안내와 `배포본으로 되돌리기` 확인 창, 배포 대기 안내와 `적용` 확인 창.
schema-stage-actions.tsx이력100.0%4일 전 · #1924컴포넌트스키마 정의 단계 머리 오른쪽의 상태·`수정 초기화`·`저장` 묶음과, 결과 알림·버튼 이름에 붙는 단계 표식.
schema-studio-load.tsx이력100.0%4일 전 · #1924컴포넌트스키마 정의 1·2단계 — Studio 가장 최근 지시서를 받는 중·받지 못했을 때의 단계 본문.
schema-view.tsx이력테스트97.0%어제 · #2132컴포넌트스키마 정의 — 문서 분류(CLASSIFY)·추출 스키마(EXTRACT)·요약 설정(SUMMARY_GROUP)은 전 위탁사 공통, 보고서 설정(INSTRUCT)은 위탁사별.
shape-alignment-notice.tsx이력100.0%어제 · #2132컴포넌트스키마 정의 — 분류 저장에 이어 한 Import 형태 맞춤이 실패했을 때의 안내와 `다시 맞추기` (결정 20261111-studio-import-shape-regeneration 6항).
stage-progress.tsx이력100.0%오늘 · #2184컴포넌트실행 테스트 단계(분류·추출·AI 보고서)가 도는 동안 메인 화면 가운데에 보이는 진행 중 표시 — 회전 아이콘 + 제목 + 한 줄 설명.
step-bar.tsx이력100.0%오늘 · #2149컴포넌트실행 테스트에서 단계의 진행 상태
studio-feedback.tsx이력테스트97.0%7일 전 · #1871컴포넌트알림이 가리키는 단계 — 첫 줄 앞에 원형 번호 + 단계 이름 표식으로 붙는다(`① CLASSIFY`)
studio-prompt-editor.tsx이력테스트100.0%컴포넌트보고서 베이스 프롬프트·요약 그룹 프롬프트가 같이 쓰는 편집기 — 분석 조건 변수 칩·변수 설명 창·오류·글자 수까지 같다 (결정 20261021-studio-derived-document-processing-state 7항).
studio-select.tsx이력100.0%오늘 · #2184컴포넌트스튜디오 셀렉트 — 펼친 목록까지 프로젝트 모양(흰 면·`border` 테두리·`shadow-pop`, 행 `muted` 강조, 고른 행 브랜드 글자 + ✓).
studio-shell.tsx이력100.0%2일 전 · #2122컴포넌트에이전트 스튜디오 공통 틀 — 제목·탭.
studio-ui.tsx이력테스트100.0%2일 전 · #2122컴포넌트에이전트 스튜디오 화면이 함께 쓰는 표현 조각 — 단계 머리·선택 행·세그먼트 탭·상태 알약·검증 표시.
summary-doc-type-dialog.tsx이력95.7%어제 · #2132컴포넌트요약 설정이 기대는 기준 — 문서종 목록은 분류 버전, 고를 수 없는 문서종은 추출 버전이 정하고 저장은 추출 버전의 짝에 들어간다 (결정 20261105-studio-summary-doctype-picker 4·5항).
summary-group-editor.tsx이력테스트100.0%어제 · #2132컴포넌트요약 설정이 기대는 기준 세 가지 — 문서종 목록은 분류 버전, 고를 수 없는 문서종은 추출 버전, 저장은 추출 버전의 짝이다.
test-attach-column.tsx이력테스트96.8%오늘 · #2186컴포넌트실행 테스트 왼쪽 열 — 첨부 문서 관리(추가·삭제·모두 비우기)와 낱장 목록을 한 열에 둔다(결정 20261029-studio-test-attach-list-column).
test-classify-panel.tsx이력96.3%오늘 · #2149컴포넌트1단계 오른쪽 패널 — 위는 모든 낱장에 공통인 **검수 현황**(남은 건수·바로가기·일괄 확정), 아래는 지금 보는 낱장 하나의 **판정 카드**다.
test-extract-panel.tsx이력테스트83.1%오늘 · #2186컴포넌트목록에서 눌러 이동할 칸 — 저신뢰 추출과 연계 정보 불일치가 같은 모양으로 넘긴다
test-view.tsx이력테스트97.0%오늘 · #2186컴포넌트설명 주석 없음
use-reference-page.ts이력테스트100.0%3일 전 · #2086훅참고 문서의 한 쪽을 그림 주소로 만든다.
use-schema-step.ts이력100.0%5일 전 · #1974훅스키마 정의의 단계 탭 — 주소 `?tab=` 과 화면 안의 탭 선택을 맞춘다.

app/(workspace)/admin/agent-studio/_lib/47GitHub

/admin/agent-studio 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

agent-studio.ts이력테스트100.0%7일 전 · #1894모듈에이전트 스튜디오 설정 모델 — 문서 분류(CLASSIFY)·정보 추출(EXTRACT)·보고서 설정(INSTRUCT)을 한 벌로 다룬다.
attach-limits.ts이력테스트100.0%6일 전 · #1915모듈실행 테스트 첨부 문서의 제한(결정 20261106-studio-test-classify-run 2·10항): 개수 제한 없음 · 파일당 50MB · 누적 1,000쪽 이하 · 같은 파일 거절.
claim-hospital-sources.ts이력테스트100.0%오늘 · #2149모듈KCD 코드를 소수점 첫째 자리까지로 맞춘다 — 형식이 다르면 공백만 뺀 대문자 그대로 둔다
classify-review.ts이력테스트100.0%오늘 · #2149모듈문서종 Select 후보를 대분류(1depth)별로 묶은 한 덩어리
config-versions.ts이력테스트100.0%2일 전 · #2112모듈에이전트 스튜디오 config 버전 — 1단계 분류(CLASSIFY)·2단계 추출 스키마(EXTRACT)는 저장할 때마다 버전이 하나씩 쌓인다 (결정 20261021-studio-config-version-sync 4~7항).
deployment-api.ts이력테스트96.7%오늘 · #2161모듈에이전트 스튜디오 배포 기록 — 서버가 정본이다(결정 20261111-studio-server-deployment-management).
extract-coverage.ts이력테스트100.0%7일 전 · #1906모듈분류·추출 문서종 비교 — 두 목록은 독립이고 라벨(Studio `oneOf[].const` 값)로만 잇는다 (결정 20261104-studio-extract-doc-types-independent 6·7항).
extract-review-gate.ts이력테스트100.0%오늘 · #2186모듈실행 테스트 2단계 추출 검수 — 필수 확인 항목(저신뢰 추출 · 연계 정보 불일치)을 모으고, 한 번 확인했는지로 다음 단계를 연다.
extraction-reference-check.ts이력테스트100.0%모듈정보 추출 결과를 스마트심사 연계값(사건 정보)과 맞춰 보는 대조 규칙.
extraction-schema.ts이력100.0%모듈추출 항목 정의 → 추출 결과 JSON 스키마(뷰어의 `JSON 스키마` 펼침).
file-drag.ts이력테스트100.0%2일 전 · #2118모듈파일을 끌고 있는 드래그인가 — 텍스트·이미지 선택 같은 다른 드래그는 첨부 칸이 반응하지 않는다
instruct-api.ts이력테스트100.0%모듈에이전트 스튜디오 3단계 INSTRUCT 저장소 — 위탁사별 탭·프롬프트·출력 JSON 골격·탭 × 보고서 유형 본문은 서버가 정본이다 (결정 20261021-studio-instruct-db-storage).
instruct-prompt.ts이력테스트100.0%6일 전 · #1958모듈에이전트 스튜디오 3 INSTRUCT — 탭(= 보고서 에이전트 Instruct 노드)의 프롬프트·출력 JSON 골격·보고서 유형별 본문 규칙.
insurer-tabs.ts이력테스트100.0%6일 전 · #1958모듈에이전트 스튜디오 3 INSTRUCT — 위탁사별 보고서 탭.
original-pages.ts이력테스트42.3%3일 전 · #2058모듈실행 테스트 원본 보기 — 서류마다 서버가 PDF 로 바꿔 Studio 에 올려 둔 것을 받아 PDF 뷰어(pdf.js)로 한 쪽씩 그린다 (결정 20261106-studio-test-classify-run 2항).
page-layout.ts이력0.0%모듈문서 한 장의 영역 좌표 — 원본 그림이 없는 문서(표본 파일)를 뷰어가 이 좌표로 그린다.
reference-document.ts이력테스트100.0%3일 전 · #2086모듈추출 스키마 설정 탭의 「참고할 문서」 — 관리자가 올린 파일을 브라우저 안에서 그대로 읽어 보여 준다.
report-prompt-variables.ts이력테스트89.8%오늘 · #2149모듈보고서 생성 프롬프트의 건별 변수 값 — 분석 조건을 `{{변수}}` 자리에 들어갈 사람이 읽는 글로 펼친다.
run-engine.ts이력테스트100.0%모듈실행 테스트 — 올린 문서를 인식 → 분류 → 추출 순서로 모의 실행한다.
run-instruct.ts이력테스트92.1%6일 전 · #1958모듈실행 테스트 3단계(AI 보고서) 모의 실행 — 저장본의 프롬프트·본문 조각을 조립하고, 추출값으로 결과 문장을 만든다.
run-output.ts이력100.0%모듈실행 테스트 AI 보고서 탭 결과 → 사고조사 보고서와 같은 구역(`SummarySectionView`).
sample-document.ts이력테스트100.0%모듈화면 검토용 가상 문서 — 문서종 정의(추출 항목)로 원본 한 장의 그림과 글자 영역을 만든다.
sample-values.ts이력100.0%모듈추출 키별 표본 값 — 백엔드 연동 전 검토용 가상 문서·추출 결과를 채운다.
schema-issues.ts이력테스트100.0%5일 전 · #1974모듈스키마 정의 저장 검사 결과를 화면에 옮기는 계산 — 입력란별 문구, 막힌 저장 뒤 이동할 칸.
schema-restore-default.ts이력테스트100.0%2일 전 · #2112모듈`배포본으로 되돌리기`의 Studio 몫 — 가장 최근 버전이 되돌릴 버전(배포본, 배포 기록이 없으면 default)이 아니면 그 값으로 새 버전을 쌓는다 (결정 20261021 6항, 20261111-studio-server-deployment-management 7항).
schema-service.ts이력테스트100.0%모듈정보 추출 스키마 서비스 — 원본에서 항목을 뽑아 스키마를 만들고, 스키마로 값을 추출하고, 저장 전에 검사한다.
shape-alignment.ts이력테스트85.0%어제 · #2132모듈분류 지시서 저장에 이어 서버가 한 Import 형태 맞춤 — 분류 형태가 바뀌면 추출·요약 지시서를 새 형태로 만든다 (결정 20261111-studio-import-shape-regeneration).
source-document.ts이력테스트100.0%3일 전 · #2086모듈정보 추출 검토에 올리는 원본 문서의 형식·용량 규칙과 글자 영역 모양.
stage-save.ts이력테스트97.8%7일 전 · #1911모듈스키마 정의 단계별 저장·수정 초기화 — CLASSIFY · EXTRACT · SUMMARY_GROUP · INSTRUCT 가 각자 자기 몫만 저장하고 되돌린다.
studio-config-content.ts이력테스트96.4%모듈에이전트 스튜디오 1단계 분류·2단계 추출 스키마의 `동기화` — 고른 Studio 지시서(Config) 값을 화면 값으로 옮긴다 (결정 20261102-studio-config-sync-fill-screen).
studio-config-save.ts이력테스트93.5%오늘 · #2161모듈에이전트 스튜디오 1단계 분류·2단계 추출 스키마 저장 — 원본 지시서를 복제해 화면 값으로 새 Studio 지시서를 만든다 (결정 20261103-studio-config-save-new-config).
studio-config-versions-api.ts이력테스트100.0%2일 전 · #2112모듈에이전트 스튜디오 1단계 분류·2단계 추출 스키마의 「config 버전 선택」 목록 — 그 단계 Studio 에이전트의 지시서(Config) 목록이다 (결정 20261029-studio-config-version-list-from-studio).
studio-deployment.ts이력테스트100.0%2일 전 · #2112모듈에이전트 스튜디오 배포 판정 도우미 — 배포 기록은 서버가 정본이다(`deployment-api.ts`, 결정 20261111-studio-server-deployment-management).
studio-store.ts이력테스트100.0%5일 전 · #1972모듈에이전트 스튜디오 저장소 — 백엔드 연동 전까지 이 브라우저의 localStorage 에 한 벌을 둔다.
summary-doc-type-rows.ts이력테스트100.0%7일 전 · #1928모듈요약 그룹 `문서종 변경` 모달 왼쪽 목록 — 분류 문서종을 고를 수 있는 것과 고를 수 없는 이유로 나눈다 (결정 20261105-studio-summary-doctype-picker 3항).
summary-group-api.ts이력테스트100.0%모듈에이전트 스튜디오 2단계 `요약 설정`의 요약 그룹 저장소 — 서버(`/api/v1/admin/agent-studio/summary-groups`)가 정본이다 (결정 20261019-studio-summary-tab-doc-groups).
summary-group.ts이력테스트100.0%모듈요약 그룹 편집 규칙과 1단계 문서종 삭제.
test-run-api.ts이력테스트97.5%오늘 · #2186모듈실행 테스트 1단계 분류·2단계 추출 실연동 — `/api/v1/admin/agent-studio/test-runs` (결정 20261106-studio-test-classify-run, 20261107-studio-test-extract-run).
test-session.ts이력테스트100.0%2일 전 · #2118모듈실행 테스트 화면 상태 — `스키마 정의` 탭에 갔다 돌아와도 첨부·결과·수정값이 남도록 메모리에 둔다.
extraction-libs.test.ts이력3일 전 · #2086테스트스키마로 값 추출 — 형식별 판정
field-types.test.ts이력테스트추출 항목 유형 — String·Number·Integer·Boolean + 목록, 표는 따로
instruct-request.test.ts이력테스트INSTRUCT 저장 요청
summary-group-api.client.test.ts이력테스트요약 그룹 API 호출
test-run-api.upload.test.ts이력3일 전 · #2091테스트서류 올리기 — 고른 순서
studio-seed.json이력파일설명 주석 없음
use-schema-deployment.ts이력테스트100.0%2일 전 · #2112훅스키마 정의의 배포 안내 기준 — 가장 최근 저장본이 서버 배포 기록(결정 20261111-studio-server-deployment-management)과 같은지.
use-schema-studio-versions.ts이력테스트100.0%5일 전 · #1974훅스키마 정의 1·2단계가 기대는 Studio 값 — 단계별 config 버전 목록, 화면을 연 때 고정한 가장 최근 지시서와 그 내용, default(배포) 지시서 내용, 그리고 단계 본문을 그려도 되는지(받는 중·받지 못함·받음).

app/(workspace)/admin/application-forms/1GitHub

/admin/application-forms 화면.

page.tsx이력테스트0.0%화면/admin/application-forms 화면 진입점.

app/(workspace)/admin/application-forms/_components/4GitHub

/admin/application-forms 화면에서만 쓰는 컴포넌트.

application-form-settings.tsx이력97.5%오늘 · #2189컴포넌트관리자 · 청약서 폼 설정 본문 (`/admin/application-forms`).
modified-badge.tsx이력100.0%컴포넌트확정본과 다른 청약서 유형·계약별 추가 블록·조사자 직접입력 변수에 붙이는 표시(결정 20261028 5항).
question-editor-dialog.tsx이력테스트88.9%오늘 · #2165컴포넌트설명 주석 없음
template-variable-palette.tsx이력테스트94.4%어제 · #2154컴포넌트조사자 직접입력 변수 — 칩 한 줄(변수 · 수정 · 삭제)이 처음 모습이고, 수정 아이콘이나 `변수 추가` 를 누르면 아래에 편집 칸이 열리며 같은 버튼을 다시 누르면 닫힌다(결정 20261102 4항).

app/(workspace)/admin/application-forms/_lib/5GitHub

/admin/application-forms 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

application-form-draft.ts이력테스트100.0%모듈`확정` 한 번에 저장하는 화면 초안의 내용 — 유형별 질문·안내 문구·운영 메모와 조사자 직접입력 변수.
application-form-limits.ts이력테스트100.0%모듈서버 계약(`ApplicationFormQuestion`·`ApplicationFormVariable` 등)의 입력 규칙 — 어기면 `확정` 이 400 으로 거절되므로 화면이 먼저 막는다(결정 20261102 13항).
question-variable-chip.ts이력테스트100.0%모듈편집 목록의 질문 본문 안 변수 칩 — 문구·정의 여부·툴팁.
queries.ts이력100.0%쿼리관리자 화면이 읽는 현재 설정의 캐시 키.
use-application-form-settings.ts이력88.2%훅서버가 편집 기준 버전 불일치를 알리는 코드 — 다른 관리자가 먼저 저장했다.

app/(workspace)/admin/approval-center/1GitHub

/admin/approval-center 화면.

page.tsx이력테스트0.0%화면상태 필터는 서버에서 읽어 넘긴다 — 클라이언트 화면이 `useSearchParams` 를 쓰지 않아 Suspense 경계가 필요 없고, 모르는 값(오래된 링크·손으로 고친 주소)은 여기서 기본값으로 떨어진다.

app/(workspace)/admin/approval-center/review/1GitHub

/admin/approval-center/review 화면.

page.tsx이력테스트0.0%화면검토할 요청은 `?id=` 로 받는다(프로토타입 경로 그대로).

app/(workspace)/admin/approval-center/review/_components/3GitHub

/admin/approval-center/review 화면에서만 쓰는 컴포넌트.

approval-review-view.tsx이력95.0%3일 전 · #2094컴포넌트관리자 — 지식컬렉션 승인 검토 (N06).
review-decision-panel.tsx이력96.0%4일 전 · #2035컴포넌트승인 판단 패널 — 프로토타입 검토 화면(`ReviewActionPanel`)과 같은 모양·문구다.
review-file-table.tsx이력62.5%컴포넌트검토 대상 파일 — 프로토타입의 공용 파일 표(`CollectionFileTable`)와 같은 열 순서·표기를 공용 `DataTable` 로 그린다: 이름 · 파일 형태 · 크기 · 상태 · 처리 단계 · 업데이트 일시 · 보기, 하단에 쪽 이동.

app/(workspace)/admin/approval-center/_components/8GitHub

/admin/approval-center 화면에서만 쓰는 컴포넌트.

decision-button-styles.ts이력100.0%모듈승인센터 결정 버튼의 모양 — 프로토타입 `.secondary-btn` / `.primary-btn` 규격(높이 40px·둥근 8px).
approval-detail-dialog.tsx이력87.8%4일 전 · #2035컴포넌트목록에서 요청 한 건을 여는 팝업 — 프로토타입의 두 팝업(공용컬렉션 승인 요청 / 문서 추가 요청)을 한 골격으로 합쳤다.
approval-list-filters.tsx이력100.0%2일 전 · #2122컴포넌트목록 머리 — 건수 요약과 상태 필터.
approval-list-view.tsx이력97.6%컴포넌트관리자 — 지식컬렉션 승인 목록 (N06, 승인센터 메뉴).
approval-table-columns.tsx이력100.0%오늘 · #2189컴포넌트승인 목록의 열 정의.
approval-type-chip.tsx이력100.0%컴포넌트요청 유형 칩 — 상태 뱃지와 구분되도록 모서리만 각지게 한다(프로토타입 승인 목록의 유형 칩).
reject-reason-field.tsx이력100.0%컴포넌트반려 사유 칸 — "반려"를 누르면 그 자리에 열린다(프로토타입 승인 팝업·검토 화면과 같은 모양).
review-file-viewer.tsx이력테스트87.5%컴포넌트승인 검토의 파일 뷰어 — 공통 문서 뷰어(`DocumentViewerDialog`)에 승인 미리보기 쿼리를 이어 준다.

app/(workspace)/admin/approval-center/_lib/5GitHub

/admin/approval-center 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

approval.ts이력테스트96.1%오늘 · #2189모듈관리자 지식컬렉션 승인센터(N06)의 표시 규칙 — 목록과 검토 화면이 함께 쓴다.
queries.ts이력테스트100.0%쿼리승인 목록 조회 조건 — 백엔드 `CollectionApprovalController.ApprovalListFilter` 와 같은 값이다.
decision-requests.test.ts이력테스트승인 처리 요청의 시간 제한
viewer-requests.test.ts이력테스트승인 검토 뷰어 요청 — 10초 timeout 없이 받는다
use-approval-decision.ts이력91.7%훅승인 요청 한 건의 승인·반려 — 목록의 상세 팝업과 검토 화면이 함께 쓴다.

app/(workspace)/admin/audit-logs/1GitHub

/admin/audit-logs 화면.

page.tsx이력테스트100.0%3일 전 · #2094화면/admin/audit-logs 화면 진입점.

app/(workspace)/admin/audit-logs/_components/5GitHub

/admin/audit-logs 화면에서만 쓰는 컴포넌트.

audit-log-filters.tsx이력100.0%컴포넌트감사 로그 필터 줄.
audit-log-view.tsx이력94.6%2일 전 · #2122컴포넌트설명 주석 없음
integration-exchange-detail-dialog.tsx이력100.0%6일 전 · #1939컴포넌트연동 교환 한 건의 상세 — 요청·응답 본문은 여기서만 보인다(목록 응답에 본문이 없다, 결정 20261023 §4).
integration-exchange-filters.tsx이력94.7%컴포넌트「연동 기록」 탭의 필터 줄 — 감사 로그 필터와 같은 조회 규칙(`useFilterDraft`).
integration-exchange-view.tsx이력89.7%6일 전 · #1939컴포넌트설명 주석 없음

app/(workspace)/admin/audit-logs/_lib/4GitHub

/admin/audit-logs 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

audit-log.ts이력테스트100.0%2일 전 · #2112모듈셀렉트 항목 순서 — 적재 지점이 늘어나면 백엔드 enum 이 먼저 늘고 여기가 따라간다.
integration-exchange.ts이력테스트100.0%모듈감사 로그 화면의 탭.
queries.ts이력100.0%쿼리한 쪽의 행 수.
audit-log-export.test.ts이력테스트감사 로그 CSV 내보내기 조건

app/(workspace)/admin/classification-mappings/1GitHub

/admin/classification-mappings 화면.

page.tsx이력테스트100.0%3일 전 · #2094화면고른 위탁사를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다.

app/(workspace)/admin/classification-mappings/_components/7GitHub

/admin/classification-mappings 화면에서만 쓰는 컴포넌트.

classification-mapping-table.tsx이력95.7%오늘 · #2180컴포넌트로딩 중 표 자리 — 왼쪽 폴더 목록 카드와 오른쪽 배정 카드.
classification-mapping-view.tsx이력100.0%오늘 · #2189컴포넌트설명 주석 없음
load-client-mapping-dialog.tsx이력96.4%오늘 · #2180컴포넌트`다른 위탁사 매핑 불러오기` — 매핑을 확정한 위탁사를 고르고 그 위탁사의 폴더를 골라, 그 폴더의 저장본 분류로 편집 패널 선택을 덮어쓴다.
mapping-confirmation-changes.tsx이력94.4%오늘 · #2180컴포넌트추가·제거 분류 이름 목록 — 확정 확인 창과 `Studio 분류 편집` 하단(적용 전 변경)이 같이 쓴다.
mapping-confirmation-history.tsx이력100.0%오늘 · #2189컴포넌트`확정 이력 N건` 버튼이 여는 `매핑 확정 이력` 모달 — 버전 · 확정 일시 · 확정자 · 변경 건수를 표로 보인다 (프로토타입 `mapping-history-dialog.tsx`).
studio-deployment-pending-notice.tsx이력100.0%오늘 · #2161컴포넌트분류체계 매핑 위탁사 탭 위 — 사고조사 Workflow(에이전트 스튜디오) 배포 대기 한 줄과 `자세히` 창(결정 20261112 7항, 20261020 3항).
unassigned-agent-types-disclosure.tsx이력100.0%오늘 · #2180컴포넌트미확정 상자 안의 미배정 줄 — `미배정 Studio 분류 N종 모두 폴더에 배정해야 매핑을 확정할 수 있습니다.` 누르면 미배정 분류 이름을 칩으로 펼치고 다시 누르면 접는다.

app/(workspace)/admin/classification-mappings/_lib/3GitHub

/admin/classification-mappings 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

mapping.ts이력테스트100.0%오늘 · #2180모듈분류체계 매핑의 편집 상태 계산 — 화면(classification-mapping-view.tsx)에서 떼어 낸 순수 함수들.
queries.ts이력100.0%쿼리매핑을 저장한다(전량 치환 `PUT`).
mapping-load.test.ts이력테스트loadableFoldersOf

app/(workspace)/admin/client-workspace/1GitHub

/admin/client-workspace 화면.

page.tsx이력테스트100.0%6일 전 · #1939화면/admin/client-workspace 화면 진입점.

app/(workspace)/admin/client-workspace/_components/5GitHub

/admin/client-workspace 화면에서만 쓰는 컴포넌트.

client-workspace-skeleton.tsx이력100.0%6일 전 · #1939컴포넌트진행률 카드와 네 단계 카드 — 상태 조회를 기다릴 때도, 화면 첫 진입에도 같은 틀을 쓴다.
client-workspace-view.tsx이력100.0%2일 전 · #2122컴포넌트설명 주석 없음
delivery-channel-picker.tsx이력테스트100.0%2일 전 · #2106컴포넌트위탁사 워크스페이스 3단계 — 보고서 초안 전송 방식 택1 라디오(결정 20260902 1·7항).

app/(workspace)/admin/client-workspace/_lib/3GitHub

/admin/client-workspace 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

onboarding.ts이력테스트100.0%모듈화면이 그리는 단계·전체 상태.

app/(workspace)/admin/dashboard/1GitHub

/admin/dashboard 화면.

page.tsx이력테스트100.0%3일 전 · #2094화면통계 대시보드는 메뉴 `DASHBOARD`의 독립 URL이다.

app/(workspace)/admin/dashboard/lifecycle/1GitHub

/admin/dashboard/lifecycle 화면.

page.tsx이력테스트100.0%오늘 · #2168화면/admin/dashboard/lifecycle 화면 진입점.

app/(workspace)/admin/dashboard/lifecycle/_components/3GitHub

/admin/dashboard/lifecycle 화면에서만 쓰는 컴포넌트.

department-multi-select.tsx이력85.7%오늘 · #2168컴포넌트부서 조건(복수) — 한 줄 높이의 버튼을 누르면 조직도 순서의 체크 목록이 펼쳐진다.
lifecycle-statistics-filters.tsx이력100.0%오늘 · #2168컴포넌트생애주기 통계 조건 줄 — 목록 필터 공통 규칙(`useFilterDraft`)대로 select·부서는 고르는 즉시, 날짜는 다 들어온 값일 때 즉시 적용하고 `조회` 도 그대로 둔다.
lifecycle-statistics-view.tsx이력100.0%오늘 · #2168컴포넌트설명 주석 없음

app/(workspace)/admin/dashboard/lifecycle/_lib/2GitHub

/admin/dashboard/lifecycle 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

lifecycle-statistics.ts이력테스트100.0%오늘 · #2168모듈화면이 다루는 조건.
queries.ts이력100.0%오늘 · #2168쿼리생애주기 통계 캐시 전체를 가리키는 키.

app/(workspace)/admin/dashboard/unmapped/1GitHub

/admin/dashboard/unmapped 화면.

page.tsx이력테스트100.0%오늘 · #2168화면/admin/dashboard/unmapped 화면 진입점.

app/(workspace)/admin/dashboard/unmapped/_components/3GitHub

/admin/dashboard/unmapped 화면에서만 쓰는 컴포넌트.

resolve-dialog.tsx이력98.0%오늘 · #2168컴포넌트미매핑 원문값 하나(묶음)의 처리 창 — 병합·신규 등록·무시 중 행에서 고른 하나만 다룬다.
unmapped-queue-filters.tsx이력100.0%오늘 · #2168컴포넌트미매핑 큐 필터 줄 — 목록 필터 공통 규칙(`useFilterDraft`)대로 select 는 고르는 즉시 적용하고, `조회` 도 그대로 둔다.
unmapped-queue-view.tsx이력93.8%오늘 · #2168컴포넌트설명 주석 없음

app/(workspace)/admin/dashboard/unmapped/_lib/2GitHub

/admin/dashboard/unmapped 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

unmapped-queue.ts이력테스트100.0%오늘 · #2168모듈셀렉트 항목 순서 — 백엔드 `StatDimension` enum 순서를 따른다.
queries.ts이력100.0%오늘 · #2168쿼리한 쪽의 행 수.

app/(workspace)/admin/hospital-aliases/1GitHub

/admin/hospital-aliases 화면.

page.tsx이력테스트93.8%3일 전 · #2082화면관리자 · 병원 명칭 매핑 (`/admin/hospital-aliases`) — 결정 [20260910 병원 마스터 매칭](docs/decisions/20260910-hospital-master-matching.md) §6, 프로토타입 `app/(workspace)/admin/hospital-a…

app/(workspace)/admin/hospital-aliases/_components/3GitHub

/admin/hospital-aliases 화면에서만 쓰는 컴포넌트.

alias-create-dialog.tsx이력95.0%4일 전 · #2035컴포넌트`병원 이름 등재` 창 — 이름 입력 + 공용 `병원 찾기` 창으로 병원 지정(프로토타입 `AliasCreateModal`).
hospital-alias-filters.tsx이력100.0%3일 전 · #2081컴포넌트필터 줄 — 사용 여부·등재 경로·통합 검색, `초기화`, 오른쪽 끝 `이름 등재`(프로토타입 배치).
hospital-alias-table.tsx이력100.0%오늘 · #2189컴포넌트등재 목록 표 — 공용 `DataTable`(그리드형: 네이비 머리·줄무늬 행·열 폭 조절·정렬), 열은 여섯이다.

app/(workspace)/admin/hospital-aliases/_lib/2GitHub

/admin/hospital-aliases 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

hospital-alias.ts이력테스트100.0%3일 전 · #2081모듈관리자 "병원 명칭 매핑" 화면(`/admin/hospital-aliases`)이 응답을 읽는 규칙 — 결정 20260910 §6, 프로토타입 `app/(workspace)/admin/hospital-aliases/page.tsx`·`lib/hospital-alias.ts`.
queries.ts이력테스트100.0%3일 전 · #2081쿼리등재 목록 캐시 키의 머리.

app/(workspace)/admin/knowledge/1GitHub

/admin/knowledge 화면.

page.tsx이력테스트100.0%6일 전 · #1939화면열린 폴더를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다 — 경계가 없으면 프리렌더 단계에서 빌드가 막힌다.

app/(workspace)/admin/knowledge/_components/4GitHub

/admin/knowledge 화면에서만 쓰는 컴포넌트.

admin-collection-detail.tsx이력90.3%2일 전 · #2122컴포넌트관리자 — 말단 폴더(공용 컬렉션)의 상세.
admin-knowledge-view.tsx이력92.2%3일 전 · #2059컴포넌트관리자 — 지식컬렉션 관리(프로토타입 `/admin/knowledge`).
collection-guide-settings-dialog.tsx이력94.7%6일 전 · #1939컴포넌트줄바꿈마다 한 항목 — 사용자 파일 추가 모달의 `관리자 안내` 박스와 같은 규칙.
reference-defaults-panel.tsx이력테스트91.8%2일 전 · #2122컴포넌트공용 컬렉션 하나의 위탁사별 참조 기본값 — 저장값·편집본·저장.

app/(workspace)/admin/knowledge/_lib/1GitHub

/admin/knowledge 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

admin-knowledge.ts이력테스트100.0%모듈관리자 지식컬렉션 관리 화면의 표시·검색 규칙.

app/(workspace)/admin/mail-account/1GitHub

/admin/mail-account 화면.

page.tsx이력테스트92.9%오늘 · #2181화면프로토타입 기준: 좌측 통합 설정 폼, 우측 실제 발송 로그.

app/(workspace)/admin/mail-account/_components/2GitHub

/admin/mail-account 화면에서만 쓰는 컴포넌트.

mail-account-settings-form.tsx이력테스트96.2%오늘 · #2181컴포넌트설명 주석 없음
mail-dispatch-log-section.tsx이력테스트97.4%오늘 · #2181컴포넌트설명 주석 없음

app/(workspace)/admin/mail-account/_lib/4GitHub

/admin/mail-account 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

mail-account.ts이력테스트100.0%오늘 · #2189모듈관리자 "메일 발송 계정" 화면이 응답을 읽는 규칙 (야간 20260827 N03).
mail-dispatch-log.ts이력테스트100.0%오늘 · #2181모듈화면이 다루는 조회 조건.
settings-form.ts이력100.0%모듈설명 주석 없음
queries.ts이력100.0%2일 전 · #2096쿼리발송 로그 한 쪽의 행 수.

app/(workspace)/admin/organization/1GitHub

/admin/organization 화면.

page.tsx이력테스트100.0%3일 전 · #2094화면/admin/organization 화면 진입점.

app/(workspace)/admin/organization/_components/6GitHub

/admin/organization 화면에서만 쓰는 컴포넌트.

department-tree.tsx이력100.0%컴포넌트조직도 트리 — 부서 하나를 고르는 목록.
organization-change-notices.tsx이력100.0%오늘 · #2189컴포넌트화면 위 「HR 데이터 갱신됨」 안내 — 닫아도 「변경 조직」·「변경 대상자만」은 남는다(확인 완료 전까지).
organization-source-notice.tsx이력100.0%컴포넌트HR 원천 필드와 이 화면에서 수정할 수 있는 필드의 경계를 알려준다.
organization-view.tsx이력97.8%오늘 · #2189컴포넌트고른 부서가 실리는 URL search param 이름.
user-detail-dialog.tsx이력테스트98.0%오늘 · #2157컴포넌트설명 주석 없음
user-role-cell-editor.tsx이력테스트97.7%오늘 · #2189컴포넌트사용자 레벨 셀에서 바로 여는 복수 선택 편집기.

app/(workspace)/admin/organization/_lib/5GitHub

/admin/organization 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

role-edit.ts이력테스트100.0%어제 · #2156모듈사용자 레벨 편집(N02)의 순수 로직 — 화면(다이얼로그)에서 떼어 낸 계산만 모은다.
tree.ts이력테스트100.0%모듈조직도 트리의 노드 하나 — 계약 타입 그대로다.
user-sort.ts이력테스트100.0%모듈직원 목록 이메일 열 id — 폭 1536px 이상에서만 보인다(`use-wide-viewport`).
queries.ts이력100.0%쿼리조직 변경 현황 캐시 키 — 확인 완료 뒤 무효화 대상이다.
use-wide-viewport.ts이력테스트100.0%훅직원 목록의 이메일 열을 보이는 폭 — 프로토타입·화면 기준선 「조직도」(폭 1536px 이상).

app/(workspace)/admin/permissions/1GitHub

/admin/permissions 화면.

page.tsx이력테스트100.0%6일 전 · #1939화면/admin/permissions 화면 진입점.

app/(workspace)/admin/permissions/_components/6GitHub

/admin/permissions 화면에서만 쓰는 컴포넌트.

approval-flow-card.tsx이력100.0%컴포넌트`지식컬렉션 승인 흐름` 카드 — 요청 → (1차 승인) → 최종 승인.
approval-row-hint.tsx이력60.0%컴포넌트승인센터 행의 설명 — 메뉴명 옆 `i` 아이콘에 마우스를 올리거나 키보드로 초점을 주면 메모 형태로 뜬다.
permission-cells.tsx이력100.0%컴포넌트일반 메뉴의 (메뉴, 레벨) 셀 — 체크하면 그 레벨이 메뉴를 쓴다.
permission-console-section.tsx이력100.0%컴포넌트콘솔 한 구획의 카드 — 제목 띠 아래에 매트릭스 표가 이어진다(조회 중 골격과 본 표가 같은 틀을 쓴다).
permission-matrix-table.tsx이력100.0%3일 전 · #2094컴포넌트승인센터 행을 체크박스 대신 승인 권한 선택으로 그리기 위한 조작 묶음.
permission-toolbar.tsx이력100.0%4일 전 · #2035컴포넌트안내 문구 + 마지막 저장 시각(왼쪽), 기본값·변경 취소·저장 버튼(오른쪽) — 프로토타입 권한 화면의 줄과 같은 배치다.

app/(workspace)/admin/permissions/_lib/4GitHub

/admin/permissions 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

approval-policy.ts이력테스트100.0%모듈지식컬렉션 승인 정책(1차 승인 레벨)의 편집 규칙 — 매트릭스의 `지식컬렉션 승인` 행만 체크박스 대신 승인 권한 선택이다.
matrix.ts이력테스트100.0%모듈권한 매트릭스의 편집 상태 계산 — 화면(page.tsx)에서 떼어 낸 순수 함수들.
queries.ts이력100.0%쿼리바뀐 것만 반영한다(PATCH) — 바뀐 셀과, 바뀐 경우의 1차 승인 지정.
use-permission-draft.ts이력100.0%훅권한 관리 화면의 저장 전 편집본 — 바뀐 셀과 1차 승인 지정 변경.

app/(workspace)/admin/report-disposal-logs/1GitHub

/admin/report-disposal-logs 화면.

page.tsx이력테스트100.0%3일 전 · #2094화면/admin/report-disposal-logs 화면 진입점.

app/(workspace)/admin/report-disposal-logs/_components/1GitHub

/admin/report-disposal-logs 화면에서만 쓰는 컴포넌트.

app/(workspace)/admin/report-send-logs/1GitHub

/admin/report-send-logs 화면.

page.tsx이력0.0%6일 전 · #1939화면조건·쪽 번호를 URL search param 으로 읽으므로(`useSearchParams`) 본체는 Suspense 경계 안에 둔다.

app/(workspace)/admin/report-send-logs/_components/1GitHub

/admin/report-send-logs 화면에서만 쓰는 컴포넌트.

report-send-log-view.tsx이력테스트80.9%오늘 · #2181컴포넌트설명 주석 없음

app/(workspace)/admin/report-send-logs/_lib/2GitHub

/admin/report-send-logs 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

report-send-log.ts이력테스트100.0%모듈화면이 다루는 조회 조건.
queries.ts이력80.0%2일 전 · #2096쿼리전송 로그 목록 쿼리 접두사 — 검색칸 Enter 가 같은 조건이어도 다시 받게 할 때 쓴다(`useFilterRefresh`).

app/(workspace)/admin/report-types/1GitHub

/admin/report-types 화면.

page.tsx이력테스트98.1%4일 전 · #2035화면관리자 · 보고서 유형 설정 (`/admin/report-types`) — 야간 20260930 NT02.

app/(workspace)/admin/report-types/_components/3GitHub

/admin/report-types 화면에서만 쓰는 컴포넌트.

add-claim-type-dialog.tsx이력100.0%6일 전 · #1939컴포넌트청구유형 추가 대화상자 — 야간 20260930 NT02.
claim-type-table.tsx이력100.0%6일 전 · #1939컴포넌트청구유형 목록 표 — 야간 20260930 NT02.
studio-guide-dialog.tsx이력100.0%컴포넌트유형 추가 직후 안내 창 — 사고조사 Workflow 스키마 정의의 AI 보고서 단계에서 모든 위탁사·모든 탭의 작성 지침을 정의하고 배포하도록 이끈다(프로토타입 `DefineSchemaAlert`, 문구는 결정 20261102 6항).

app/(workspace)/admin/report-types/_lib/3GitHub

/admin/report-types 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

claim-type.ts이력테스트100.0%모듈관리자 "보고서 유형 설정" 화면(`/admin/report-types`)이 응답을 읽는 규칙 — 야간 20260930 NT02.
report-type-guideline.ts이력테스트100.0%모듈관리자 "보고서 유형 설정" 화면의 **`스키마 정의 필요` 판정** — 야간 20261001 ND03, 판정 원천은 결정 20261102 7항으로 바로잡았다.
queries.ts이력100.0%쿼리청구유형 마스터 캐시를 가리키는 키.

app/(workspace)/admin/_components/14GitHub

/admin 화면에서만 쓰는 컴포넌트.

business-statistics-tab.tsx이력99.0%오늘 · #2168컴포넌트설명 주석 없음
chart-detail-modal.tsx이력90.7%3일 전 · #2068컴포넌트통계 카드 `더보기` 모달 — 프로토타입 대시보드의 「차트로 보기 / 데이터로 보기」.
chat-statistics-cards.tsx이력100.0%오늘 · #2168컴포넌트위탁사 조건이 걸리지 않는다는 표시 — 카드 머리 오른쪽.
concurrent-usage-limit-control.tsx이력테스트100.0%3일 전 · #2070컴포넌트통계 대시보드 헤더의 「동시 요청 제한」 — 조사자 한 명이 동시에 돌릴 수 있는 AI 작업(분류·추출·분석) 건수를 바꾼다 (프로토타입 `admin/_components/concurrent-usage-limit-control.tsx`, WBS 29.12.3).
dashboard-charts.tsx이력테스트87.1%오늘 · #2189컴포넌트구역 제목 — 「종합현황」「처리 현황」 같은 카드 묶음의 머리.
dashboard-item-picker.tsx이력100.0%4일 전 · #2035컴포넌트`표시 항목 선택` 버튼 — 현재 탭에서 숨긴 카드 수를 뱃지로 붙인다.
dashboard-visibility.tsx이력100.0%컴포넌트카드 하나 — 숨겼으면 그리지 않는다.
error-incidents-card.tsx이력100.0%오늘 · #2168컴포넌트설명 주석 없음
extraction-completion-card.tsx이력100.0%오늘 · #2168컴포넌트설명 주석 없음
processing-time-cards.tsx이력100.0%오늘 · #2168컴포넌트시간 목표률 — 값이 비면 단위를 붙이지 않는다(`-%` 가 되지 않게).
service-status-card.tsx이력100.0%컴포넌트설명 주석 없음
statistics-dashboard-view.tsx이력96.8%오늘 · #2168컴포넌트관리자 — 통계 대시보드(`/admin/dashboard`, 메뉴 `DASHBOARD`).
system-statistics-tab.tsx이력97.7%오늘 · #2168컴포넌트설명 주석 없음
usage-cards.tsx이력100.0%오늘 · #2168컴포넌트조직 조회 결과 — `○○별 · 합계 N건` 요약 + 막대.

app/(workspace)/admin/_lib/7GitHub

/admin 화면의 쿼리(queryOptions)·순수 계산·규칙 — 다른 화면에서 import 하지 않는다.

chat-error-statistics.ts이력테스트100.0%오늘 · #2189모듈위탁사 조건이 걸리지 않는 카드의 표시 — 채팅·시스템 실패에는 위탁사가 없다.
dashboard-items.ts이력테스트100.0%모듈통계 대시보드 `표시 항목 선택` 의 목록 — 탭 → 구역 → 카드.
detail-table.ts이력테스트100.0%모듈통계 카드 `더보기` 모달의 표 질의 — 화면(chart-detail-modal.tsx)에서 떼어 낸 순수 함수들.
processing-usage-statistics.ts이력테스트100.0%오늘 · #2189모듈분포 구간 라벨 — `~5분` · `5~10분` · `30분 초과`(프로토타입 카드의 표기).
service-status.ts이력테스트100.0%모듈시스템 모니터링 「서비스 상태」(#30) 카드의 규칙 — 원천은 `GET /api/v1/admin/statistics/service-status`(Prometheus 조회).
statistics-dashboard.ts이력테스트100.0%오늘 · #2168모듈추이 차트의 조회 단위 — 일별 롤업을 화면에서 묶는다(계약: 주·월·연 묶기는 화면 몫).
queries.ts이력100.0%오늘 · #2168쿼리업무 통계 캐시 전체를 가리키는 키.

components/

components/ui/GitHub

shadcn 프리미티브·UI 킷

components/ui/45GitHub

shadcn 프리미티브와 프로젝트 UI 킷. 업무 의미(상태 이름·라벨)는 담지 않고 표현만 둔다.

data-table-widths.ts이력테스트100.0%모듈남는 폭 배분에 필요한 열 정보 — `DataTableColumn` 의 부분집합이다.
README.md이력2일 전 · #2096문서UI 킷 사용법 — 프리미티브와 프로젝트 UI 킷의 구분, 컴포넌트별 예시.
alert-dialog.tsx이력76.9%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
badge.tsx이력100.0%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
button.tsx이력테스트100.0%4일 전 · #2037컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
card.tsx이력85.7%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
character-counter.tsx이력테스트96.6%컴포넌트UI 킷 — 글자 수 상한이 있는 작성란 (사용법은 components/ui/README.md).
checkbox.tsx이력100.0%어제 · #2135컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
confirm-dialog.tsx이력테스트100.0%6일 전 · #1939컴포넌트UI 킷 — 알리고 확인받는 창 (사용법은 components/ui/README.md).
data-table.tsx이력테스트98.9%6일 전 · #1939컴포넌트UI 킷 — 데이터 테이블 (사용법은 components/ui/README.md).
dialog.tsx이력90.9%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
dropdown-menu.tsx이력43.8%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
empty-state.tsx이력테스트100.0%컴포넌트UI 킷 — 빈 상태 (사용법은 components/ui/README.md).
field.tsx이력테스트100.0%어제 · #2135컴포넌트UI 킷 — 폼 컨트롤 래퍼 (사용법은 components/ui/README.md).
filter-bar.tsx이력테스트100.0%2일 전 · #2096컴포넌트UI 킷 — 목록 필터 줄 (사용법은 components/ui/README.md).
filter-chip.tsx이력100.0%오늘 · #2180컴포넌트설명 주석 없음
form-actions.tsx이력테스트100.0%컴포넌트UI 킷 — 페이지 폼 행동 영역 (사용법은 components/ui/README.md).
inline-edit-text.tsx이력테스트100.0%7일 전 · #1916컴포넌트UI 킷 — 그 자리에서 고치는 텍스트 (사용법은 components/ui/README.md).
input.tsx이력100.0%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
kebab-menu.tsx이력테스트100.0%컴포넌트UI 킷 — 행 액션 메뉴 (사용법은 components/ui/README.md).
label.tsx이력100.0%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
loading-overlay.tsx이력테스트100.0%6일 전 · #1939컴포넌트UI 킷 — 저장 중 덮개 (사용법은 components/ui/README.md).
loading-region.tsx이력100.0%6일 전 · #1939컴포넌트설명 주석 없음
modal-frame.tsx이력테스트100.0%컴포넌트UI 킷 — 모달 프레임 (사용법은 components/ui/README.md).
native-select.tsx이력테스트100.0%컴포넌트UI 킷 — 기본 셀렉트 (사용법은 components/ui/README.md).
navigation-tabs.tsx이력100.0%2일 전 · #2122컴포넌트설명 주석 없음
notice.tsx이력테스트100.0%오늘 · #2180컴포넌트UI 킷 — 안내 상자 (사용법은 components/ui/README.md).
page-heading.tsx이력테스트100.0%컴포넌트UI 킷 — 페이지 제목 (사용법은 components/ui/README.md).
pagination.tsx이력테스트95.0%7일 전 · #1933컴포넌트UI 킷 — 데이터 테이블 (사용법은 components/ui/README.md).
radio-group.tsx이력100.0%어제 · #2135컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
search-input.tsx이력테스트100.0%오늘 · #2165컴포넌트UI 킷 — 검색칸 (사용법은 components/ui/README.md).
section-card.tsx이력테스트100.0%오늘 · #2181컴포넌트UI 킷 — 구획 카드 (사용법은 components/ui/README.md).
segmented-control.tsx이력100.0%2일 전 · #2122컴포넌트설명 주석 없음
skeleton.tsx이력100.0%6일 전 · #1939컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
sonner.tsx이력100.0%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
spinner.tsx이력테스트100.0%6일 전 · #1939컴포넌트설명 주석 없음
status-badge.tsx이력테스트100.0%컴포넌트UI 킷 — 상태 뱃지 (사용법은 components/ui/README.md).
switch.tsx이력테스트100.0%컴포넌트설명 주석 없음
table.tsx이력88.9%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
textarea.tsx이력100.0%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
three-column-layout.tsx이력테스트100.0%컴포넌트UI 킷 — 워크스페이스 3컬럼 (사용법은 components/ui/README.md).
tooltip.tsx이력100.0%컴포넌트shadcn/ui 프리미티브 — CLI 생성물이라 손으로 고치지 않는다.
alert-banner.test.tsx이력테스트Notice 배너
choice-controls.test.tsx이력어제 · #2135테스트선택지 크기
navigation-controls.test.tsx이력2일 전 · #2122테스트공용 탐색 컨트롤

components/

components/common/GitHub

두 콘솔 공용

components/common/68GitHub

User·Admin 두 콘솔이 같은 의미로 쓰는 앱 쉘(LNB)·가드·배너.

analysis-request.ts이력테스트100.0%2일 전 · #2101모듈분석 요청(W09)의 화면 입력 → 계약(`AnalysisRequestCommand`) 변환 — 순수 계산만 둔다.
application-form-settings.ts이력100.0%모듈청약서 폼 설정 응답(`ApplicationFormSettingsView`)을 화면이 쓰는 모양으로 좁힌다.
application-form-templates.ts이력테스트100.0%모듈청약서 유형별 질문 템플릿 — 관리자 `청약서 폼 설정`과 사용자 분석 조건 입력이 함께 쓰는 화면 모델.
application-form-variables.ts이력66.7%모듈조사자 직접입력 변수 — 관리자 `청약서 폼 설정`의 공통 변수 팔레트와 질문 본문 `{{변수명}}` 의 정의.
session-exit.ts이력테스트100.0%모듈화면 이동 — 테스트가 갈아 끼울 수 있게 객체로 둔다(`vi.spyOn(sessionNavigation, "assign")`).
workspace-menu.ts이력테스트98.0%오늘 · #2168모듈LNB 메뉴 구성 — 권한 API(`GET /api/v1/menu-permissions/my`) 응답을 화면이 쓸 형태로 바꾼다.
workspace-nav-badge.ts이력테스트100.0%오늘 · #2180모듈LNB 뱃지 표시 규칙 — 숫자 문구·색·그룹명 점(결정 20261022 10항, 프로토타입 `components/admin/app-sidebar.tsx`).
workspace-nav-hooks.ts이력테스트100.0%모듈LNB 접힘 상태 — 프로토타입 app-sidebar 와 같은 규칙이다.
workspace-nav-icons.ts이력테스트100.0%모듈매핑된 아이콘이 없는 메뉴·그룹이 라벨 첫 글자로 자리를 채우는 폴백.
workspace-nav-styles.ts이력테스트100.0%모듈LNB 하위 컴포넌트가 함께 쓰는 스타일 조각.
analysis-condition-modal.tsx이력테스트90.3%2일 전 · #2101컴포넌트청약서 폼 설정 조회 결과 — 호출부가 훅(`useApplicationFormTemplates`)으로 받아 넘긴다.
analysis-knowledge-chips.tsx이력테스트100.0%4일 전 · #2037컴포넌트분석 조건 ③ 지식컬렉션 — 고른 **문서**가 칩으로 서고(× 로 하나씩 뺀다), `지식컬렉션 선택` 으로 문서보관함 팝업(문서 단위)을 연다.
application-question-block.tsx이력테스트85.7%어제 · #2135컴포넌트청약서 질문 1건 — 프로토타입 `application-question-block` 을 옮겼다.
chat-ask-failure-notifier.tsx이력테스트94.7%컴포넌트다른 화면에 있는 동안 질문 전송이 실패하면 알린다(결정 20261030-agent-chat-pending-in-lnb 3항).
claim-hospital-inputs.tsx이력테스트100.0%어제 · #2135컴포넌트청구병원 후보 조회 결과 — 호출부(사고조사 건)가 훅으로 받아 넘긴다.
collection-comment-dialog.tsx이력78.3%6일 전 · #1939컴포넌트컬렉션 `설명 변경` 모달 — 폴더 브라우저의 폴더 케밥 `이름 변경 / 설명 변경 / 삭제` 가 연다 (docs/decisions/20261013-knowledge-collection-comment-edit-kebab.md §2).
collection-description.tsx이력테스트100.0%3일 전 · #2059컴포넌트사용자 수정 상태 안내 — 반영 안 된 파일이 있으면 버튼을 누르라고 알린다(결정 20261016-collection-description-manual-generate §3).
collection-detail-panel.tsx이력테스트100.0%오늘 · #2168컴포넌트지식컬렉션 상세의 공통 틀 — 사용자 콘솔(`/user/knowledge` 말단 폴더)과 관리자 콘솔 (`/admin/knowledge` 말단 폴더)이 같은 모양으로 쓴다(관리자 컬렉션 파일 목록 UI 기준, 결정 20261016-knowledge-collection-detail-unify).
collection-file-bulk-actions.tsx이력100.0%3일 전 · #2099컴포넌트파일 표 위 — 체크한 파일을 한꺼번에 `삭제`·`재색인`한다.
collection-file-table.tsx이력테스트83.3%2일 전 · #2125컴포넌트페이지당 건수 선택지 — 프로토타입 파일 표(`AppDataGrid`)와 같다.
collection-file-upload-dialog.tsx이력84.5%오늘 · #2189컴포넌트관리자 안내 머리의 `갱신자 · ` 접두 — `이름(사번)`(결정 20261113-person-label-name-employee-no), 이름이 없으면 사번, 둘 다 없으면(갱신자 기록 전 저장분) 빈 문자열.
collection-file-viewer.tsx이력테스트100.0%오늘 · #2168컴포넌트미리볼 수 없는 파일(409 `COLLECTION_FILE_PREVIEW_UNAVAILABLE`) 안내 — PDF 로 바꾸지 않는 형식(txt·md·csv 등)이거나 미리보기를 만들지 못했다.
collection-form-dialog.tsx이력72.7%6일 전 · #1939컴포넌트컬렉션 설명 수정 폼.
collection-search-results.tsx이력테스트87.5%오늘 · #2189컴포넌트쪽 번호·쪽 크기를 화면이 쥘 때 넘긴다 — 두 지식컬렉션 화면은 URL search param 에 싣는다(결정 20261019-list-filter-url-state).
collection-upload-progress.tsx이력테스트100.0%컴포넌트파일 표 위 업로드 요약 한 줄 — 파일마다 임시 행을 붙이지 않고 진행을 숫자로 보인다 (결정 20261030-collection-upload-progress-summary).
collection-upload-rejection-notice.tsx이력100.0%컴포넌트`추가하지 못한 파일` — 고르는 순간 거른 파일을 사유별로 묶어 보인다(프로토타입 `FileUploadRejectionNotice`).
console-access-guard.tsx이력100.0%6일 전 · #1939컴포넌트콘솔 공통 접근 가드.
console-access-undecided.tsx이력100.0%6일 전 · #1939컴포넌트메뉴 권한을 아직 판정하지 못한 동안의 본문 자리 — `ConsoleAccessGuard` 가 화면 본문 대신 그린다.
console-switcher.tsx이력100.0%컴포넌트User ↔ Admin 콘솔 전환 (프로토타입 LNB 상단의 전환 버튼 패턴을 재작성).
content-page.tsx이력테스트100.0%3일 전 · #2051컴포넌트설명 주석 없음
folder-cascade-select.tsx이력100.0%컴포넌트폴더 구조 검색의 단계별 select — 대분류부터 한 단계씩 이어지는 select 를 그리고, 하위 폴더가 없는 단계에서 멈춘다.
folder-path-chips.tsx이력테스트100.0%컴포넌트폴더 경로 칩 — 파일 메타 정보(폴더 구조)의 표시.
hint-tooltip.tsx이력테스트100.0%2일 전 · #2106컴포넌트글자가 말줄임으로 잘렸는가 — 트리거 안 첫 요소(말줄임 글자)가 있으면 그것을, 없으면 트리거를 잰다.
horizontal-scrollbar-height.tsx이력테스트100.0%3일 전 · #2051컴포넌트페이지 가로 스크롤바의 높이를 CSS 변수로 알린다 — 화면 높이에 맞추는 틀(`--app-height`)이 그만큼 줄어, 세로 스크롤이 함께 생기지 않는다 (결정 20261109-screen-min-width).
hospital-search-dialog.tsx이력테스트100.0%오늘 · #2165컴포넌트병원 마스터 검색 창(`병원 찾기`) — 프로토타입 `components/common/hospital-search-modal.tsx`.
knowledge-archive-picker.tsx이력테스트94.4%어제 · #2135컴포넌트지금 고를 수 있는 문서 — 처리가 끝났고 추가 승인 대기·반려가 아닌 것(프로토타입 `isSelectableArchiveFile`).
knowledge-folder-browser.tsx이력86.8%오늘 · #2168컴포넌트지금 보고 있는 자리 — 공간 루트(folderId null)거나 폴더 하나.
knowledge-folder-tree.tsx이력테스트100.0%컴포넌트폴더 트리 — 폴더 하나를 고르는 목록.
log-list-card.tsx이력테스트100.0%오늘 · #2181컴포넌트설명 주석 없음
menu-page-heading.tsx이력테스트100.0%컴포넌트설명 주석 없음
onboarding-guard.tsx이력테스트100.0%6일 전 · #1939컴포넌트3차 가드 — 세션은 있으나 온보딩(부수정보 설정)이 끝나지 않은 사용자를 워크스페이스에서 차단한다.
page-skeleton.tsx이력테스트66.7%3일 전 · #2094컴포넌트화면 첫 진입(`Suspense`) 자리 표시 — 실제 화면의 큰 구조(제목·필터·표·열 구성)를 따른다 (결정 20261105-frontend-query-state-display).
query-boundary.tsx이력테스트100.0%3일 전 · #2094컴포넌트설명 주석 없음
request-error-banner.tsx이력테스트100.0%6일 전 · #1939컴포넌트서버가 문구를 주지 않았을 때의 기본 안내.
route-error-page.tsx이력테스트100.0%컴포넌트라우트 404와 오류 경계가 공유하는 안내.
session-timer.tsx이력테스트91.7%컴포넌트만료 경고 창을 띄우고 타이머 색을 바꾸는 남은 시간 — 연장할 시간을 최소 20초 주라는 WCAG 2.2.1 과 사람의 반응 시간을 고려한 60초(20261008 결정 4항, 프로토타입 `SESSION_WARNING_SECONDS` 와 같다).
shared-target-picker.tsx이력98.2%어제 · #2135컴포넌트전환 요청·승인이 보내는 공용 대상 — 기존 폴더 또는 새 폴더(위치 + 이름).
workspace-nav-brand.tsx이력100.0%컴포넌트LNB 상단 — 로고·콘솔 이름(홈 링크)과 한 줄 설명.
workspace-nav-collapsible-text.tsx이력100.0%컴포넌트접히면 폭과 투명도가 0 으로 줄어드는 LNB 텍스트.
workspace-nav-group-flyout.tsx이력91.7%컴포넌트접힌 LNB 의 그룹 — 아이콘 하나만 보이는 레일에서 그룹의 하위 화면 전체로 가는 길.
workspace-nav-group.tsx이력100.0%오늘 · #2180컴포넌트주소의 단계 탭(`?tab=`)을 읽어 그룹에 넘긴다.
workspace-nav-label.tsx이력100.0%컴포넌트사이드바 폭이 바뀌는 동안 줄바꿈 높이가 튀지 않도록 펼친 폭에서 글자를 배치한다.
workspace-nav-menu-item.tsx이력88.9%오늘 · #2180컴포넌트메뉴 오른쪽 숫자 뱃지 — 건수와 화면 읽기 프로그램이 읽을 설명(예: `승인 대기 3건`).
workspace-nav-menu-list.tsx이력100.0%컴포넌트권한 API 로 받은 메뉴 트리를 그린다 — 로딩·실패·빈 상태까지 한 곳에서 가른다.
workspace-nav-menu-state.tsx이력80.0%컴포넌트메뉴 로딩 — 행 모양 스켈레톤으로 자리를 잡고, 스크린리더에는 상태 문구를 읽어 준다.
workspace-nav-recent.tsx이력테스트100.0%6일 전 · #1939컴포넌트LNB `최근 항목` 후보 수 — 프로토타입과 같이 사용 내역의 상위 10건.
workspace-nav-tooltip.tsx이력테스트88.9%컴포넌트접힌 LNB 의 아이콘 전용 항목에 붙이는 툴팁.
workspace-nav-user-card.tsx이력100.0%컴포넌트사용자 카드는 실제 세션 정보를 표시하고, 콘솔 구분은 작은 브랜드 표식으로만 표현한다.
workspace-nav.tsx이력테스트97.7%오늘 · #2180컴포넌트LNB — 프로토타입 사이드바의 공통 프레임과 접기 동작을 따른다.
workspace-route-error.tsx이력테스트100.0%컴포넌트콘솔(`/user`·`/admin`) 안쪽 오류 경계가 그리는 본문 안내.
workspace-shell.tsx이력테스트100.0%3일 전 · #2051컴포넌트앱 쉘 프레임 — LNB + 본문.
analysis-condition-contract.test.tsx이력3일 전 · #2080테스트분석 조건 모달 — 계약 카드
brand-tokens.test.ts이력테스트브랜드 색 토큰화
knowledge-archive-picker-expansion.test.tsx이력테스트행 표기·접힘과 파일 목록 조회
use-menu-name.ts이력100.0%훅LNB와 화면 헤더가 같은 권한 API menuName을 단일 원천으로 쓰게 한다.

components/common/analysis-condition/5GitHub

application-questions.tsx이력100.0%어제 · #2135컴포넌트청약서 폼 설정 조회의 상태 — 받기 전·실패·준비.
contract-card.tsx이력100.0%어제 · #2135컴포넌트약관 칸의 `공시실에서 찾기 ↗` 동작 — 사고조사 건의 공시실 링크 훅(`useDisclosureRoom`)이 준다.
disclosure-section.tsx이력100.0%어제 · #2135컴포넌트설명 주석 없음
exclusion-table.tsx이력100.0%3일 전 · #2080컴포넌트설명 주석 없음
parts.tsx이력100.0%3일 전 · #2080컴포넌트계약 정보 입력 — 값이 없으면 `누락`, 조사자가 적으면 `수기` 뱃지(자동 채움 원천은 아직 없다).

components/common/document-viewer/8GitHub

document-content.ts이력테스트100.0%모듈브라우저가 보여 줄 수 있는 방식 — PDF 는 한 장씩 그리고, 텍스트는 본문을 읽어 보이고, 그 밖은 내려받기로 안내한다.
pdf-document.ts이력테스트100.0%모듈PDF 원본을 pdf.js 문서로 연다 — 미리보기 뷰어가 페이지 수를 알고 한 장씩 그리기 위해서다.
pdf-page-image.ts이력테스트100.0%모듈PDF 응답인지 — `blob.type` 의 매개변수(`; charset=…`)는 무시한다.
document-viewer-dialog.module.css이력스타일설명 주석 없음
document-view-button.tsx이력테스트100.0%4일 전 · #2035컴포넌트표 행 안의 `문서 보기` 버튼 — 문서 뷰어(`DocumentViewerDialog`)를 여는 자리에서 모두 같은 모양으로 쓴다.
document-viewer-dialog.tsx이력테스트92.2%2일 전 · #2100컴포넌트문서 뷰어 대화상자 — 프로토타입 `DocumentViewerModal` 과 같은 껍데기다.
source-highlights.tsx이력테스트100.0%컴포넌트근거의 쪽 안 위치를 쪽 위에 형광펜으로 칠한다(기획 7/24·8/07 「근거를 누르면 해당 문서가 하이라이트」).
viewer-loading.tsx이력100.0%2일 전 · #2100컴포넌트문서·이미지 뷰어가 파일을 받거나 그리는 동안 보이는 문구 — 어느 뷰어든 같다.

components/common/markdown/1GitHub

chat-markdown.tsx이력테스트72.7%4일 전 · #2052컴포넌트에이전트 답변을 마크다운으로 그린다(표·취소선·작업 목록은 GFM).

components/common/summary/16GitHub

dock-tab-alert.ts이력100.0%모듈패널 본문이 자기 탭 제목에 빨간 점을 달거나 거두는 자리 — 요약 도킹이 준다.
summary-card-order.ts이력테스트100.0%5일 전 · #1972모듈요약 카드 순서 — 구역마다 조사자가 끌어 바꾼 카드 순서를 이 브라우저에 둔다(프로토타입 `hwa:summary:layout:v1` 의 `columns.<구역>.cardOrder` 와 같은 모양).
summary-groups.ts이력테스트100.0%4일 전 · #2052모듈AI 보고서 마지막 `요약` 탭 — 요약 그룹마다 1회 부른 요약(파이프라인 v2 곁가지)의 구획을 화면이 읽는 규칙.
summary-item-path.ts이력테스트100.0%4일 전 · #2049모듈요약 항목 라벨의 묶음 경로 — 백엔드 투영기는 프로토타입 골격 타입 기반 표시(`summary-output-json.ts` `typeOnlyCards`)의 자식 카드를 「자식 제목 · 라벨」 한 줄 라벨로 싣는다(예: `구간 1 · 초진일자`, `구간 1 · 항목 1 · 내용`).
summary-source-selection.ts이력테스트100.0%6일 전 · #1940모듈화면에 하나뿐인 `요약 근거` 선택 — 활성(주황) 칩·고른 행과 떠 있는 근거 미리보기 창은 화면 전체에서 하나다 (화면 기준선 「AI 보고서」, 프로토타입 `analysis-result-columns.tsx` 의 선택 이벤트·`workspace-client.tsx` 의 미리보기 하나).
summary-sources.ts이력테스트100.0%4일 전 · #2052모듈요약 결과(`GET .../summary-results/latest`)의 항목 출처를 화면이 읽는 규칙 — 순수 계산만 둔다.
summary-stage.ts이력100.0%3일 전 · #2079모듈요약 구역·카드·항목을 그리는 순수 규칙 — 사용자 콘솔 요약 센터와 관리자 사고조사 Workflow 실행 테스트 결과가 같이 쓴다.
knowledge-source-button.tsx이력테스트100.0%5일 전 · #1975컴포넌트요약 근거 중 지식컬렉션 파일 — 누르면 공통 컬렉션 파일 뷰어(미리보기 · 원본 `다운로드`)를 연다 (결정 20261016-summary-reference-knowledge-download).
report-change-highlight.tsx이력테스트100.0%7일 전 · #1909컴포넌트직전 `AI 보고서 반영`에서 달라진 요약 줄 표시(결정 20261008 3·4항).
source-kind-icon.tsx이력테스트100.0%5일 전 · #1975컴포넌트근거 창 머리 왼쪽 아이콘 — 출처 종류마다 다르다(결정 20261107-source-viewer-unify).
summary-groups-panel.tsx이력테스트100.0%4일 전 · #2052컴포넌트AI 보고서 마지막 `요약` 탭 — 요약 그룹마다 1회 부른 요약을 카드로 나누지 않고 한 묶음으로 보인다(프로토타입 `summary-dock-layout` 의 `StudioSummaryPanel`, 결정 20261019-studio-summary-tab-doc-groups 6항).
summary-quote-area.tsx이력테스트100.0%컴포넌트요약 근거 창의 `요약에 사용된 근거 영역` 상자 — 머리(제목·위치 칩)와 근거 문구.
summary-section-dock.tsx이력테스트91.2%3일 전 · #2079컴포넌트도킹에 올리는 패널 하나 — 요약 구역이든 초안 구역이든 제목과 본문만 있으면 된다.
summary-section-panel.tsx이력테스트95.1%2일 전 · #2130컴포넌트섹션 패널이 화면에서 요구하는 조치 — 검수 단계에서만 값이 있다.
summary-source-menu.tsx이력테스트100.0%2일 전 · #2100컴포넌트근거 미리보기가 낱장 원본 이미지를 받을 길 — 사고조사 건을 아는 화면(요약 센터·`AI 보고서 다시 보기` 창)이 접수번호를 닫아 한 번 내려 준다(구역·카드·항목마다 넘기지 않는다).
use-reflection-draft.ts이력테스트100.0%3일 전 · #2055훅`항목 선택` 창의 체크 초안 — 누른 체크는 이 훅의 상태로 바로 보이고, 저장은 뒤에서 묶어 보낸다.

components/

components/user · admin/GitHub

콘솔별 공용

components/admin/4GitHub

Admin Console 공용 — 관리자 접근 가드, 초안 저장 알림 등.

admin-access-guard.tsx이력테스트100.0%6일 전 · #1939컴포넌트관리자 콘솔 접근 가드 — `/admin`은 첫 구현된 허용 메뉴로 보내고, 허용 메뉴가 하나도 없으면 콘솔 차단 안내를, 현재 URL을 소유한 메뉴가 허용되지 않았으면 메뉴 차단 안내를 보여준다.
admin-shell.tsx이력0.0%컴포넌트Admin Console 쉘 — 프레임은 공통, 콘솔 구분만 준다.
draft-save-actions.tsx이력테스트100.0%4일 전 · #2035컴포넌트관리자 설정 화면의 "변경 취소 / 저장" 버튼 쌍 (`PageHeading` 의 `actions` 에 넣는다).
draft-save-notices.tsx이력테스트100.0%컴포넌트관리자 설정 화면의 저장 결과 배너 묶음 — 실패 → 성공 → 미저장 경고 순서.

components/user/2GitHub

User Console 공용 — 쉘·접근 가드, 사고조사·챗봇 공용 코드(팝업 route 도 여기서 함께 쓴다).

user-access-guard.tsx이력테스트100.0%6일 전 · #1939컴포넌트사용자 콘솔 진입·메뉴 URL 접근을 `/menu-permissions/my`의 USER 메뉴 합집합으로 제한한다.
user-shell.tsx이력0.0%컴포넌트User Console 쉘 — 프레임은 공통, 콘솔 구분만 준다.

components/user/chat/14GitHub

attachment-notices.ts이력테스트100.0%모듈첨부 머리줄 경고 알약 한 건 — 짧은 문구는 알약에, 전체 문구는 그 툴팁에 보인다.
attachments.ts이력테스트98.6%2일 전 · #2110모듈에이전트 채팅 첨부 규칙 — WBS 5.1.3.
chat-delete.ts이력테스트100.0%모듈삭제 대상 질문 하나 — 첨부 수·쪽수와 반영 여부만 쓴다
knowledge-pickable-files.ts이력100.0%모듈컬렉션 → 그 컬렉션의 선택 가능한(처리 완료) 문서 id — 문서보관함 팝업과 같은 기준이다.
chat-active-attachments.tsx이력100.0%2일 전 · #2110컴포넌트입력창 위 왼쪽 — 대화가 지금 참조 중인 첨부와 대화 누적 쪽수.
chat-attachment-list.tsx이력100.0%2일 전 · #2107컴포넌트컴포저 안의 첨부 목록 — 프로토타입 `ChatAttachmentList`(비 compact)와 같은 구성이다: 머리줄(`첨부` · `N쪽 / 100쪽`), 형식 배지가 붙은 파일 칩(파일명·`크기 · N쪽`·삭제 — 쪽수를 모르면 크기만), 사유별로 묶은 거절 안내.
chat-attachment-source-viewer.tsx이력테스트100.0%5일 전 · #1975컴포넌트첨부 근거의 원본(Studio 변환 PDF)을 받는 함수 — 범용 대화와 사고조사 대화가 경로만 달리 넘긴다.
chat-context-gauge.tsx이력100.0%컴포넌트입력창 폭의 대화 용량 막대 — 상태 글자와 함께 보이고, 안내 비율부터 색 띠에 `여기서 이어 가기` 를 둔다(결정 20261102).
chat-delete-dialog.tsx이력83.3%4일 전 · #2037컴포넌트대화 삭제 확인 모달 — 에이전트 대화·사고조사 챗봇 공용.
chat-sent-attachments.tsx이력100.0%2일 전 · #2110컴포넌트보낸 질문 아래에 남는 첨부 — 대화를 다시 열어도 「어떤 파일을 붙여 물었는지」가 보이게 한다.
chat-source-viewer.tsx이력테스트94.1%2일 전 · #2100컴포넌트답변 근거 뷰어 — 근거가 가리키는 **쪽에서** 문서를 연다.
use-attachment-picker.ts이력100.0%훅질문 입력창의 첨부 고르기 — 고른 파일을 화면 규칙으로 거르고, 서버 사전 검사를 거쳐 목록에 올린다.
use-auto-grow-textarea.ts이력테스트100.0%6일 전 · #1931훅입력칸 높이를 글에 맞춘다 — `minHeight`~`maxHeight`(테두리 포함 px).
use-knowledge-document-count.ts이력테스트100.0%4일 전 · #2040훅챗봇 지식컬렉션 칩의 숫자 — 저장된 범위가 뜻하는 **문서 수**(결정 20261109-chat-knowledge-count-documents).

components/user/investigation/18GitHub

extraction-page-regions.ts이력테스트100.0%4일 전 · #2000모듈낱장 하나의 추출 위치 — 보고서 요약 근거 창이 칠한다(결정 20261108).
investigation-chat.ts이력테스트97.4%5일 전 · #1980모듈사고조사 챗봇 독(우측 패널)이 패널 열기·질문 응답을 읽는 규칙 — 결정 20261021-investigation-chat-references-and-reflection, 20261023-investigation-chat-session-structure.
investigator.ts이력테스트100.0%오늘 · #2189모듈담당 조사자 **사번 비교와 표시명 폴백** 한 곳 — 순수 계산만 둔다.
list-status.ts이력테스트100.0%모듈S-004 §4-1·§5 목록 표시 상태(8종) → 라벨·뱃지 톤 매핑.
report-reflection-display.ts이력테스트100.0%모듈사고조사 챗봇 `AI 보고서 반영` 뒤 화면 표시 — 결정 20261008(바뀐 줄 하이라이트)·20261020(`변경 전 보기`).
summary-groups.ts이력모듈요약 그룹 구획 규칙은 사용자 콘솔과 관리자 실행 테스트가 같이 쓰는 공통 모듈로 옮겼다 — 이 파일은 route 안의 import 경로를 유지하는 재export 다(`lib/collections/queries` 와 같은 방식).
view-access.ts이력테스트100.0%오늘 · #2189모듈워크스페이스의 **조회 권한** 판정 한 곳 — 순수 계산만 둔다.
workflow-progress.ts이력테스트100.0%어제 · #2137모듈워크플로우 진행 상태(`GET .../workflow-progress`) 를 화면이 읽는 규칙 — 순수 계산만 둔다.
workflow-status.ts이력테스트100.0%4일 전 · #2007모듈화면 글로벌 상태 11종·위험 서브 상태 6종 → 라벨·뱃지 톤 매핑.
workspace-pages.ts이력테스트100.0%모듈문서함 낱장을 뷰어가 다루는 형태로 펴는 순수 계산 — 화면 상태는 없다.
access-denied-notice.tsx이력100.0%컴포넌트조회 권한 때문에 막힌 조회의 안내 카드 — 오류 배너가 아니라 **안내**다.
report-snapshot.tsx이력94.7%2일 전 · #2124컴포넌트요약 구역을 도킹 패널로 — 두 단계(요약 화면·다시 보기 창)가 같은 변환을 쓴다.
result-query-gate.tsx이력테스트100.0%3일 전 · #2094컴포넌트결과 조회의 **로딩 → 산출 전(404) → 실패 → 성공** 분기.
result-skeletons.tsx이력100.0%3일 전 · #2094컴포넌트분류 확인(N05)·추출 완료(N06) 센터 — 가운데 정렬된 결과 카드(아이콘 원·제목·집계·안내·버튼).
queries.ts이력98.9%2일 전 · #2113쿼리저장된 삭제로 문서함에서 빠진 낱장 — 화면이 제자리에 `삭제 예정` 으로 되돌려 그린다(NR01·NR02).
queries.page-image.test.ts이력테스트investigationWorkspaceQueries.pageImage
queries.summary-groups.test.ts이력테스트investigationWorkspaceQueries.summaryGroupsLatest
use-summary-page-files.ts이력테스트100.0%4일 전 · #1999훅요약 근거 목록의 낱장 표(파일명·쪽·AI 분류라벨)를 만든다.

lib · 보조

lib/GitHub

유틸·API 클라이언트·세션

lib/4GitHub

유틸과 여러 화면이 함께 쓰는 쿼리(세션·위탁사·컬렉션·챗봇 등).

env.ts이력0.0%2일 전 · #2114모듈환경변수 검증 — 잘못된 값·오타는 기동 시점에 바로 실패시킨다.
json-diff.ts이력테스트100.0%모듈프로토타입 `lib/json-diff.ts` 를 그대로 옮겼다(결정 20261008 6항 — 프론트엔드 이관 시 그대로 옮긴다).
utils.ts이력테스트100.0%모듈설명 주석 없음

lib/api/9GitHub

API 클라이언트(ky) 단일 진입점, 응답 봉투·오류, QueryClient, OpenAPI 생성 타입.

client.ts이력테스트96.6%6일 전 · #1932모듈API 클라이언트 단일 진입점 — docs/decisions/20260810-frontend-auth-and-api-client.md 모든 queryFn은 fetch를 직접 쓰지 않고 이 파일의 apiGet/apiPost/apiPatch/apiDelete만 사용한다.
cross-tab-lock.ts이력테스트93.3%모듈토큰 재발급을 브라우저의 모든 탭에서 한 번에 하나씩 하게 한다 (결정 20261104-auth-refresh-cross-tab-lock).
envelope.ts이력테스트100.0%모듈docs/rules/api.md 표준 응답 구조(success/data/error)의 파싱과 오류 변환.
error-message.ts이력테스트100.0%모듈API 오류를 화면 문구로 옮긴다.
query-client.ts이력테스트100.0%모듈서버가 메뉴 권한이 없다고 거절한 API 의 오류 코드(20261012 메뉴별 API 인가).
session-activity.ts이력테스트100.0%모듈세션 활동 알림 — 사람이 일으킨 API 호출이 끝날 때마다 세션 타이머에 알린다(20261008 결정 2·3항).
single-flight.ts이력테스트100.0%모듈동시에 여러 번 호출돼도 in-flight Promise 하나를 공유하게 만든다.
sort-contract.ts이력테스트100.0%모듈OpenAPI가 생성한 query 타입에 sort·direction이 실제로 있을 때만 서버 정렬 계약을 만든다.
schema.d.ts이력오늘 · #2181생성물pnpm openapi:gen 생성물 — 백엔드 OpenAPI 스냅샷에서 만든 계약 타입. 손으로 고치지 않는다.

lib/auth/6GitHub

세션·로그인·온보딩·내 메뉴 권한 — 두 콘솔이 함께 쓰는 쿼리와 쿠키 이름.

api.ts이력100.0%모듈세션 API 호출 — 백엔드 auth 모듈(20260810 §1 쿠키 계약)의 /api/v1/auth/*.
cookies.ts이력100.0%모듈쿠키 계약: docs/decisions/20260810-frontend-auth-and-api-client.md 백엔드 auth 모듈이 같은 이름으로 발급한다.
query-keys.ts이력100.0%모듈인증 관련 쿼리 키의 공용 접두 — 키를 만드는 쪽(`queries.ts`)과 무효화하는 쪽(권한 관리 저장, API 클라이언트의 권한 오류 처리)이 같은 값을 쓰게 한다.
redirect.ts이력테스트100.0%3일 전 · #2097모듈로그인 후 되돌아갈 경로 정리 — proxy.ts 가드가 붙이는 `?from=` 값을 그대로 믿지 않는다.
sso-host.ts이력테스트100.0%2일 전 · #2114모듈이 접속 주소에서 SSO(사이트마인더)로 로그인시키는지.
queries.ts이력100.0%6일 전 · #1932쿼리세션·메뉴 권한 queryOptions 팩토리.

lib/chat/6GitHub

knowledge-scope.ts이력테스트100.0%4일 전 · #2040모듈한 대화가 물 수 있는 문서 수 상한 — 백엔드 `ChatSessionCreateRequest.MAX_FILES`(임시값, 결정 20261019).
last-used.ts이력테스트100.0%모듈마지막 사용 시각 표기 — LNB `최근 항목`과 사용 내역 화면이 같은 규칙을 쓴다.
messages.ts이력100.0%모듈채팅 메시지를 읽는 공용 규칙 — 범용 에이전트 채팅(`/user/agent`)과 사고조사 챗봇 독 (`/user/investigations/[reportNo]`)이 같은 줄 모양(`ChatMessageView`)을 같은 규칙으로 읽는다.
pending-asks.ts이력테스트97.8%모듈범용 대화의 질문 전송 변이 — 대화 화면과 LNB `최근 항목`이 함께 읽는다(결정 20261030-agent-chat-pending-in-lnb).
usage.ts이력테스트100.0%모듈사용 내역 기본 조회 기간 — 최근 90일(결정 20261023 1항).
queries.ts이력71.4%쿼리채팅 사용 내역 queryOptions — LNB `최근 항목`과 사용자 콘솔 화면이 함께 쓴다.

lib/collection-approvals/1GitHub

queries.ts이력100.0%쿼리이 화면이 쓰는 TanStack Query queryOptions 팩토리.

lib/collection-folders/3GitHub

tree.ts이력테스트88.9%모듈지식컬렉션 폴더 트리의 순수 규칙 — 평평한 목록(`GET /collection-folders`)을 화면이 다루는 모양으로 바꾼다.
url.ts이력100.0%오늘 · #2168모듈지식컬렉션 폴더 브라우저가 보고 있는 자리(공간·폴더)를 URL search param 에 싣는 규칙 — 사용자 콘솔 (`/user/knowledge?space=&folder=`)과 관리자 콘솔(`/admin/knowledge?folder=`)이 같은 이름·같은 해석을 쓴다 (docs/guide…
queries.ts이력94.1%쿼리지식컬렉션 폴더 트리·공용 대상 선택지·등록 안내 — 사용자 콘솔과 관리자 콘솔이 같은 뜻으로 쓴다 (docs/decisions/20261006-knowledge-collection-folder-structure.md).

lib/collections/20GitHub

collection-form.ts이력테스트100.0%모듈지식컬렉션 설명 폼의 입력 규칙.
file-batch-api.ts이력100.0%모듈지식컬렉션 파일 일괄 삭제·재색인 호출 — 표 위 `삭제`·`재색인`(`use-file-batches.ts`)만 쓴다 (docs/decisions/20261021-knowledge-collection-bulk-file-actions.md).
file-bulk-actions.ts이력테스트100.0%3일 전 · #2099모듈지식컬렉션 파일 표의 체크·일괄 버튼 규칙 — 사용자 내 컬렉션 상세와 관리자 공용 컬렉션 상세가 같은 규칙을 쓴다 (docs/decisions/20261021-knowledge-collection-bulk-file-actions.md).
file-display.ts이력테스트100.0%모듈지식컬렉션 파일의 표시 규칙 — 사용자 콘솔(내 컬렉션·공용 컬렉션 상세)과 관리자 콘솔(지식컬렉션 관리)이 같은 파일 표· 파일 추가 모달을 쓰므로 `lib/` 에 둔다(콘솔끼리 import 하지 않는 규칙 — docs/guides/frontend-module-guide.md §4).
file-name.ts이력테스트100.0%모듈파일명 수정은 이름 부분만 고친다 — 확장자는 처음 올린 원본(`originalExtension`)의 것을 고정한다 (docs/decisions/20261019-collection-file-rename-keep-extension.md).
file-selection.ts이력테스트100.0%모듈지식 컬렉션 팝업(문서 단위 선택)의 선택 규칙 — 화면과 떼어 낸 순수 함수.
pickable.ts이력테스트100.0%모듈내 컬렉션·공용 컬렉션 목록을 한 목록으로 합친다 — 내가 올려 승인이 끝난 공용 컬렉션은 두 목록에 모두 오므로 식별자로 한 번만 남긴다.
reference-defaults.ts이력테스트100.0%모듈공용 컬렉션의 위탁사별 참조 기본값 — 관리자 `지식컬렉션 관리` 상세의 `위탁사별 참조 기본값` 탭 (docs/decisions/20261017-admin-knowledge-reference-defaults-tab.md).
search-url.ts이력테스트100.0%모듈지식컬렉션 검색 줄의 조건을 URL search param 에 싣는 규칙 — 사용자 `지식 컬렉션`과 관리자 `지식컬렉션 관리`가 같은 이름을 쓴다 (`docs/guides/frontend-module-guide.md` §6, 결정 20261019-list-filter-url-state).
search.ts이력테스트100.0%모듈사용자·관리자 지식컬렉션 검색 결과가 공유하는 행 계약.
status-display.ts이력테스트100.0%오늘 · #2189모듈지식컬렉션의 상태 표시 규칙 — 사용자 콘솔(목록·상세)과 관리자 콘솔(지식컬렉션 관리)이 같은 어휘를 쓰므로 `lib/` 에 둔다(콘솔끼리 import 하지 않는 규칙 — docs/guides/frontend-module-guide.md §4).
upload-extensions.ts이력테스트100.0%모듈지식컬렉션이 받는 파일 형식 8종(2026-10-21 확정) — 엑셀·PPT 는 PDF 변환 때 표가 잘리거나 변환이 어려워 받지 않고, md·csv 도 받지 않는다(결정 20261013 §1-4, 프로토타입 `lib/file-upload-validation.ts`).
upload-manager.tsx이력테스트99.0%컴포넌트서버에 접수되지 못한 파일 — 서버 행이 없어 파일 표 위 업로드 요약의 실패 목록으로만 보인다.
queries.ts이력100.0%3일 전 · #2099쿼리지식컬렉션 조회·변경 — 사용자 콘솔(내 컬렉션·공용 컬렉션 브라우저)과 관리자 콘솔(지식컬렉션 관리)이 같은 엔드포인트를 같은 뜻으로 쓰므로 `lib/` 에 둔다(두 콘솔이 서로를 import 하지 않는 규칙 — `docs/guides/frontend-module-guide.md` §4).
pickable-search.test.ts이력테스트검색어 일치와 기본 펼침
queries.refetch.test.ts이력3일 전 · #2099테스트detailRefetchInterval
viewer-requests.test.ts이력테스트컬렉션 문서 뷰어 요청 — 10초 timeout 없이 받는다
use-collection-status-refresh.ts이력테스트100.0%3일 전 · #2099훅컬렉션 상세 화면의 반복 조회 — 상세(파일 전체 포함)는 처음 한 번만 받고, 처리 중·설명 생성 중에는 가벼운 상태 (`GET /collections/{id}/status`)만 15초·5초마다 묻는다.
use-file-batches.ts이력테스트100.0%3일 전 · #2099훅표 위 `삭제`·`재색인` 실행 — 사용자 내 컬렉션 상세와 관리자 공용 컬렉션 상세가 같이 쓴다 (docs/decisions/20261021-knowledge-collection-bulk-file-actions.md).
use-file-name-search.ts이력테스트100.0%오늘 · #2168훅검색 줄의 `조회` 가 새로 받는 캐시 — 컬렉션 목록·파일명 검색·폴더 트리(사용자·관리자 화면 공통).

lib/customer-companies/1GitHub

여러 화면이 함께 쓰는 위탁사 목록 쿼리.

queries.ts이력테스트100.0%쿼리위탁사 마스터 조회 — User/Admin 두 콘솔이 함께 쓰는 queryOptions 팩토리.

lib/customer-onboarding/1GitHub

queries.ts이력테스트100.0%오늘 · #2161쿼리위탁사 온보딩 상태 조회 — 관리자 여러 화면(분류체계 매칭·위탁사 워크스페이스·LNB 뱃지)이 함께 쓴다.

lib/diseases/1GitHub

queries.ts이력100.0%6일 전 · #1941쿼리KCD 상병 검색 — 분석 조건 2번 `직접 검색`(결정 20261106 4항).

lib/file/3GitHub

csv-export.ts이력테스트100.0%모듈기준선 「로그 4종 공통 규칙」 의 다운로드 시작 토스트.
download-blob.ts이력100.0%모듈받아 둔 `Blob` 을 파일로 저장한다.
use-csv-export.ts이력테스트100.0%훅관리자 로그 화면의 `CSV 다운로드` 변이 — 내보내기를 부르고 시작·실패 토스트를 띄운다.

lib/filter/2GitHub

필터 초안(입력 중) 상태 훅 — 조회를 눌러야 적용.

use-filter-draft.ts이력테스트100.0%훅검색어를 치다 멈춘 뒤 조회하기까지 기다리는 시간.
use-filter-refresh.ts이력테스트100.0%훅목록 필터의 `조회`·Enter 가 **조건이 같아도** 목록을 새로 받게 한다(결정 `20261019-list-filter-apply-always-refetch`).

lib/format/4GitHub

날짜·시간 입력과 표시 형식.

date-input.ts이력테스트100.0%모듈`<input type="date">` 가 주는 `YYYY-MM-DD` 읽기 — 형식과 달력 유효성만 보는 순수 계산.
date-time.ts이력테스트100.0%오늘 · #2181모듈일시 표시 — ISO 문자열을 사람이 읽는 한국어 표기로 옮기는 순수 계산.
file-size.ts이력테스트100.0%모듈파일 크기 표시 — byte 수를 사람이 읽는 단위로 옮기는 순수 계산.
person.ts이력테스트100.0%오늘 · #2189모듈사람 표시 — 결정 [20261113-person-label-name-employee-no](../../../docs/decisions/20261113-person-label-name-employee-no.md).

lib/guard/2GitHub

소스 텍스트 규칙 검사 테스트.

review-markers.test.ts이력테스트제품 화면 검토용 표기 가드
source-text.test.ts이력테스트프론트 소스 텍스트 가드

lib/hospital-master/1GitHub

hospital-master.ts이력테스트100.0%3일 전 · #2082모듈병원 마스터(`dim_hospitals`)를 읽는 규칙 — 관리자 `병원 명칭 매핑`과 공용 `병원 찾기` 창(`components/common/hospital-search-dialog.tsx`)이 함께 쓴다.

lib/list/1GitHub

log-page-size.ts이력테스트100.0%모듈관리자 로그 표(감사 로그·메일 발송 로그)의 페이지당 건수.

lib/mail-account/1GitHub

queries.ts이력테스트100.0%쿼리메일 발송 계정 상태 — 그 화면과 관리자 LNB 의 기한 경과 `!` 뱃지가 같은 조회를 쓴다.

lib/react/8GitHub

floating-window-drag.ts이력테스트95.7%모듈딤 없는 플로팅 창(요약 근거 미리보기)의 헤더 드래그 이동 — 경계 계산은 순수 함수, 포인터 처리는 훅 한 곳이다.
local-storage-store.ts이력테스트100.0%5일 전 · #1972모듈브라우저 `localStorage` 의 한 키를 `useSyncExternalStore` 로 구독하는 저장소.
use-debounced-state.ts이력테스트100.0%3일 전 · #2082훅단순 검색의 디바운스 시간 — 검색칸 하나로 결과만 바뀌는 자동완성·창 안 검색(`병원 찾기`, 상병 검색, 미매핑 병합 창)이 같은 값을 쓴다.
use-latest-only-mutation.ts이력테스트100.0%훅한 번의 저장 묶음이 끝났을 때의 결과 — 마지막으로 보낸 값과 그 응답.
use-media-query.ts이력테스트100.0%훅미디어 쿼리가 맞는지를 구독한다.
use-object-url-image.ts이력100.0%3일 전 · #2083훅Blob 을 `<img>` 의 object URL 로 잇는다 — 생성과 해제 **둘 다 커밋된 effect 안**에서 한다.
use-reset-on-open.ts이력테스트100.0%훅대화상자가 **열리는 전환에서** 그 안의 파생 상태를 되돌린다.
use-validated-text-field.ts이력테스트100.0%훅대화상자 안의 **글자 하나짜리 입력**이 지키는 세 규칙을 한 곳에 모은다.

lib/test/5GitHub

테스트 도우미 — Query Provider 렌더, 가짜 내비게이션.

expand-workspace.ts이력모듈테스트 전용 — 사고조사 워크스페이스의 상단·스캔 문서함을 펼친다.
fake-navigation.ts이력모듈테스트용 `next/navigation` 대역.
request-counter.ts이력모듈테스트 전용 — 목 서버(MSW)로 나간 요청을 경로로 센다.
render-with-query.tsx이력컴포넌트테스트 전용 렌더 헬퍼 — TanStack Query Provider 로 감싼다.
expected-server-errors.test.ts이력테스트부정 시험의 정확한 5xx 계약

lib/url/5GitHub

화면 조건을 URL search param 에 싣고 읽는 순수 계산과 훅.

back-target.ts이력테스트100.0%모듈「돌아가기」 도착지 — 특정 화면에서 넘어간 화면이 상단 돌아가기로 그 화면에 되돌아가게 한다.
search-params.ts이력테스트100.0%모듈URL search param 다루기 — 화면 조건을 주소에 싣는 순수 계산.
studio-schema-tab.ts이력테스트100.0%모듈사고조사 Workflow(구 에이전트 스튜디오) 스키마 정의 화면의 단계 탭을 주소 `?tab=classify|extract|report` 로 여는 규칙 (결정 20261022-admin-lnb-workspace-workflow 7·8항, 프로토타입 `lib/studio-schema-tab.ts`).
use-back-target.ts이력100.0%훅다른 화면에서 넘어온 화면이면 돌아갈 도착지(조건 포함), 아니면 `undefined`.
use-search-param-nav.ts이력100.0%훅화면 조건을 URL search param 으로 읽고 쓰는 훅.

lib/validation/1GitHub

email.ts이력테스트100.0%모듈이메일 형식 검사 — 서버 `@Email`(Hibernate Validator)이 받는 형식에 맞춘다.

lib · 보조

mocks/GitHub

MSW 핸들러

mocks/10GitHub

MSW 핸들러 — 손으로 쓴 화면 더미(앞)와 계약 생성 스켈레톤(뒤), 브라우저·Node 진입점.

agent-studio-instruct-seed-lotte.ts이력모듈롯데손해보험 보고서 에이전트 Instruct 시드 — 탭(사고경위·사고내용·손해사정서)마다 프롬프트·출력 JSON 골격·보고서 유형별 본문.
agent-studio-instruct-seed-shinhan.ts이력3일 전 · #2066모듈신한라이프 보고서 에이전트 Instruct 시드 — 탭(병원별 요약·사고경위·확인내용·손해사정)마다 프롬프트·출력 JSON 골격·보고서 유형별 본문.
agent-studio-instruct.ts이력6일 전 · #1958모듈에이전트 스튜디오 3단계 INSTRUCT 더미 — 서버가 기동 때 넣는 첫 버전(신한라이프·롯데손해보험 모델팀 원문)과 같은 모양이다 (백엔드 `agent-studio/instruct-seed.json`, 결정 20261021-studio-instruct-db-storage 8항).
agent-studio-studio-configs.ts이력모듈에이전트 스튜디오 「config 버전 선택」 목록 목 — 그 단계 Studio 에이전트의 지시서(Config) 목록(최신이 먼저) (결정 20261029-studio-config-version-list-from-studio).
agent-studio-summary-groups.ts이력모듈에이전트 스튜디오 요약 그룹(`/api/v1/admin/agent-studio/summary-groups`) 목 — 백엔드 시드(V202610220936)와 같은 기본 4그룹.
browser.ts이력모듈브라우저(개발 서버·E2E)용 MSW 워커.
handlers.ts이력테스트오늘 · #2161모듈MSW 핸들러 — 백엔드 API가 준비되기 전 개발·테스트용 목 응답.
sample-pdf.ts이력모듈목 전용 — 실제로 열리는 작은 PDF 를 만든다.
server.ts이력모듈Node(Vitest)용 MSW 서버.
handlers.generated.ts이력테스트오늘 · #2161생성물pnpm openapi:gen 생성물 — 모든 엔드포인트의 MSW 계약 스켈레톤. 손으로 고치지 않는다.

lib · 보조

e2e/GitHub

Playwright 스모크·수용 시나리오

e2e/23GitHub

Playwright E2E — 가드·API 레이어·핵심 흐름 스모크, features/ 수용 시나리오, 실제 백엔드(real)·실서류(realdata) 스펙.

admin-approval-center.spec.ts이력E2ELNB 의 지식컬렉션 승인 메뉴로 승인 대기함에 들어간다
admin-filter-url-sync.spec.ts이력E2E감사 로그 — 조회한 조건과 쪽 번호가 주소에 실리고 새로고침해도 유지된다
admin-knowledge.spec.ts이력E2ELNB 의 지식컬렉션 관리 메뉴로 공용 폴더 브라우저에 들어간다
admin-mail-account.spec.ts이력오늘 · #2181E2E설정만 저장하면 비밀번호 이력 없이 최신 SMTP와 반영 상태를 표시한다
admin-organization-roles.spec.ts이력오늘 · #2189E2E사용자 레벨을 더하고 메뉴를 닫으면 목록의 보유 레벨이 갱신된다
admin-unmapped-queue.spec.ts이력오늘 · #2168E2E관리자 홈의 진입 링크로 미매핑 큐에 들어가 병원 원문값을 기존 마스터로 병합한다
analysis-condition-question-toggle.spec.ts이력어제 · #2136E2E청약서 질문의 고지 대상을 끄고 켜도 분석 조건 팝업은 제자리에 보인다
investigation-list.spec.ts이력E2E초기 테이블은 컨테이너 너비를 넘지 않는다
investigation-workspace.spec.ts이력오늘 · #2170E2E목록에서 건을 고르면 워크스페이스가 열린다
login.spec.ts이력E2E로그인하면 원래 가려던 화면과 앱 쉘이 보인다
onboarding.spec.ts이력7일 전 · #1868E2E헤더에는 사용자 컨테이너만 있고, 안내 박스·하단 안내가 보이며 두 입력이 있어야 등록할 수 있다
screen-min-width.spec.ts이력3일 전 · #2051E2E일반 화면은 1180px 아래에서 줄지 않고 가로로 스크롤한다
search-input-placeholder.spec.ts이력2일 전 · #2096E2E${screen.path} — ${width}px 창에서 검색칸 placeholder 가 잘리지 않는다
smoke.spec.ts이력E2E미인증 접근은 /login으로 리다이렉트된다
user-agent-knowledge.spec.ts이력E2E컬렉션 체크는 그 컬렉션의 선택 가능한 문서 전체를 골라 칩에 문서 수가 보인다
user-collections.spec.ts이력오늘 · #2168E2E트리에서 고른 폴더가 URL 에 실리고 새로고침해도 유지된다
base-url.ts이력모듈E2E 대상 dev 서버 주소 — 설정(playwright.config.ts)과 스펙의 쿠키 주소가 같은 값을 쓴다.
claim-hospital-pick.ts이력2일 전 · #2101모듈분석 조건 2번 `청구병원 및 대표 상병` 필수 입력 — 후보가 있으면 병원 1곳을 켜고 그 병원의 대표 상병 1건을 고른다 (결정 20261106 「추가 (2026-11-10)」: 병원 1곳 이상, 켠 병원마다 상병 필수, 후보가 없으면 면제).
coverage-options.mjs이력모듈E2E 커버리지 설정 — 스펙 fixture(e2e/test.ts)와 리포트 스크립트(scripts/e2e-coverage-report.mjs)가 같은 값을 쓴다.
global-setup.ts이력모듈E2E_COVERAGE=1 이면 지난 실행의 커버리지 캐시를 지우고 시작한다 — 브라우저(fixture)·서버(NODE_V8_COVERAGE) 모두.
page-row-actions.ts이력5일 전 · #1992모듈행 조치 버튼 — 접근성 이름이 `label` 과 같은(`prefix` 면 그것으로 시작하는) 버튼.
test.ts이력모듈스펙은 @playwright/test 대신 여기서 test 를 가져온다.
workspace-collapse.ts이력모듈지금 접혀 있는 쪽만 펼친다.

e2e/admin-knowledge/5GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/agent-chat-delete/4GitHub

README.md이력6일 전 · #1957문서설명 주석 없음
run.py이력6일 전 · #1957파일설명 주석 없음
studio_proxy.py이력6일 전 · #1957파일설명 주석 없음
test_proxy.py이력6일 전 · #1957파일설명 주석 없음

e2e/analysis-conditions/5GitHub

test_result_comparison.mjs이력모듈설명 주석 없음
README.md이력2일 전 · #2101문서설명 주석 없음
prepare.py이력6일 전 · #1957파일설명 주석 없음
run.py이력6일 전 · #1957파일설명 주석 없음
seed.sql이력6일 전 · #1957파일설명 주석 없음

e2e/application-forms/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/audit-logs/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/classification-mapping/5GitHub

README.md이력오늘 · #2180문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/client-workspace/5GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/collection-approval/3GitHub

fixture.ts이력모듈권한·승인 상태는 실제 API로만 만든다.
README.md이력6일 전 · #1957문서설명 주석 없음
run.py이력6일 전 · #1957파일설명 주석 없음

e2e/collection-viewer/7GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력파일설명 주석 없음
states.sql이력파일설명 주석 없음
studio_environment.py이력4일 전 · #2002파일설명 주석 없음
test_studio_environment.py이력파일설명 주석 없음

e2e/features/41GitHub

admin-agent-studio.feature이력2일 전 · #2112파일설명 주석 없음
admin-approval-center.feature이력파일설명 주석 없음
admin-classification-mapping.feature이력파일설명 주석 없음
admin-client-workspace.feature이력2일 전 · #2106파일설명 주석 없음
admin-dashboard-service-status.feature이력파일설명 주석 없음
admin-dashboard-system-cards.feature이력3일 전 · #2072파일설명 주석 없음
admin-hospital-aliases.feature이력파일설명 주석 없음
admin-knowledge.feature이력파일설명 주석 없음
admin-mail-account.feature이력파일설명 주석 없음
admin-organization-changes.feature이력파일설명 주석 없음
admin-organization-permissions.feature이력파일설명 주석 없음
admin-report-disposal-logs.feature이력파일설명 주석 없음
admin-report-send-logs.feature이력파일설명 주석 없음
admin-statistics-unmapped.feature이력파일설명 주석 없음
agent-chat-delete.feature이력파일설명 주석 없음
agent-chat-knowledge.feature이력파일설명 주석 없음
common-error-pages.feature이력파일설명 주석 없음
investigation-analysis-conditions.feature이력파일설명 주석 없음
investigation-analysis-knowledge.feature이력파일설명 주석 없음
investigation-list.feature이력파일설명 주석 없음
investigation-report-before-change.feature이력6일 전 · #1950파일설명 주석 없음
investigation-report-snapshot.feature이력6일 전 · #1950파일설명 주석 없음
investigation-workspace-chat-attachments.feature이력파일설명 주석 없음
investigation-workspace-chat-delete.feature이력파일설명 주석 없음
investigation-workspace-chat-knowledge.feature이력파일설명 주석 없음
investigation-workspace-chat-sources.feature이력파일설명 주석 없음
investigation-workspace-classification.feature이력오늘 · #2181파일설명 주석 없음
investigation-workspace-extraction.feature이력어제 · #2147파일설명 주석 없음
investigation-workspace-intake.feature이력오늘 · #2170파일설명 주석 없음
investigation-workspace-report-send.feature이력파일설명 주석 없음
investigation-workspace-summary.feature이력7일 전 · #1898파일설명 주석 없음
investigation-workspace-transition-lock.feature이력2일 전 · #2103파일설명 주석 없음
knowledge-collections.feature이력파일설명 주석 없음
login.feature이력3일 전 · #2097파일설명 주석 없음
profile.feature이력파일설명 주석 없음
usage-history.feature이력파일설명 주석 없음
workspace-classification-bulk.feature이력오늘 · #2181파일설명 주석 없음
workspace-document-box-view.feature이력파일설명 주석 없음
workspace-extraction-classification-edit.feature이력파일설명 주석 없음
workspace-extraction-confirm.feature이력4일 전 · #2017파일설명 주석 없음
workspace-intake-editing.feature이력파일설명 주석 없음

e2e/features/real/4GitHub

investigation-list.feature이력파일설명 주석 없음
investigation-workspace.feature이력오늘 · #2170파일설명 주석 없음
knowledge-collection-upload.feature이력파일설명 주석 없음
mail-dispatch-log.feature이력파일설명 주석 없음

e2e/full-journey/15GitHub

README.md이력3일 전 · #2069문서설명 주석 없음
document.py이력3일 전 · #2069파일설명 주석 없음
journey_control.py이력5일 전 · #1967파일설명 주석 없음
journey_resources.py이력3일 전 · #2069파일설명 주석 없음
requirements.txt이력5일 전 · #1967파일설명 주석 없음
run.py이력3일 전 · #2069파일설명 주석 없음
schema.json이력3일 전 · #2069파일설명 주석 없음
studio_failure.py이력5일 전 · #1967파일설명 주석 없음
studio_selection.py이력4일 전 · #2002파일설명 주석 없음
test_control.py이력5일 전 · #1967파일설명 주석 없음
test_delivery.py이력5일 전 · #1967파일설명 주석 없음
test_document.py이력3일 전 · #2069파일설명 주석 없음
test_reporting.py이력5일 전 · #1967파일설명 주석 없음
test_studio_failure.py이력5일 전 · #1967파일설명 주석 없음
test_studio_selection.py이력4일 전 · #2002파일설명 주석 없음

e2e/hospital-aliases/5GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/image-system-integration/7GitHub

control.py이력6일 전 · #1927파일설명 주석 없음
proxy.py이력3일 전 · #2069파일설명 주석 없음
requirements.txt이력파일설명 주석 없음
resources.py이력6일 전 · #1927파일설명 주석 없음
run.py이력6일 전 · #1927파일설명 주석 없음
settings.py이력파일설명 주석 없음
test_integration_tools.py이력3일 전 · #2069파일설명 주석 없음

e2e/investigation-list/3GitHub

README.md이력6일 전 · #1957문서설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력6일 전 · #1957파일설명 주석 없음

e2e/login/5GitHub

README.md이력3일 전 · #2097문서설명 주석 없음
control.py이력파일설명 주석 없음
run.py이력3일 전 · #2097파일설명 주석 없음
sso_proxy.py이력파일설명 주석 없음
test_support.py이력파일설명 주석 없음

e2e/mail-account/7GitHub

README.md이력문서설명 주석 없음
directory.sql이력파일설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
smtp_server.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음
test_smtp.py이력파일설명 주석 없음

e2e/organization/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/permissions/4GitHub

README.md이력6일 전 · #1957문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력6일 전 · #1957파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/real/3GitHub

mode.ts이력모듈배포 이미지·실제 백엔드를 대상으로 도는 중인가(pnpm test:e2e:real).
README.md이력문서설명 주석 없음
run-e2e-real.sh이력파일설명 주석 없음

e2e/realdata/25GitHub

journey.spec.ts이력어제 · #2145E2E실서류 사건 여정
capture.ts이력모듈지금 화면을 찍어 `<group>/<key>/<prefix><seq>-<label>.jpg` 로 남기고 주석(`shot` = 파일|라벨)을 단다 — 정제 리포터가 요약에 싣는다.
diagnostics.ts이력모듈실패 진단 폴더 이름 — 사건 여정 `case-NN`, 화면 순회 `<스펙 파일>-<테스트 해시 8자>`.
journey-actions.ts이력어제 · #2145모듈서버 처리가 끝날 때까지(일하는 중 상태를 벗어날 때까지) 기다린다.
results.ts이력모듈API 본문 → 비교용 값.
sanitized-reporter.ts이력5일 전 · #1967모듈실패 진단 묶음 표시 — `failures/<회차>/<key>/`.
situation.ts이력테스트모듈사건 상황 지문 — 사건 여정이 단계마다 센 건수(미분류·저신뢰 분류·저신뢰 추출·요약 기관 수·추가 전송)를 묶어 상황 id 로 만든다.
README.md이력5일 전 · #1997문서설명 주석 없음
copy_instruct.sh이력파일설명 주석 없음
failure_bundle.py이력파일설명 주석 없음
golden.py이력파일설명 주석 없음
pick_cases.py이력파일설명 주석 없음
run-realdata.sh이력5일 전 · #1997파일설명 주석 없음
scenario-sets.json이력파일설명 주석 없음
seed_cases.py이력5일 전 · #1986파일설명 주석 없음
server_log_summary.py이력5일 전 · #1979파일설명 주석 없음
studio_fingerprint.sh이력파일설명 주석 없음
test_failure_bundle.py이력파일설명 주석 없음
test_golden.py이력파일설명 주석 없음
test_pick_cases.py이력파일설명 주석 없음
test_project_selection.py이력5일 전 · #1978파일설명 주석 없음
test_seed_cases.py이력6일 전 · #1965파일설명 주석 없음
test_testbench_extra.py이력파일설명 주석 없음
testbench_extra.py이력파일설명 주석 없음
wf-coverage-dump.sh이력파일설명 주석 없음

e2e/realdata/screens/13GitHub

access.spec.ts이력오늘 · #2168E2E일반 사용자 화면의 왼쪽 메뉴에는 관리자 콘솔 이동 버튼이 없다
account.spec.ts이력7일 전 · #1920E2E로그인
admin-ops.spec.ts이력오늘 · #2189E2E통계 대시보드 — 카드 조회·조건·동시 요청 한도·업무 데이터 탭
admin-taxonomy.spec.ts이력오늘 · #2180E2E위탁사 Workspace — 위탁사를 골라 전송 방식을 바꿨다 되돌린다
agent-essential.spec.ts이력E2E에이전트 채팅 로그인 전 접근
agent-studio.spec.ts이력5일 전 · #1985E2E문서 분류 체계에 2depth 문서종을 추가하고 저장한다
agent.spec.ts이력5일 전 · #1984E2E로그인 전 접근
investigation-list.spec.ts이력E2E로그인 전 접근
knowledge-validation.spec.ts이력오늘 · #2168E2E같은 폴더의 기존·동시 선택 파일명은 공백·대소문자·한글 정규화가 달라도 중복으로 막힌다
knowledge.spec.ts이력오늘 · #2168E2E로그인 전 접근
workspace-viewer.spec.ts이력E2E건 화면 문서 뷰어 — 낱장을 열어 다음·이전으로 넘기고 문서함 선택이 따라온다
expected-server-errors.ts이력모듈부정 시험이 사전에 선언한 응답만 허용한다.
support.ts이력모듈스텁이 아니면 Studio 실연동이다(채팅·지식컬렉션 색인이 실제로 Studio 에 간다).

e2e/realdata/screens/actions/50GitHub

admin-knowledge-fixture.ts이력모듈설명 주석 없음
agent-chat-delete-fixture.ts이력6일 전 · #1957모듈설명 주석 없음
analysis-conditions-fixture.ts이력어제 · #2145모듈설명 주석 없음
analysis-result-comparison.ts이력모듈PostgreSQL timestamp의 마이크로초 반올림을 적용한다.
application-forms-fixture.ts이력모듈토스트는 문장마다 줄을 나눠 그린다 — 첫 문장이 확정 안내의 기준 문구다.
audit-logs-fixture.ts이력모듈RFC 4180의 따옴표·이중 따옴표·셀 안 줄바꿈을 보존해 실제 파일을 대조한다.
classification-mapping-fixture.ts이력3일 전 · #2063모듈API 전량 치환 규약을 테스트 쪽에서 펼친다.
client-workspace-fixture.ts이력2일 전 · #2106모듈설명 주석 없음
collection-viewer-fixture.ts이력오늘 · #2168모듈설명 주석 없음
extraction-diagnosis-key.ts이력모듈Studio의 평면 키와 중첩·배열 키에서 병명 항목만 식별한다.
extraction-result-comparison.ts이력모듈결과 보존은 문서·페이지·항목의 정체성과 모든 값으로 비교한다.
full-journey-analysis.ts이력3일 전 · #2069모듈설명 주석 없음
full-journey-delivery.ts이력5일 전 · #1967모듈설명 주석 없음
full-journey-selection.ts이력5일 전 · #1967모듈설명 주석 없음
hospital-aliases-fixture.ts이력3일 전 · #2081모듈설명 주석 없음
image-system-fixture.ts이력5일 전 · #1967모듈설명 주석 없음
intake-event-relay.ts이력모듈실제 SSE 바이트만 중계한다.
investigation-list-fixture.ts이력모듈시험용 입력과 독립된 기대 표.
knowledge-fixture.ts이력모듈화면 검증 전에 실제 API로만 자료를 준비한다.
knowledge.ts이력오늘 · #2168모듈파일 처리 대기 상한 — 색인은 엔진을 따른다(stub 즉시 색인 / Studio 실연동).
login-fixture.ts이력모듈실제 탭 복귀 시 제품이 사용하는 이벤트를 보낸다.
mail-account-fixture.ts이력오늘 · #2181모듈설명 주석 없음
onboarding-fixture.ts이력7일 전 · #1920모듈설명 주석 없음
organization-fixture.ts이력모듈설명 주석 없음
permissions-fixture.ts이력7일 전 · #1871모듈설명 주석 없음
profile-fixture.ts이력모듈설명 주석 없음
reanalysis-fixture.ts이력5일 전 · #1981모듈설명 주석 없음
report-disposal-fixture.ts이력2일 전 · #2096모듈설명 주석 없음
report-draft-fixture.ts이력모듈설명 주석 없음
report-send-fixture.ts이력6일 전 · #1956모듈설명 주석 없음
report-send-logs-fixture.ts이력모듈RFC 4180을 따라 실제 내려받은 파일의 열·행을 읽는다.
report-settings-fixture.ts이력7일 전 · #1871모듈설명 주석 없음
report-templates-fixture.ts이력모듈설명 주석 없음
report-types-fixture.ts이력모듈설명 주석 없음
statistics-business.ts이력모듈설명 주석 없음
statistics-cases.ts이력모듈설명 주석 없음
statistics-fixture.ts이력모듈응답별 검증이 사용하는 필드를 명시한다.
statistics-lifecycle.ts이력모듈설명 주석 없음
statistics-monitor.ts이력모듈설명 주석 없음
statistics-quality.ts이력모듈설명 주석 없음
statistics-usage.ts이력모듈설명 주석 없음
studio-execution-fixture.ts이력오늘 · #2186모듈실제 한 쪽 PDF.
studio-schema-fixture.ts이력모듈설명 주석 없음
summary-fixture.ts이력모듈시각은 제거하지 않고 PostgreSQL 정밀도로 같은 순간인지 비교한다.
usage-history-fixture.ts이력모듈설명 주석 없음
workspace-classification-fixture.ts이력5일 전 · #1992모듈설명 주석 없음
workspace-extraction-fixture.ts이력어제 · #2145모듈설명 주석 없음
workspace-extraction-live-fixture.ts이력모듈설명 주석 없음
workspace-intake-fixture.ts이력5일 전 · #1992모듈설명 주석 없음

e2e/realdata/screens/prepared/66GitHub

admin-knowledge-essential.spec.ts이력7일 전 · #1871E2E지식컬렉션 관리 필수 — 관리 권한이 있는 사용자만 공용컬렉션을 변경한다
agent-chat-context-essential.spec.ts이력E2E대화 용량 필수 — 실제 Studio 사용량을 답변 줄에 남기고 직전 답변 기준으로 화면에 보인다
agent-chat-delete-essential.spec.ts이력6일 전 · #1957E2E채팅 삭제 필수 — 확인을 취소하면 대화·첨부와 완료 횟수를 유지한다
analysis-conditions-essential.spec.ts이력6일 전 · #1957E2E분석 조건 필수 — 사건에 고정된 청구유형과 청약서 설정을 사용한다
application-forms-essential.spec.ts이력어제 · #2154E2E청약서 폼 필수 — 새 변수와 질문은 확정할 때 한 번에 저장된다
audit-logs-essential.spec.ts이력7일 전 · #1899E2E01. 작업 항목·이벤트 타입·결과·검색어에 모두 일치하는 감사 기록만 조회한다
classification-mapping-essential.spec.ts이력오늘 · #2180E2E분류체계 매핑 필수 — 매핑 권한으로 조회·확정하고 권한 없는 화면과 API 변경을 차단한다
client-workspace-essential.spec.ts이력2일 전 · #2106E2E위탁사 Workspace 필수 — Workspace 권한만으로 설정하고 권한 없는 변경은 차단한다
collection-approval.spec.ts이력6일 전 · #1957E2E최종 승인만으로 개인 파일을 공용으로 전환한다
collection-viewer-essential.spec.ts이력오늘 · #2168E2E지식컬렉션 뷰어 필수 — 폴더 안 상세와 단독 화면의 컬렉션 정보를 비교한다
full-journey.spec.ts이력어제 · #2145E2E전체 업무 흐름 — 실제 문서 ZIP 인입부터 분류·추출 검수·분석·초안 1차·2차 수정과 최종 수신까지 같은 보고서로 완료한다
hospital-aliases-essential.spec.ts이력3일 전 · #2082E2E병원 명칭 매핑 필수 — 여러 검색 항목과 사용·등재 경로를 함께 적용한다
image-system-integration.spec.ts이력6일 전 · #1927E2E이미지 연동 필수 — SFTP ZIP부터 공통 S3·Studio 업로드를 거쳐 담당자 목록과 보고서 원문에 진입한다
investigation-list-essential.spec.ts이력6일 전 · #1957E2E사고조사 목록 필수 — 본인 사건을 열고 돌아오면 검색 조건이 유지된다
login-essential.spec.ts이력3일 전 · #2097E2E로그인 필수 — 기존 SSO 인증으로 로그인 화면 없이 원래 업무 화면에 진입한다
mail-account-essential.spec.ts이력오늘 · #2181E2E01. 비밀번호를 비우고 설정만 변경하면 기존 암호문·비밀번호 이력·변경 예정일을 보존한다
onboarding-essential.spec.ts이력7일 전 · #1920E2E온보딩 필수 — 앞뒤 공백과 확인값 대소문자 차이를 허용하고 정리한 주소를 저장한다
organization-essential.spec.ts이력2일 전 · #2096E2E01. 하위 조직과 직급·이름·이메일 조건을 함께 적용하고 형제 조직을 제외한다
permissions-essential.spec.ts이력6일 전 · #1957E2E01. 여러 레벨·메뉴의 변경을 함께 저장하고 나머지 권한과 기본값을 보존한다
profile-essential.spec.ts이력E2E내 정보 필수 — 기존 주소의 대소문자와 앞뒤 공백만 바꾸면 저장 요청을 보내지 않는다
reanalysis-essential.spec.ts이력5일 전 · #1981E2E다시 분석 필수 — 조건부터 실행해도 분류·추출 결과와 이전 실행 이력은 보존된다
report-disposal-logs-essential.spec.ts이력2일 전 · #2096E2E같은 파기시각의 기록도 페이지 이동 시 중복·누락되지 않는다
report-draft-essential.spec.ts이력E2E01. 위탁사 양식의 구역·기관·탭·열 순서대로 초안을 구성한다
report-send-essential.spec.ts이력6일 전 · #1956E2E01. 확인 창을 연 뒤 전송 방식이 변경되면 이전 채널로 보내지 않는다
report-send-logs-essential.spec.ts이력E2E01. 접수번호·위탁사 코드·피보험자·실패 사유·채널명 검색의 실제 결과를 확인한다
report-settings-essential.spec.ts이력E2E한 위탁사를 수정해도 다른 위탁사의 저장 설정은 유지된다
report-templates-essential.spec.ts이력E2E프롬프트 본문의 변수·줄바꿈·특수문자가 그대로 보존된다
report-types-essential.spec.ts이력E2E보고서 유형 필수 — 실제 추가한 유형의 서버 코드·맨 뒤 순서·대표 가능 여부가 새로고침 후 유지된다
statistics-b01.spec.ts이력E2E통계 필수 B01.01 — 질병코드별 처리 건수 · 메인 질병 기준
statistics-b02.spec.ts이력E2E통계 필수 B02.01 — 병원별 청구 집중도 · 동일 병원 반복 문서
statistics-b03.spec.ts이력E2E통계 필수 B03.01 — 위탁사별·청구 질병별 처리 현황 · 위탁사 합계와 누적 조각
statistics-b04.spec.ts이력E2E통계 필수 B04.01 — 병원·질병 처리 건수 · 병원·질병 조합 구분
statistics-b05.spec.ts이력E2E통계 필수 B05.01 — 병원·의사별 질병 처리 건수 · 의사별 조합 분리
statistics-b06.spec.ts이력E2E통계 필수 B06.01 — 청구유형 처리 건수 · 대표 유형만 집계
statistics-b07.spec.ts이력E2E통계 필수 B07.01 — 증권번호별 청구 현황 · 같은 증권 반복 청구
statistics-b08.spec.ts이력E2E통계 필수 B08.01 — 조직별 이용 현황 · 당시 부서 실적 보존
statistics-s01.spec.ts이력E2E통계 필수 S01.01 — 서비스 상태 · 모니터링 미설정 구분
statistics-s02.spec.ts이력E2E통계 필수 S02.01 — 오류/장애 현황 · 실패 원천 통합
statistics-s03.spec.ts이력E2E통계 필수 S03.01 — 분석 요청 건수 · 접수와 분석 요청 구분
statistics-s04.spec.ts이력E2E통계 필수 S04.01 — 분석 완료 건수 · 요약 완료 기준
statistics-s05.spec.ts이력E2E통계 필수 S05.01 — 평균 처리 시간 · 건수 가중 평균
statistics-s06.spec.ts이력E2E통계 필수 S06.01 — 종합현황 문서 자동 분류율 · 페이지 단위 분모
statistics-s07.spec.ts이력E2E통계 필수 S07.01 — 업무 완료율 · 전송 완료 기준
statistics-s08.spec.ts이력E2E통계 필수 S08.01 — 처리 완료 건수 추이 · 날짜별 실적 연결
statistics-s09.spec.ts이력E2E통계 필수 S09.01 — 평균 처리시간 추이 · 주간 가중 평균
statistics-s10.spec.ts이력E2E통계 필수 S10.01 — AI 품질 문서 자동 분류율 · 자동·수정 면수 분해
statistics-s11.spec.ts이력E2E통계 필수 S11.01 — 정보추출 품질 · 항목 단위 모수
statistics-s12.spec.ts이력E2E통계 필수 S12.01 — 재분석 발생률·검토율 · 최초 분석 제외
statistics-s13.spec.ts이력E2E통계 필수 S13.01 — 건당 처리시간 분포 · 구간 경계 일치
statistics-s14.spec.ts이력E2E통계 필수 S14.01 — 문서 인입량 대비 처리시간 달성률 · 100·101매 경계
statistics-s15.spec.ts이력E2E통계 필수 S15.01 — 문서별 추출 완료율 · 문서종별 항목 집계
statistics-s16.spec.ts이력E2E통계 필수 S16.01 — 필드별 추출 완료율 · 같은 필드명 통합
statistics-s17.spec.ts이력E2E통계 필수 S17.01 — 시간 목표률 · 기준시간과 동일
statistics-s18.spec.ts이력E2E통계 필수 S18.01 — AI 분석 이용자 · 동일인 반복 요청
statistics-s19.spec.ts이력E2E통계 필수 S19.01 — 보고서 생성 건수 · 생성과 전송 수 분리
statistics-s20.spec.ts이력E2E통계 필수 S20.01 — 챗봇 질의 건수 · 질문·답변 한 쌍 집계
statistics-s21.spec.ts이력E2E통계 필수 S21.01 — 질의 답변 응답 속도 · 10초 경계
studio-execution-essential.spec.ts이력오늘 · #2186E2E실행 테스트 필수 01 — 첨부가 없으면 분류 실행을 막고, 위탁사 없이도 분류·추출은 돈다
studio-schema-essential.spec.ts이력7일 전 · #1911E2E01. Studio 조회 불가 상태에서 저장하지 않고 복구한다
summary-essential.spec.ts이력3일 전 · #2055E2E요약 필수 — 조회 실패를 빈 결과로 오인하지 않고 복구한다
usage-history-essential.spec.ts이력7일 전 · #1899E2E사용 내역 필수 — 본인의 내역만 조회하고 메뉴 권한 없는 접근을 차단한다
workspace-classification-essential.spec.ts이력오늘 · #2181E2E분류 검수 필수 — 검토 대상의 원문을 열고 다음 낱장과 남은 유형을 누락 없이 안내한다
workspace-extraction-essential.spec.ts이력E2E추출 검수 필수 — 같은 이름의 항목을 수정해도 다른 낱장·문서의 값과 이력은 바뀌지 않는다
workspace-extraction-live.spec.ts이력E2EStudio 추출 검수 — 가상 진단서·진료확인서를 자동 접수하고 실제 분류·추출 결과와 원문을 확인한다
workspace-intake-essential.spec.ts이력오늘 · #2170E2E서류 인입 필수 — 추가 서류를 받으면 새로고침 없이 문서함·장수를 갱신하고 확정 전 분류하지 않는다

e2e/reanalysis/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/report-disposal-logs/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/report-draft/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/report-send/5GitHub

README.md이력6일 전 · #1957문서설명 주석 없음
prepare.py이력6일 전 · #1957파일설명 주석 없음
provider.py이력6일 전 · #1956파일설명 주석 없음
run.py이력6일 전 · #1957파일설명 주석 없음
test_contract.py이력6일 전 · #1957파일설명 주석 없음

e2e/report-send-logs/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/report-settings/2GitHub

README.md이력문서설명 주석 없음
run.py이력파일설명 주석 없음

e2e/report-templates/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/report-types/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/statistics/8GitHub

README.md이력문서설명 주석 없음
SCENARIOS.md이력문서설명 주석 없음
catalog.json이력파일설명 주석 없음
prepare.py이력파일설명 주석 없음
prometheus.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_catalog.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/statistics/fixture/1GitHub

StatisticsFixtureServer.java이력파일설명 주석 없음

e2e/steps/31GitHub

admin.ts이력오늘 · #2189모듈설명 주석 없음
agent-chat-knowledge.ts이력모듈설명 주석 없음
agent-studio.ts이력2일 전 · #2112모듈설명 주석 없음
analysis-knowledge.ts이력2일 전 · #2101모듈설명 주석 없음
chat-delete.ts이력7일 전 · #1871모듈설명 주석 없음
classification-mapping.ts이력모듈설명 주석 없음
client-workspace.ts이력모듈설명 주석 없음
common.ts이력오늘 · #2168모듈시나리오가 부르는 화면 이름 → 라우트.
dashboard.ts이력3일 전 · #2072모듈설명 주석 없음
fixtures.ts이력모듈수용 시나리오(e2e/features/*.feature)의 단계 정의가 쓰는 test — playwright-bdd 의 test 에 기존 스펙과 같은 커버리지 fixture(e2e/test.ts)를 합친다.
investigation-chat-attachments.ts이력모듈설명 주석 없음
investigation-chat-knowledge.ts이력7일 전 · #1871모듈설명 주석 없음
investigation-chat-sources.ts이력5일 전 · #1975모듈설명 주석 없음
investigation-list.ts이력모듈설명 주석 없음
investigation-workspace-transition-lock.ts이력2일 전 · #2103모듈설명 주석 없음
investigation-workspace.ts이력어제 · #2148모듈설명 주석 없음
knowledge-collections-real.ts이력모듈설명 주석 없음
knowledge-collections.ts이력3일 전 · #2059모듈설명 주석 없음
knowledge-reference-defaults.ts이력모듈설명 주석 없음
login.ts이력3일 전 · #2097모듈설명 주석 없음
mail-dispatch-log.ts이력2일 전 · #2096모듈설명 주석 없음
profile.ts이력모듈설명 주석 없음
report-disposal-logs.ts이력2일 전 · #2096모듈설명 주석 없음
report-send-logs.ts이력2일 전 · #2096모듈설명 주석 없음
report-send.ts이력7일 전 · #1871모듈설명 주석 없음
usage-history.ts이력7일 전 · #1899모듈설명 주석 없음
workspace-classification-bulk.ts이력모듈설명 주석 없음
workspace-document-box-view.ts이력모듈설명 주석 없음
workspace-extraction-classification-edit.ts이력5일 전 · #1992모듈설명 주석 없음
workspace-extraction-confirm.ts이력어제 · #2162모듈설명 주석 없음
workspace-intake-editing.ts이력5일 전 · #1992모듈설명 주석 없음

e2e/studio-execution/2GitHub

README.md이력문서설명 주석 없음
run.py이력파일설명 주석 없음

e2e/studio-schema/5GitHub

README.md이력문서설명 주석 없음
contract.py이력파일설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_contract.py이력파일설명 주석 없음

e2e/summary/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/usage-history/4GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력파일설명 주석 없음

e2e/workspace-classification/7GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
review-state.sql이력파일설명 주석 없음
review.sql이력파일설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/workspace-extraction/8GitHub

test_result_comparison.mjs이력모듈설명 주석 없음
README.md이력문서설명 주석 없음
fields.sql이력파일설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력파일설명 주석 없음
test_engine_config.py이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

e2e/workspace-extraction-live/7GitHub

test_diagnosis_key.mjs이력모듈설명 주석 없음
README.md이력문서설명 주석 없음
make_documents.py이력파일설명 주석 없음
prepare_live.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
studio_contract.py이력파일설명 주석 없음
test_contract.py이력파일설명 주석 없음

e2e/workspace-intake/5GitHub

README.md이력문서설명 주석 없음
prepare.py이력파일설명 주석 없음
run.py이력파일설명 주석 없음
seed.sql이력파일설명 주석 없음
test_prepare.py이력파일설명 주석 없음

lib · 보조

scripts/GitHub

코드 생성 스크립트

scripts/7GitHub

OpenAPI 스냅샷 → 타입·MSW 스켈레톤 생성, 디자인 토큰·콘텐츠 페이지 검사, PDF.js 자산 복사, E2E 커버리지 보고 스크립트.

check-content-page.mjs이력테스트모듈/page.tsx 와 화면 `*-view.tsx` 의 `return` 바로 뒤 JSX 요소(조건부 로딩·오류 return 포함).
check-design-tokens.mjs이력테스트모듈규칙: 이름 → [패턴, 대신 쓸 것]
copy-pdfjs-assets.mjs이력모듈pdf.js 런타임 자원 → public/pdfjs (승인센터 원본 뷰어).
design-token-fix.mjs이력모듈디자인 토큰 규격 위반 → 프론트 토큰 치환 후보.
e2e-coverage-report.mjs이력모듈E2E 커버리지 리포트 — pnpm test:e2e:coverage 가 Playwright 실행 뒤 부른다.
openapi-codegen.mjs이력테스트모듈백엔드 OpenAPI 계약 스냅샷 → 프론트 생성물 파이프라인 (P0-6).
design-token-baseline.json이력오늘 · #2181파일설명 주석 없음

lib · 보조

public/GitHub

정적 파일

public/6GitHub

정적 파일.

mockServiceWorker.js이력모듈MSW 서비스 워커 (msw init 생성물) — NEXT_PUBLIC_API_MOCKING=enabled 일 때 브라우저가 등록한다.
file.svg이력파일create-next-app 기본 아이콘 — 2026-09-15 기준 코드 어디에서도 참조하지 않는다.
globe.svg이력파일create-next-app 기본 아이콘 — 2026-09-15 기준 코드 어디에서도 참조하지 않는다.
next.svg이력파일create-next-app 기본 아이콘 — 2026-09-15 기준 코드 어디에서도 참조하지 않는다.
vercel.svg이력파일create-next-app 기본 아이콘 — 2026-09-15 기준 코드 어디에서도 참조하지 않는다.
window.svg이력파일create-next-app 기본 아이콘 — 2026-09-15 기준 코드 어디에서도 참조하지 않는다.

public/brand/1GitHub

hanwha-logo.png이력파일설명 주석 없음

파일 목록·화면 지도·환경변수·명령·변경 표시는 dev 에 머지될 때마다 코드와 git 이력에서 다시 뽑습니다. 설명이 비어 있는 파일은 맨 위나 export 위에 한 줄 주석을 달면 다음 빌드부터 채워집니다. 옆에 테스트가 있는 파일은 테스트 표시가 붙습니다.