HWSS 테스트 커버리지 · 커밋 279895b7 · 2026-10-06 16:32 KST 빌드

테스트 커버리지

단위 테스트가 소스를 얼마나 지나갔는지 백엔드는 Gradle 모듈, 프론트엔드는 화면·공용 코드 영역으로 본다. 측정은 dev 의 검사 워크플로가 하고 이 페이지는 그 결과를 읽기만 한다. 구현이 어디까지 왔는지는 구현 커버리지 맵이 따로 본다.

84.3%백엔드 라인
75.8%백엔드 브랜치
–백엔드 수동(dev) 라인
92.7%프론트 라인
81.8%프론트 브랜치
백엔드 커밋 279895b7 · 10/06 16:18 KST · backend-check.yml · 모듈 21
프론트 커밋 279895b7 · 10/06 16:18 KST · frontend-check.yml · 파일 257
수동(dev) 측정 없음 — manual-coverage.yml 이 개발 서버에서 한 번 걷어 오면 백엔드 표에 열이 생긴다
범위
백엔드 JUnit(모듈 안 단위·H2 영속성 테스트), 프론트 Vitest 단위·컴포넌트 테스트. Playwright E2E·.http 시나리오는 포함되지 않는다
라인
테스트가 한 번이라도 지나간 소스 줄의 비율 — 두 스택을 견줄 때 쓰는 기본 지표
브랜치
if·switch·삼항의 갈래 중 지나간 비율 — 라인보다 엄격하다
수동(dev)
개발 서버 JVM 의 JaCoCo 에이전트가 기록한, 배포 뒤 실제 실행된 라인 — 사람이 눌러 본 범위이지 검증이 아니다. 배포로 컨테이너가 바뀌면 다시 0 에서 쌓인다
막대 색
80% 이상 초록 · 50% 이상 강조 · 그 아래 회색. 임계값 게이트는 없다(보고만)
갱신
dev push 때 측정해 artifact 로 올리고, 다음 사이트 빌드가 받아 그린다 — 보통 한 머지 뒤의 수치

백엔드 · JaCoCo

모듈별 커버리지

라인·브랜치·명령어·메서드는 단위 테스트. 모듈 안의 테스트만 그 모듈 수치에 들어간다 — apps/hwss-api 의 통합 테스트가 core 모듈을 지나가도 core 쪽에는 잡히지 않는다. shared 모듈은 DTO·포트 인터페이스라 테스트가 없으면 리포트도 없다. 수동(dev)은 개발 서버에서 배포 뒤 실제 실행된 라인 — 사람이 눌러 본 범위이지 검증이 아니다.

모듈라인브랜치명령어메서드라인 수
aiplatform-corecore90.2%75.1%92.4%97.7%1854 / 2056
파일 32개 · 덜 덮인 순 StudioResultCorrectionAdapter 81.8% · StudioJobReviewRoundtrip 84.8% · StudioVectorStoreAdapter 88.0%
클래스라인브랜치라인 수
StudioResultCorrectionAdapter81.8%64.8%297 / 363
StudioJobReviewRoundtrip84.8%69.9%295 / 348
StudioVectorStoreAdapter88.0%78.0%191 / 217
StudioAnalysisAdapter90.7%80.5%137 / 151
StudioAnalysisOutputParser94.6%83.3%123 / 130
StudioCollectionResolver93.3%74.0%83 / 89
StudioClassificationAdapter92.9%68.8%52 / 56
StudioClassificationOutputParser94.7%75.0%72 / 76
StudioDocumentFileAdapter95.2%74.1%80 / 84
StudioConfig94.2%100.0%49 / 52
StudioDocumentErrors91.7%85.4%33 / 36
StudioExtractionAdapter94.7%80.0%54 / 57
StudioExtractionOutputParser97.9%82.2%143 / 146
InMemoryVectorStoreAdapter97.9%92.9%93 / 95
StudioProperties96.4%60.3%53 / 55
StudioIndexingStatusMapper85.7%83.3%6 / 7
StudioTargetEnvironmentPostProcessor96.6%90.9%28 / 29
AiPlatformConfig100.0%–3 / 3
AiPlatformProperties100.0%–1 / 1
AiPlatformProvider100.0%–3 / 3
StubChatModelAdapter100.0%90.0%21 / 21
VectorStoreCreateRequest100.0%–1 / 1
VectorStoreDeleteResponse100.0%–1 / 1
VectorStoreFileBatchCreateRequest100.0%–1 / 1
VectorStoreFileBatchResponse100.0%–2 / 2
VectorStoreFileCreateRequest100.0%–6 / 6
VectorStoreFileResponse100.0%50.0%3 / 3
VectorStoreModifyRequest100.0%–1 / 1
VectorStoreResponse100.0%–1 / 1
VectorStoreSearchFilter100.0%83.3%9 / 9
VectorStoreSearchRequest100.0%–1 / 1
VectorStoreSearchResponse100.0%75.0%11 / 11
audit-corecore67.2%25.0%61.2%72.4%82 / 122
파일 6개 · 덜 덮인 순 AuditLogSpecifications 6.2% · AuditTrailPortAdapter 0.0% · AuditTrailService 88.1%
클래스라인브랜치라인 수
AuditLogSpecifications6.2%0.0%1 / 16
AuditTrailPortAdapter0.0%–0 / 10
AuditTrailService88.1%50.0%59 / 67
AuditLogController0.0%–0 / 5
AuditLogEntity91.3%–21 / 23
AuditLogSearchPeriodException100.0%–2 / 2
basecore61.0%53.6%53.3%48.6%729 / 1195
파일 102개 · 덜 덮인 순 DocumentResultCorrectionPort 0.0% · AuthProperties 71.4% · AuthPasswordController 0.0%
클래스라인브랜치라인 수
DocumentResultCorrectionPort0.0%0.0%0 / 37
AuthProperties71.4%–80 / 112
AuthPasswordController0.0%0.0%0 / 26
AuthController0.0%0.0%0 / 25
ZipArchiveProcessor78.2%67.5%86 / 110
AuditEventCommand0.0%0.0%0 / 22
AuthOnboardingController0.0%–0 / 15
AnalysisJobStatus0.0%0.0%0 / 12
WorkflowStepWorkPort0.0%0.0%0 / 11
AnalysisJobRequest0.0%0.0%0 / 10
DocumentAiException0.0%–0 / 10
GlobalExceptionHandler0.0%–0 / 10
ClassifiedDocument0.0%0.0%0 / 8
OrganizationDirectoryPort0.0%0.0%0 / 8
OrganizationScope0.0%0.0%0 / 8
SecurityConfig0.0%–0 / 8
AuditActor0.0%0.0%0 / 7
ChatModelException0.0%–0 / 7
ObservabilityConfig0.0%0.0%0 / 7
AuditEventType0.0%–0 / 6
BusinessException50.0%–6 / 12
ClassificationJobStatus0.0%0.0%0 / 6
ExtractedField0.0%–0 / 6
ExtractionJobRequest0.0%0.0%0 / 6
ExtractionJobStatus0.0%0.0%0 / 6
VectorIndexingStatus0.0%0.0%0 / 6
AnalyzedCard0.0%0.0%0 / 5
ChatAnswer0.0%0.0%0 / 5
ChatPrompt0.0%0.0%0 / 5
ImageMasterSyncPort0.0%–0 / 5
SsoConfiguration75.0%72.2%15 / 20
VectorStoreException0.0%–0 / 5
AiJobState0.0%–0 / 4
ClassificationJobRequest0.0%0.0%0 / 4
CredentialIdentityProvider82.6%58.3%19 / 23
DocumentUpload0.0%–0 / 4
ExternalFileState0.0%–0 / 4
ExtractedDocument0.0%0.0%0 / 4
InvestigationBusinessMetadataLookupPort0.0%–0 / 4
ModelMappingStatus0.0%–0 / 4
PdfPageRasterizer92.9%68.2%52 / 56
VectorCollectionCreateCommand0.0%0.0%0 / 4
AnalyzedItem0.0%0.0%0 / 3
AnalyzedSection0.0%0.0%0 / 3
AuditOutcome0.0%–0 / 3
AuditTargetType0.0%–0 / 3
AwaitingStepCompletion0.0%–0 / 3
ExternalDocumentFile0.0%–0 / 3
ListSortDirection0.0%–0 / 3
OutboundMail0.0%–0 / 3
RathonSiteMinderPasswordEncoder62.5%50.0%5 / 8
VectorDocumentRef0.0%–0 / 3
WorkflowProgressDetail0.0%0.0%0 / 3
WorkflowStepProgressView0.0%–0 / 3
AuthSessionService96.7%78.6%58 / 60
AuthTokenService97.3%68.8%72 / 74
MailDeliveryException0.0%–0 / 2
NullOrNotBlankValidator0.0%0.0%0 / 2
SsoLoginController95.5%77.3%42 / 44
ZipProcessingException50.0%–2 / 4
AnalyzedSource0.0%–0 / 1
AuthCookieFactory95.8%66.7%23 / 24
DocumentFilePort0.0%–0 / 1
JwtCookieAuthenticationFilter96.8%100.0%30 / 31
KnowledgeSearchHit0.0%–0 / 1
LocalDevIdentityProvider94.7%75.0%18 / 19
LoginRequest0.0%–0 / 1
OrganizationScopePort0.0%–0 / 1
RequestCorrelation83.3%100.0%5 / 6
SsoCallbackController98.2%85.0%55 / 56
StepPreconditionPort0.0%–0 / 1
UserSupplementLookupPort75.0%25.0%3 / 4
VectorCollectionRef0.0%–0 / 1
VectorSearchHit0.0%–0 / 1
WorkflowLaunchCommand0.0%–0 / 1
WorkflowProgressView0.0%–0 / 1
WorkflowStepCompletionPort0.0%–0 / 1
WorkflowStepFailure0.0%–0 / 1
WorkflowStepSuccess0.0%–0 / 1
AfterCommit100.0%100.0%8 / 8
ApiError100.0%–1 / 1
ApiResponse100.0%–3 / 3
AuditTimestamps100.0%–9 / 9
AuthOnboardingService100.0%83.3%13 / 13
AuthenticatedUser100.0%50.0%4 / 4
AuthenticationFailedException100.0%–4 / 4
ExternalCallMetrics100.0%100.0%18 / 18
FieldLocation100.0%95.0%25 / 25
IdentityCredentials100.0%–1 / 1
IssuedSession100.0%–1 / 1
ListPageCondition100.0%100.0%6 / 6
ListPeriodCondition100.0%100.0%1 / 1
MdcPropagation100.0%100.0%11 / 11
PasswordNotSetException100.0%–2 / 2
PdfRasterizationException100.0%–12 / 12
RefreshTokenStorePort100.0%–4 / 4
RequestCorrelationFilter100.0%–7 / 7
RoleCodeAuthorization100.0%100.0%4 / 4
SsoReturnPath100.0%91.7%14 / 14
UnregisteredUserException100.0%–2 / 2
VectorDocumentIndexCommand100.0%50.0%3 / 3
VectorSearchQuery100.0%100.0%7 / 7
chat-corecore86.5%71.7%85.7%75.8%173 / 200
파일 11개 · 덜 덮인 순 ChatController 0.0% · ChatMessageSourceEntity 77.3% · ChatSessionCollectionEntity 55.6%
클래스라인브랜치라인 수
ChatController0.0%–0 / 8
ChatMessageSourceEntity77.3%50.0%17 / 22
ChatSessionCollectionEntity55.6%–5 / 9
ChatSessionEntity88.9%68.8%32 / 36
ChatMessageEntity90.3%83.3%28 / 31
ChatSessionAccessDeniedException0.0%–0 / 2
ChatService98.4%75.0%60 / 61
ChatExchangeAppender100.0%100.0%14 / 14
ChatSessionNotFoundException100.0%–2 / 2
ChatSessionSummaryRow100.0%–1 / 1
ChatViews100.0%–14 / 14
classification-corecore74.7%78.4%75.4%72.7%386 / 517
파일 21개 · 덜 덮인 순 ImageMasterSyncPortImpl 0.0% · ClassificationMasterSyncService 70.3% · DisclosureLinkController 0.0%
code-corecore35.2%25.0%31.8%31.8%38 / 108
파일 8개 · 덜 덮인 순 CommonCodeService 47.6% · CommonCodeDetailEntity 0.0% · CommonCodeController 0.0%
클래스라인브랜치라인 수
CommonCodeService47.6%33.3%20 / 42
CommonCodeDetailEntity0.0%–0 / 16
CommonCodeController0.0%–0 / 10
CommonCodeEntity58.3%0.0%14 / 24
CommonCodeLookupPortImpl0.0%–0 / 10
CommonCodeDetailAlreadyExistsException0.0%–0 / 2
CommonCodeAlreadyExistsException100.0%–2 / 2
CommonCodeNotFoundException100.0%–2 / 2
collection-corecore84.7%77.8%84.4%82.7%879 / 1038
파일 33개 · 덜 덮인 순 CollectionController 0.0% · CollectionApprovalController 0.0% · CollectionFileStorage 70.5%
investigation-corecore86.9%78.4%87.2%83.0%7317 / 8421
파일 255개 · 덜 덮인 순 SummaryResultService 60.9% · ImageTransferReceptionService 88.9% · WorkflowStatusResolver 57.4%
클래스라인브랜치라인 수
SummaryResultService60.9%34.1%181 / 297
ImageTransferReceptionService88.9%68.0%699 / 786
WorkflowStatusResolver57.4%52.8%70 / 122
ImageIntegrationController0.0%–0 / 48
ReportPageEntity56.4%33.3%44 / 78
ClassificationResultService89.7%90.5%278 / 310
InvestigationReportQueryService86.7%68.0%208 / 240
SummarySectionEntity0.0%0.0%0 / 29
AnalysisRequestService82.4%72.9%131 / 159
AiPipelineResultSyncService91.1%73.5%275 / 302
SummaryItemSourceEntity0.0%0.0%0 / 27
InvestigationService51.1%35.7%23 / 45
ReportMailDispatchSpecifications4.8%0.0%1 / 21
ReportDraftController0.0%–0 / 19
ReportPageImageController0.0%0.0%0 / 18
SummaryResultController0.0%–0 / 17
AiClassificationJobService91.1%78.1%153 / 168
ImageSystemIntegrationClient85.3%63.9%87 / 102
ReportTemplateController0.0%–0 / 15
AiExtractionJobService92.0%80.7%161 / 175
ClassificationResultController0.0%–0 / 12
InvestigationReportController0.0%–0 / 12
AnalysisRequestCollectionEntity0.0%–0 / 11
ImageIntegrationIdempotencyRepository0.0%–0 / 11
StatFactLoadFailureService26.7%50.0%4 / 15
SummarySkeletonService84.1%73.7%58 / 69
StatUnmappedQueueController0.0%–0 / 10
AiPipelineResultSyncEntity87.7%50.0%64 / 73
ClaimTypeController0.0%–0 / 9
ExtractionResultController0.0%–0 / 9
InvestigationController0.0%–0 / 9
InvestigationEntity50.0%0.0%9 / 18
SummaryJson35.7%10.0%5 / 14
ReportMailDispatchLogService91.0%73.5%81 / 89
SummarySkeletonController0.0%–0 / 8
AiAnalysisJobService96.6%87.5%201 / 208
AiPipelineJobLedger89.9%64.3%62 / 69
AnalysisRequestController0.0%–0 / 7
ExtractionFieldCorrectionEntity84.8%28.6%39 / 46
HospitalDimensionEntity58.8%–10 / 17
ImageTransferEntity84.4%100.0%38 / 45
ImageTransferFileCleanupService65.0%25.0%13 / 20
InvestigationStartController0.0%–0 / 7
ReanalysisController0.0%–0 / 7
ReportMailController0.0%–0 / 7
StatisticsBackfillService93.6%86.8%102 / 109
AiPipelineJobEntity91.9%66.7%68 / 74
DoctorDimensionEntity57.1%–8 / 14
ImageIntegrationIdempotencyService66.7%50.0%12 / 18
ReportMailDispatchLogController0.0%–0 / 6
ReportTemplateService95.0%69.0%115 / 121
StatDimensionKeyResolver93.8%82.5%90 / 96
AnalysisRequestFormEntity54.5%–6 / 11
BusinessStatisticsController0.0%–0 / 5
ClassificationCorrectionEntity91.5%50.0%54 / 59
DiseaseDimensionEntity54.5%–6 / 11
LifecycleStatisticsController0.0%–0 / 5
ReportDraftSectionEntity86.1%–31 / 36
ReportPageImageService87.5%100.0%35 / 40
StatisticsBackfillController0.0%–0 / 5
TransferPageEntity86.8%–33 / 38
AiPipelineFileEntity81.8%–18 / 22
AnalysisRequestContractItemEntity76.5%–13 / 17
ClassificationResultEntity83.3%100.0%20 / 24
ClassificationResultPageEntity87.1%100.0%27 / 31
StatFactLoadFailureEntity86.7%90.0%26 / 30
SummaryCardEntity78.9%–15 / 19
SummaryComposer97.2%76.4%141 / 145
AnalysisRequestContractEntity82.4%–14 / 17
DuplicateSummaryItemException0.0%–0 / 3
InvestigationReportEntity95.6%70.0%65 / 68
ReportDraftService98.3%77.0%176 / 179
ReportLifecycleFactEntity95.6%100.0%65 / 68
ReportMailDispatchEntity90.3%50.0%28 / 31
ReportStatFactDetailEntity85.0%–17 / 20
ReportStatFactEntity93.9%100.0%46 / 49
ReportTemplateEntity89.7%100.0%26 / 29
ReportTemplateVariableEntity76.9%–10 / 13
StatDimensionAliasEntity76.9%–10 / 13
StatUnmappedQueueEntity90.9%100.0%30 / 33
StatUnmappedResolveService96.8%100.0%90 / 93
SummaryItemEntity93.9%66.7%46 / 49
SummaryOutputSchemaBuilder97.1%85.3%102 / 105
SummarySkeletonEntity83.3%–15 / 18
AiPipelineConfig0.0%–0 / 2
AiPipelineProperties92.6%50.0%25 / 27
AnalysisRequestEntity88.2%–15 / 17
AnalysisRequestNotFoundException0.0%–0 / 2
BusinessStatisticsQueryService96.5%95.8%55 / 57
ClaimTypeEntity92.3%70.0%24 / 26
ClassificationProperties95.1%88.2%39 / 41
ContentionRetry88.9%100.0%16 / 18
ExtractionProperties96.8%88.2%60 / 62
ExtractionResultEntity88.2%–15 / 17
ExtractionResultFieldEntity95.1%76.9%39 / 41
ImageSystemIntegrationException50.0%–2 / 4
ReanalysisService98.3%85.3%116 / 118
ReportBusinessContractEntity86.7%–13 / 15
ReportDraftEntity92.0%75.0%23 / 25
ReportMailService97.7%73.3%85 / 87
ReportTransferPayloadComposer96.7%85.0%58 / 60
StatDimensionMasterService96.1%87.5%49 / 51
SummaryResultEntity92.9%100.0%26 / 28
AnalysisConfig0.0%–0 / 1
AnalysisInstructionBuilder97.9%93.2%46 / 47
AnalysisProperties94.4%71.4%17 / 18
ClassificationConfig0.0%–0 / 1
ExtractionConfig0.0%–0 / 1
ExtractionResultService99.4%95.7%165 / 166
ExtractionStepWorkPortImpl98.1%66.7%51 / 52
ImageIntegrationConfig0.0%–0 / 1
ImageSystemProperties0.0%–0 / 1
InvestigationListConfig0.0%–0 / 1
MainDiseaseCodeSelector97.4%95.2%37 / 38
ReanalysisScopeResolver97.3%96.2%36 / 37
ReportMailDispatchLogConfig0.0%–0 / 1
ReportMailDispatchLogProperties66.7%–2 / 3
ReportReviewConfig0.0%–0 / 1
ReportStatFactLoader99.0%85.7%99 / 100
StatisticsLoadConfig0.0%–0 / 1
AcceptedSnapshotComparison100.0%54.5%13 / 13
AiPipelineFileStatus100.0%–4 / 4
AiPipelineJobPoller100.0%100.0%22 / 22
AiPipelineJobStatus100.0%50.0%7 / 7
AiPipelineResultSyncPhase100.0%75.0%9 / 9
AnalysisSourceJobUnavailableException100.0%–2 / 2
AnalysisStepWorkPortImpl100.0%100.0%37 / 37
AssigneeActionRule100.0%100.0%3 / 3
BackfillCommand100.0%100.0%33 / 33
BackfillTargets100.0%100.0%31 / 31
BusinessStatisticsQuery100.0%100.0%30 / 30
ClaimTypeNotDeletableException100.0%–2 / 2
ClaimTypeNotFoundException100.0%–2 / 2
ClaimTypeService100.0%83.3%32 / 32
ClassificationActionForbiddenException100.0%–2 / 2
ClassificationPageNotActionableException100.0%–3 / 3
ClassificationPageNotInResultException100.0%–3 / 3
ClassificationResultFinalizedException100.0%–2 / 2
ClassificationResultNotFoundException100.0%–2 / 2
ClassificationReviewPendingException100.0%–2 / 2
ClassificationSnapshotEmptyException100.0%–2 / 2
ClassificationStartedEvent100.0%–4 / 4
ClassificationStepWorkPortImpl100.0%100.0%15 / 15
CorrectionSyncFailedException100.0%–2 / 2
DerivedWorkflowStatus100.0%50.0%3 / 3
DuplicateClaimTypeException100.0%–2 / 2
DuplicateClassificationAssignmentException100.0%–3 / 3
DuplicateExtractionFieldException100.0%–3 / 3
DuplicateReportTemplateException100.0%–2 / 2
ExtractionActionForbiddenException100.0%–2 / 2
ExtractionFieldNotInResultException100.0%–3 / 3
ExtractionFieldValueNotStorableException100.0%–3 / 3
ExtractionPreconditionPortImpl100.0%100.0%11 / 11
ExtractionResultNotEditableException100.0%–2 / 2
ExtractionResultNotFoundException100.0%–2 / 2
ExtractionSourceJobUnavailableException100.0%–2 / 2
FinalTransferCompletedEvent100.0%–4 / 4
FinalTransferCompletionService100.0%100.0%22 / 22
IdempotencyKeyReusedException100.0%–2 / 2
ImageIntegrationProperties100.0%–1 / 1
ImageMasterSyncService100.0%100.0%32 / 32
ImageReportNotFoundException100.0%–2 / 2
InactiveCustomerCompanyException100.0%–3 / 3
InvalidAnalysisRequestException100.0%–2 / 2
InvalidImageSnapshotException100.0%–2 / 2
InvalidInvestigationStatusException100.0%–2 / 2
InvalidPageRequestException100.0%–2 / 2
InvalidReportTemplateException100.0%–2 / 2
InvalidStatusTransitionException100.0%–3 / 3
InvalidTransferPathException100.0%–2 / 2
InvestigationAccessGuard100.0%93.3%34 / 34
InvestigationBusinessMetadataService100.0%50.0%19 / 19
InvestigationListDateRangeException100.0%–3 / 3
InvestigationListProperties100.0%100.0%5 / 5
InvestigationNotFoundException100.0%–2 / 2
InvestigationReceivedDateRange100.0%92.9%8 / 8
InvestigationReportNotFoundException100.0%–2 / 2
InvestigationScopeForbiddenException100.0%–2 / 2
InvestigationStartForbiddenException100.0%–2 / 2
InvestigationStartService100.0%93.8%35 / 35
InvestigationStatusTransition100.0%100.0%53 / 53
InvestigationViewStageNotOpenException100.0%–2 / 2
LifecycleStatisticsQuery100.0%75.0%12 / 12
LifecycleStatisticsQueryService100.0%100.0%12 / 12
LifecycleTotals100.0%100.0%15 / 15
MailDeliveryUnavailableException100.0%–2 / 2
MailRecipientNotResolvedException100.0%–2 / 2
MainDiseaseRule100.0%–4 / 4
PdfSheetProperties100.0%–2 / 2
ReportDocumentChangeDetectedException100.0%–4 / 4
ReportDraftActionForbiddenException100.0%–2 / 2
ReportDraftNotFoundException100.0%–2 / 2
ReportDraftNotReadyException100.0%–3 / 3
ReportDraftSectionNotFoundException100.0%–2 / 2
ReportLifecycleFactLoadListener100.0%–22 / 22
ReportLifecycleFactLoader100.0%91.7%146 / 146
ReportMailDispatchLogNotAllowedException100.0%–2 / 2
ReportMailDispatchRecorder100.0%–5 / 5
ReportMailDispatchSearchPeriodException100.0%–2 / 2
ReportMailSendFailedException100.0%–2 / 2
ReportPageFileNotFoundException100.0%–2 / 2
ReportPageImageRenderer100.0%87.5%34 / 34
ReportPageImageUnrenderableException100.0%–2 / 2
ReportPageNotFoundException100.0%–2 / 2
ReportReviewProperties100.0%100.0%6 / 6
ReportStatFactLoadListener100.0%–9 / 9
ReportStatFactSourceReader100.0%92.3%79 / 79
ReportTaskSequencer100.0%100.0%15 / 15
ReportTemplateNotFoundException100.0%–2 / 2
ReportTransferTime100.0%–4 / 4
RetryingStatFactLoader100.0%–21 / 21
SheetNumbers100.0%100.0%8 / 8
StatDailyLifecycleContribution100.0%100.0%50 / 50
StatDailyLifecycleQueryRepository100.0%87.5%41 / 41
StatDailyLifecycleRollupService100.0%93.8%64 / 64
StatDailyRollupAxis100.0%–5 / 5
StatDailyRollupContributions100.0%100.0%49 / 49
StatDailyRollupQueryRepository100.0%95.0%58 / 58
StatDailyRollupService100.0%91.2%95 / 95
StatDailyRollupTable100.0%–15 / 15
StatDimensionKeyExistsException100.0%–3 / 3
StatDimensionKeyNotFoundException100.0%–3 / 3
StatDimensionLabelResolver100.0%84.0%40 / 40
StatDimensionNotFoundException100.0%–2 / 2
StatFactLoadFailureStatus100.0%–3 / 3
StatText100.0%100.0%10 / 10
StatUnmappedAlreadyResolvedException100.0%–3 / 3
StatUnmappedNotFoundException100.0%–3 / 3
StatUnmappedQueueQueryService100.0%84.2%59 / 59
StatUnmappedRequestException100.0%–2 / 2
StatisticsBackfillProperties100.0%100.0%9 / 9
StatisticsBackfillRequestException100.0%–2 / 2
StatisticsBackfillTooManyException100.0%–3 / 3
StatisticsLifecycleProperties100.0%95.5%27 / 27
StatisticsLoadProperties100.0%93.3%44 / 44
StatisticsQueryPeriodException100.0%–2 / 2
StatisticsQueryProperties100.0%100.0%16 / 16
StatisticsRollupProperties100.0%100.0%5 / 5
StatisticsUnmappedProperties100.0%100.0%20 / 20
StepFailureMessages100.0%100.0%28 / 28
SummaryActionForbiddenException100.0%–2 / 2
SummaryByteCount100.0%100.0%6 / 6
SummaryCompletedEvent100.0%–4 / 4
SummaryItemNotFoundException100.0%–2 / 2
SummaryNotConfirmedException100.0%–2 / 2
SummaryNotEditableException100.0%–2 / 2
SummaryResultNotFoundException100.0%–2 / 2
SummarySkeletonInvalidException100.0%–2 / 2
SummarySkeletonNotFoundException100.0%–2 / 2
SummarySkeletonResolver100.0%80.0%24 / 24
TransferNotStartedException100.0%–2 / 2
UnmappedQueueGroup100.0%–1 / 1
WorkflowStepCompletionPortImpl100.0%96.4%61 / 61
ZipFileNotFoundException100.0%–2 / 2
ZipHashMismatchException100.0%–2 / 2
mail-corecore88.5%81.5%90.5%80.2%215 / 243
파일 21개 · 덜 덮인 순 MailAccountController 0.0% · MailAccountPasswordConfig 0.0% · MailSecretCipher 89.2%
클래스라인브랜치라인 수
MailAccountController0.0%–0 / 7
MailAccountPasswordConfig0.0%0.0%0 / 5
MailSecretCipher89.2%87.5%33 / 37
MailAccountPasswordStore90.3%83.3%28 / 31
MailAccountPasswordConflictException0.0%–0 / 2
MailAccountPasswordHistoryEntity77.8%–7 / 9
MailAccountService95.2%91.7%40 / 42
MailAccountPasswordEntity90.0%–9 / 10
SmtpMailConfig80.0%–4 / 5
SmtpMailProperties88.9%75.0%8 / 9
MailAccountPasswordChange100.0%–1 / 1
MailAccountPasswordConfirmationException100.0%–2 / 2
MailAccountPasswordResetNotAllowedException100.0%–2 / 2
MailAccountPasswordResetRequest100.0%–1 / 1
MailAccountPasswordStartupCheck100.0%100.0%11 / 11
MailAccountView100.0%–1 / 1
MailSecretException100.0%–4 / 4
MailTestController100.0%–9 / 9
SmtpCredentialProvider100.0%100.0%8 / 8
SmtpMailDeliveryAdapter100.0%66.7%24 / 24
SmtpMailSenderFactory100.0%87.5%23 / 23
organization-corecore89.5%85.6%90.8%79.5%697 / 779
파일 37개 · 덜 덮인 순 OrganizationService 95.0% · UserController 0.0% · OrganizationCredentialStoreAdapter 0.0%
클래스라인브랜치라인 수
OrganizationService95.0%77.8%249 / 262
UserController0.0%–0 / 12
OrganizationCredentialStoreAdapter0.0%–0 / 10
UserCredentialEntity0.0%–0 / 9
MenuPermissionController0.0%–0 / 8
DepartmentController0.0%–0 / 4
RefreshTokenEntity66.7%–8 / 12
RoleController0.0%–0 / 4
RoleEntity72.7%–8 / 11
UserRoleEntity66.7%–6 / 9
OrganizationRefreshTokenStoreAdapter91.7%100.0%22 / 24
OrganizationScopeAdapter98.2%92.9%111 / 113
UserRoleSelector66.7%0.0%4 / 6
UserSupplementEntity80.0%–8 / 10
OrganizationConfig0.0%–0 / 1
RoleMenuPermissionEntity92.3%–12 / 13
UserEntity93.3%–14 / 15
UserRoleAssignmentService98.1%89.3%53 / 54
DepartmentEntity100.0%100.0%13 / 13
DepartmentNotFoundException100.0%–2 / 2
DuplicateMenuPermissionAssignmentException100.0%–2 / 2
DuplicateUserEmailException100.0%–2 / 2
EmptyUserRoleAssignmentException100.0%–2 / 2
FixedRoleMenuPermissionException100.0%–2 / 2
MenuPermissionService100.0%100.0%94 / 94
OrganizationProperties100.0%–2 / 2
OrganizationUserAccountLookupAdapter100.0%100.0%18 / 18
OrganizationUserEmailLookupAdapter100.0%87.5%12 / 12
OrganizationUserSupplementAdapter100.0%100.0%15 / 15
OrganizationUserSupplementStoreAdapter100.0%–12 / 12
RoleNotFoundException100.0%–2 / 2
UnknownMenuPermissionMenuException100.0%–2 / 2
UnknownMenuPermissionRoleException100.0%–2 / 2
UnknownUserRoleAssignmentException100.0%–2 / 2
UserNotFoundException100.0%–2 / 2
UserProfileUpdateService100.0%100.0%14 / 14
UserRoleAssignNotAllowedException100.0%–2 / 2
smartreview-corecore59.2%59.1%55.8%50.0%93 / 157
파일 6개 · 덜 덮인 순 SmartReviewInvestigationMetadataAdapter 45.7% · SmartReviewConnectionPool 0.0% · SmartReviewOrganizationDirectoryAdapter 78.7%
클래스라인브랜치라인 수
SmartReviewInvestigationMetadataAdapter45.7%41.7%16 / 35
SmartReviewConnectionPool0.0%–0 / 17
SmartReviewOrganizationDirectoryAdapter78.7%61.1%59 / 75
SmartReviewConfig0.0%–0 / 6
SmartReviewUserDirectoryAdapter78.3%71.4%18 / 23
SmartReviewProperties0.0%–0 / 1
workflow-corecore93.3%89.2%93.2%88.0%518 / 555
파일 22개 · 덜 덮인 순 WorkflowEngineImpl 94.8% · NoopStepHandler 0.0% · WorkflowStepEntity 83.9%
클래스라인브랜치라인 수
WorkflowEngineImpl94.8%89.2%181 / 191
NoopStepHandler0.0%–0 / 5
WorkflowStepEntity83.9%50.0%26 / 31
WorkflowDefinitionEntity77.8%–14 / 18
WorkflowDefinitionSelector85.7%91.7%24 / 28
WorkflowStepExecutionEntity87.5%–28 / 32
StepResult75.0%–6 / 8
WorkflowExecutionEntity95.2%75.0%40 / 42
WorkflowProgressPortImpl98.7%92.1%77 / 78
AmbiguousWorkflowDefinitionException100.0%–2 / 2
GateDecision100.0%–4 / 4
PortBackedStepGate100.0%–9 / 9
PortBackedStepHandler100.0%100.0%20 / 20
StepContext100.0%50.0%3 / 3
WorkflowConfig100.0%–1 / 1
WorkflowDefinitionNotFoundException100.0%–2 / 2
WorkflowDefinitionProperties100.0%75.0%16 / 16
WorkflowExecutionAlreadyRunningException100.0%–2 / 2
WorkflowExecutionNotFoundException100.0%–2 / 2
WorkflowLauncherPortImpl100.0%100.0%51 / 51
WorkflowStepHandlerNotFoundException100.0%–2 / 2
WorkflowStepHandlerRegistry100.0%100.0%8 / 8
hwss-api앱80.0%–85.3%75.0%8 / 10
파일 2개 · 덜 덮인 순 HwssApiApplication 33.3% · OpenApiConfig 100.0%
클래스라인브랜치라인 수
HwssApiApplication33.3%–1 / 3
OpenApiConfig100.0%–7 / 7
audit-sharedshared 테스트 없음 — 단위 리포트가 생성되지 않았다–––––
chat-sharedshared 테스트 없음 — 단위 리포트가 생성되지 않았다–––––
classification-sharedshared 테스트 없음 — 단위 리포트가 생성되지 않았다–––––
code-sharedshared 테스트 없음 — 단위 리포트가 생성되지 않았다–––––
collection-sharedshared 테스트 없음 — 단위 리포트가 생성되지 않았다–––––
investigation-sharedshared 테스트 없음 — 단위 리포트가 생성되지 않았다–––––
organization-sharedshared 테스트 없음 — 단위 리포트가 생성되지 않았다–––––
workflow-sharedshared 테스트 없음 — 단위 리포트가 생성되지 않았다–––––
합계84.3%75.8%84.2%79.2%12989 / 15401

프론트엔드 · Vitest

영역별 커버리지

app/ 아래 파일은 화면 라우트로 묶는다(_components·_lib 는 그 화면에 붙는다). lib/·components/ 는 바로 아래 폴더 단위. 테스트가 한 번도 싣지 않은 파일도 0% 로 셈에 넣는다(vitest.config.mts coverage.include).

영역파일라인브랜치함수구문라인 수
/화면50.0%0.0%0.0%0.0%0 / 20
파일 5개 · 덜 덮인 순 msw-provider.tsx 0.0% · providers.tsx 0.0% · layout.tsx 0.0%
파일라인브랜치라인 수
msw-provider.tsx0.0%0.0%0 / 13
providers.tsx0.0%–0 / 3
layout.tsx0.0%–0 / 2
(workspace)/layout.tsx0.0%–0 / 1
page.tsx0.0%–0 / 1
/admin화면899.1%87.0%97.9%98.5%229 / 231
파일 8개 · 덜 덮인 순 _components/statistics-dashboard-view.tsx 94.7% · layout.tsx 0.0% · _components/business-statistics-tab.tsx 100.0%
파일라인브랜치라인 수
_components/statistics-dashboard-view.tsx94.7%80.0%18 / 19
layout.tsx0.0%–0 / 1
_components/business-statistics-tab.tsx100.0%87.9%26 / 26
_components/dashboard-charts.tsx100.0%82.8%87 / 87
_components/system-statistics-tab.tsx100.0%97.4%25 / 25
_lib/queries.ts100.0%100.0%4 / 4
_lib/statistics-dashboard.ts100.0%85.3%68 / 68
page.tsx100.0%–1 / 1
/admin/approval-center화면1391.0%81.7%87.3%89.3%252 / 277
파일 13개 · 덜 덮인 순 _components/approval-detail-dialog.tsx 80.0% · _components/review-file-viewer.tsx 92.3% · _lib/approval.ts 94.7%
/admin/approval-center/review화면475.0%61.4%79.2%75.4%48 / 64
파일 4개 · 덜 덮인 순 _components/review-file-table.tsx 63.6% · page.tsx 0.0% · _components/approval-review-view.tsx 95.2%
파일라인브랜치라인 수
_components/review-file-table.tsx63.6%20.0%21 / 33
page.tsx0.0%0.0%0 / 3
_components/approval-review-view.tsx95.2%70.0%20 / 21
_components/review-decision-panel.tsx100.0%90.0%7 / 7
/admin/audit-logs화면598.9%88.4%97.8%98.1%92 / 93
파일 5개 · 덜 덮인 순 _components/audit-log-view.tsx 95.7% · _components/audit-log-filters.tsx 100.0% · _lib/audit-log.ts 100.0%
파일라인브랜치라인 수
_components/audit-log-view.tsx95.7%87.0%22 / 23
_components/audit-log-filters.tsx100.0%75.0%20 / 20
_lib/audit-log.ts100.0%89.7%45 / 45
_lib/queries.ts100.0%100.0%4 / 4
page.tsx100.0%–1 / 1
/admin/classification-mappings화면595.6%78.6%90.5%92.3%175 / 183
파일 5개 · 덜 덮인 순 _components/classification-mapping-table.tsx 89.2% · _components/classification-mapping-view.tsx 100.0% · _lib/mapping.ts 100.0%
파일라인브랜치라인 수
_components/classification-mapping-table.tsx89.2%74.7%66 / 74
_components/classification-mapping-view.tsx100.0%91.0%55 / 55
_lib/mapping.ts100.0%68.1%48 / 48
_lib/queries.ts100.0%–5 / 5
page.tsx100.0%–1 / 1
/admin/client-workspace화면397.8%89.2%100.0%98.3%45 / 46
파일 3개 · 덜 덮인 순 _lib/onboarding.ts 93.8% · _components/client-workspace-view.tsx 100.0% · page.tsx 100.0%
파일라인브랜치라인 수
_lib/onboarding.ts93.8%79.3%15 / 16
_components/client-workspace-view.tsx100.0%95.6%29 / 29
page.tsx100.0%–1 / 1
파일 5개 · 덜 덮인 순 page.tsx 97.0% · _components/disclosure-link-table.tsx 100.0% · _components/edit-disclosure-url-dialog.tsx 100.0%
파일라인브랜치라인 수
page.tsx97.0%72.7%32 / 33
_components/disclosure-link-table.tsx100.0%100.0%9 / 9
_components/edit-disclosure-url-dialog.tsx100.0%90.0%7 / 7
_lib/disclosure-link.ts100.0%100.0%18 / 18
_lib/queries.ts100.0%–7 / 7
/admin/mail-account화면896.6%81.9%93.2%93.0%140 / 145
파일 8개 · 덜 덮인 순 _components/mail-account-summary.tsx 85.0% · _components/password-reset-form.tsx 91.7% · page.tsx 92.9%
파일라인브랜치라인 수
_components/mail-account-summary.tsx85.0%53.8%17 / 20
_components/password-reset-form.tsx91.7%66.7%11 / 12
page.tsx92.9%100.0%13 / 14
_components/mail-dispatch-log-section.tsx100.0%79.5%45 / 45
_lib/mail-account.ts100.0%100.0%11 / 11
_lib/mail-dispatch-log.ts100.0%91.2%27 / 27
_lib/queries.ts100.0%–9 / 9
_lib/reset-form.ts100.0%100.0%7 / 7
/admin/organization화면895.9%80.5%94.1%94.5%234 / 244
파일 8개 · 덜 덮인 순 _components/organization-view.tsx 95.2% · _lib/role-edit.ts 88.5% · _components/user-detail-dialog.tsx 92.3%
파일라인브랜치라인 수
_components/organization-view.tsx95.2%78.7%100 / 105
_lib/role-edit.ts88.5%82.1%23 / 26
_components/user-detail-dialog.tsx92.3%78.0%24 / 26
_components/department-tree.tsx100.0%94.1%10 / 10
_components/user-role-cell-editor.tsx100.0%71.7%38 / 38
_lib/queries.ts100.0%83.3%18 / 18
_lib/tree.ts100.0%100.0%20 / 20
page.tsx100.0%–1 / 1
/admin/permissions화면4100.0%76.3%100.0%100.0%74 / 74
파일 4개 · 덜 덮인 순 _components/permission-matrix-table.tsx 100.0% · _lib/matrix.ts 100.0% · _lib/queries.ts 100.0%
파일라인브랜치라인 수
_components/permission-matrix-table.tsx100.0%68.0%14 / 14
_lib/matrix.ts100.0%75.0%24 / 24
_lib/queries.ts100.0%–5 / 5
page.tsx100.0%100.0%31 / 31
/admin/report-types화면699.0%90.3%97.9%99.1%97 / 98
파일 6개 · 덜 덮인 순 page.tsx 97.1% · _components/add-claim-type-dialog.tsx 100.0% · _components/claim-type-table.tsx 100.0%
파일라인브랜치라인 수
page.tsx97.1%81.8%34 / 35
_components/add-claim-type-dialog.tsx100.0%75.0%6 / 6
_components/claim-type-table.tsx100.0%100.0%12 / 12
_lib/claim-type.ts100.0%93.8%16 / 16
_lib/queries.ts100.0%–6 / 6
_lib/report-type-guideline.ts100.0%95.0%23 / 23
/admin/statistics/lifecycle화면698.4%96.0%95.2%97.2%125 / 127
파일 6개 · 덜 덮인 순 _components/department-multi-select.tsx 85.7% · _components/lifecycle-statistics-filters.tsx 93.3% · _components/lifecycle-statistics-view.tsx 100.0%
파일라인브랜치라인 수
_components/department-multi-select.tsx85.7%75.0%6 / 7
_components/lifecycle-statistics-filters.tsx93.3%100.0%14 / 15
_components/lifecycle-statistics-view.tsx100.0%91.3%29 / 29
_lib/lifecycle-statistics.ts100.0%98.5%68 / 68
_lib/queries.ts100.0%–7 / 7
page.tsx100.0%–1 / 1
/admin/statistics/unmapped화면698.1%85.9%96.0%96.8%203 / 207
파일 6개 · 덜 덮인 순 _components/unmapped-queue-view.tsx 95.2% · _components/resolve-dialog.tsx 98.0% · _components/unmapped-queue-filters.tsx 100.0%
파일라인브랜치라인 수
_components/unmapped-queue-view.tsx95.2%82.2%59 / 62
_components/resolve-dialog.tsx98.0%90.8%50 / 51
_components/unmapped-queue-filters.tsx100.0%100.0%10 / 10
_lib/queries.ts100.0%100.0%9 / 9
_lib/unmapped-queue.ts100.0%83.7%74 / 74
page.tsx100.0%–1 / 1
/admin/summary-baseline화면896.6%72.7%92.4%95.3%169 / 175
파일 8개 · 덜 덮인 순 _components/summary-skeleton-section-card.tsx 77.8% · _components/summary-skeleton-editor.tsx 97.8% · _lib/summary-skeleton.ts 98.5%
/auth/start화면1100.0%100.0%100.0%100.0%9 / 9
파일 1개 · 덜 덮인 순 route.ts 100.0%
파일라인브랜치라인 수
route.ts100.0%100.0%9 / 9
/auth/unregistered화면1100.0%–100.0%100.0%1 / 1
파일 1개 · 덜 덮인 순 page.tsx 100.0%
파일라인브랜치라인 수
page.tsx100.0%–1 / 1
/login화면288.6%80.4%88.9%89.5%31 / 35
파일 2개 · 덜 덮인 순 page.tsx 0.0% · _components/login-form.tsx 96.9%
파일라인브랜치라인 수
page.tsx0.0%0.0%0 / 3
_components/login-form.tsx96.9%97.4%31 / 32
/onboarding화면277.4%55.6%81.8%78.1%24 / 31
파일 2개 · 덜 덮인 순 _components/onboarding-form.tsx 82.8% · page.tsx 0.0%
파일라인브랜치라인 수
_components/onboarding-form.tsx82.8%62.5%24 / 29
page.tsx0.0%0.0%0 / 2
/user화면20.0%–0.0%0.0%0 / 2
파일 2개 · 덜 덮인 순 layout.tsx 0.0% · page.tsx 0.0%
파일라인브랜치라인 수
layout.tsx0.0%–0 / 1
page.tsx0.0%–0 / 1
/user/agent화면796.0%84.6%90.7%96.3%120 / 125
파일 7개 · 덜 덮인 순 _components/knowledge-collection-dialog.tsx 90.3% · _components/chat-conversation.tsx 91.7% · page.tsx 93.8%
파일라인브랜치라인 수
_components/knowledge-collection-dialog.tsx90.3%80.7%28 / 31
_components/chat-conversation.tsx91.7%71.4%11 / 12
page.tsx93.8%83.3%15 / 16
_components/chat-composer.tsx100.0%100.0%27 / 27
_components/chat-source-list.tsx100.0%70.0%7 / 7
_lib/chat.ts100.0%96.2%27 / 27
_lib/queries.ts100.0%–5 / 5
/user/agent/[sessionId]화면1100.0%92.9%100.0%100.0%18 / 18
파일 1개 · 덜 덮인 순 page.tsx 100.0%
파일라인브랜치라인 수
page.tsx100.0%92.9%18 / 18
/user/collections화면690.7%73.5%93.2%88.0%97 / 107
파일 6개 · 덜 덮인 순 _components/collection-list-view.tsx 87.7% · _components/collection-form-dialog.tsx 84.2% · _lib/collection-form.ts 100.0%
파일라인브랜치라인 수
_components/collection-list-view.tsx87.7%61.8%50 / 57
_components/collection-form-dialog.tsx84.2%75.0%16 / 19
_lib/collection-form.ts100.0%100.0%7 / 7
_lib/collection-list.ts100.0%93.8%16 / 16
_lib/queries.ts100.0%–7 / 7
page.tsx100.0%–1 / 1
/user/collections/[id]화면689.8%72.0%93.2%88.8%115 / 128
파일 6개 · 덜 덮인 순 _components/collection-file-table.tsx 71.4% · _components/collection-file-upload-dialog.tsx 80.0% · page.tsx 0.0%
파일라인브랜치라인 수
_components/collection-file-table.tsx71.4%48.1%20 / 28
_components/collection-file-upload-dialog.tsx80.0%64.3%8 / 10
page.tsx0.0%–0 / 2
_components/collection-detail-view.tsx98.4%76.7%62 / 63
_lib/collection-detail.ts100.0%100.0%16 / 16
_lib/queries.ts100.0%–9 / 9
/user/conversations화면192.0%83.3%88.9%92.9%23 / 25
파일 1개 · 덜 덮인 순 page.tsx 92.0%
파일라인브랜치라인 수
page.tsx92.0%83.3%23 / 25
/user/investigations화면1397.4%95.2%94.2%97.4%225 / 231
파일 13개 · 덜 덮인 순 _components/investigation-list-filters.tsx 94.9% · _components/investigation-list-view.tsx 93.8% · _components/processing-failure-badge.tsx 100.0%
파일라인브랜치라인 수
_components/investigation-list-filters.tsx94.9%93.2%56 / 59
_components/investigation-list-view.tsx93.8%88.2%45 / 48
_components/processing-failure-badge.tsx100.0%100.0%2 / 2
_components/risk-sub-status-badges.tsx100.0%–2 / 2
_components/workflow-status-badge.tsx100.0%100.0%2 / 2
_lib/investigator.ts100.0%100.0%5 / 5
_lib/list-filter.ts100.0%95.3%55 / 55
_lib/list-status.ts100.0%100.0%3 / 3
_lib/org-scope.ts100.0%100.0%15 / 15
_lib/queries.ts100.0%100.0%20 / 20
_lib/view-stage.ts100.0%100.0%7 / 7
_lib/workflow-status.ts100.0%100.0%12 / 12
page.tsx100.0%–1 / 1
/user/investigations/[reportNo]화면4390.1%78.2%81.2%89.1%1179 / 1309
파일 43개 · 덜 덮인 순 _components/analysis-condition-modal.tsx 54.9% · _components/application-question-block.tsx 34.2% · _components/summary-section-panel.tsx 83.0%
파일라인브랜치라인 수
_components/analysis-condition-modal.tsx54.9%66.9%62 / 113
_components/application-question-block.tsx34.2%47.2%13 / 38
_components/summary-section-panel.tsx83.0%61.2%73 / 88
_components/summary-section-dock.tsx89.4%75.6%84 / 94
_components/analysis-summary-center.tsx90.0%75.0%45 / 50
_components/report-draft-editor.tsx83.3%59.3%20 / 24
_lib/use-summary-actions.ts91.7%100.0%44 / 48
_components/investigation-workspace.tsx95.2%79.3%59 / 62
_components/page-image-viewer.tsx94.0%82.8%47 / 50
_components/extraction-panel.tsx95.2%84.0%40 / 42
page.tsx0.0%–0 / 2
_components/classification-panel.tsx96.7%88.9%29 / 30
_components/classification-review-center.tsx94.7%91.7%18 / 19
_components/document-box.tsx98.2%91.4%55 / 56
_lib/analysis-request.ts98.8%88.3%80 / 81
_lib/queries.ts97.4%–38 / 39
_lib/use-reanalysis-actions.ts95.0%87.5%19 / 20
_components/access-denied-notice.tsx100.0%75.0%3 / 3
_components/center-header.tsx100.0%100.0%3 / 3
_components/extraction-review-center.tsx100.0%76.9%21 / 21
_components/processing-failure-dialog.tsx100.0%100.0%5 / 5
_components/reanalysis-actions.tsx100.0%72.2%10 / 10
_components/reanalysis-confirm-dialog.tsx100.0%92.9%10 / 10
_components/result-query-gate.tsx100.0%100.0%13 / 13
_components/source-page-button.tsx100.0%100.0%2 / 2
_components/start-classification-button.tsx100.0%50.0%7 / 7
_components/transfer-history.tsx100.0%50.0%6 / 6
_components/workflow-stepper.tsx100.0%93.8%12 / 12
_components/workspace-center.tsx100.0%88.9%20 / 20
_components/workspace-header.tsx100.0%88.9%5 / 5
_lib/application-form-templates.ts100.0%65.8%35 / 35
_lib/extraction-review.ts100.0%86.6%77 / 77
_lib/page-classification.ts100.0%80.3%66 / 66
_lib/summary-sources.ts100.0%94.4%15 / 15
_lib/summary-stage.ts100.0%78.6%22 / 22
_lib/use-classification-actions.ts100.0%–24 / 24
_lib/use-extraction-actions.ts100.0%–9 / 9
_lib/use-progress-sync.ts100.0%100.0%23 / 23
_lib/view-access.ts100.0%100.0%16 / 16
_lib/workflow-progress.ts100.0%96.2%23 / 23
_lib/workspace-pages.ts100.0%84.6%10 / 10
_lib/workspace-refresh.ts100.0%–5 / 5
_lib/workspace-steps.ts100.0%91.7%11 / 11
components/admin공용 코드491.7%94.1%75.0%92.3%11 / 12
파일 4개 · 덜 덮인 순 admin-shell.tsx 0.0% · admin-access-guard.tsx 100.0% · draft-save-actions.tsx 100.0%
파일라인브랜치라인 수
admin-shell.tsx0.0%–0 / 1
admin-access-guard.tsx100.0%83.3%7 / 7
draft-save-actions.tsx100.0%100.0%2 / 2
draft-save-notices.tsx100.0%100.0%2 / 2
components/common공용 코드1598.3%81.2%93.3%96.9%173 / 176
파일 15개 · 덜 덮인 순 page-container.tsx 0.0% · workspace-nav-group.tsx 93.3% · workspace-shell.tsx 0.0%
파일라인브랜치라인 수
page-container.tsx0.0%0.0%0 / 1
workspace-nav-group.tsx93.3%53.3%14 / 15
workspace-shell.tsx0.0%–0 / 1
console-switcher.tsx100.0%100.0%5 / 5
menu-page-heading.tsx100.0%100.0%7 / 7
onboarding-guard.tsx100.0%100.0%13 / 13
request-error-banner.tsx100.0%100.0%2 / 2
workspace-menu.ts100.0%80.0%27 / 27
workspace-nav-footer.tsx100.0%85.7%2 / 2
workspace-nav-icons.ts100.0%50.0%6 / 6
workspace-nav-label.tsx100.0%100.0%2 / 2
workspace-nav-menu-item.tsx100.0%79.4%12 / 12
workspace-nav-recent.tsx100.0%90.0%30 / 30
workspace-nav-user-card.tsx100.0%90.9%7 / 7
workspace-nav.tsx100.0%84.7%46 / 46
components/ui공용 코드3284.0%86.1%74.8%84.0%273 / 325
파일 32개 · 덜 덮인 순 alert-dialog.tsx 0.0% · select.tsx 0.0% · dropdown-menu.tsx 43.8%
파일라인브랜치라인 수
alert-dialog.tsx0.0%0.0%0 / 13
select.tsx0.0%0.0%0 / 11
dropdown-menu.tsx43.8%55.6%7 / 16
data-table.tsx91.2%84.3%73 / 80
radio-group.tsx0.0%–0 / 3
badge.tsx0.0%0.0%0 / 2
character-counter.tsx96.6%77.4%56 / 58
card.tsx85.7%100.0%6 / 7
dialog.tsx90.9%83.3%10 / 11
pagination.tsx94.7%93.8%18 / 19
table.tsx88.9%–8 / 9
tabs.tsx83.3%100.0%5 / 6
alert-banner.tsx100.0%100.0%6 / 6
button.tsx100.0%100.0%2 / 2
checkbox.tsx100.0%–2 / 2
confirm-dialog.tsx100.0%96.0%18 / 18
empty-state.tsx100.0%100.0%1 / 1
field.tsx100.0%100.0%7 / 7
filter-bar.tsx100.0%100.0%7 / 7
inline-edit-text.tsx100.0%95.0%25 / 25
input.tsx100.0%–1 / 1
kebab-menu.tsx100.0%100.0%3 / 3
label.tsx100.0%–2 / 2
modal-frame.tsx100.0%90.9%3 / 3
native-select.tsx100.0%–1 / 1
page-heading.tsx100.0%100.0%1 / 1
section-card.tsx100.0%100.0%2 / 2
skeleton.tsx100.0%–1 / 1
sonner.tsx100.0%100.0%4 / 4
status-badge.tsx100.0%100.0%2 / 2
textarea.tsx100.0%–1 / 1
three-column-layout.tsx100.0%100.0%1 / 1
components/user공용 코드10.0%–0.0%0.0%0 / 1
파일 1개 · 덜 덮인 순 user-shell.tsx 0.0%
파일라인브랜치라인 수
user-shell.tsx0.0%–0 / 1
lib/api공용 코드695.9%93.9%95.8%94.6%47 / 49
파일 6개 · 덜 덮인 순 client.ts 93.3% · envelope.ts 100.0% · error-message.ts 100.0%
파일라인브랜치라인 수
client.ts93.3%87.5%28 / 30
envelope.ts100.0%100.0%7 / 7
error-message.ts100.0%100.0%1 / 1
query-client.ts100.0%100.0%4 / 4
single-flight.ts100.0%–5 / 5
sort-contract.ts100.0%–2 / 2
lib/auth공용 코드4100.0%100.0%100.0%100.0%24 / 24
파일 4개 · 덜 덮인 순 api.ts 100.0% · cookies.ts 100.0% · queries.ts 100.0%
파일라인브랜치라인 수
api.ts100.0%100.0%6 / 6
cookies.ts100.0%–4 / 4
queries.ts100.0%100.0%6 / 6
redirect.ts100.0%100.0%8 / 8
lib/chat공용 코드2100.0%100.0%100.0%100.0%24 / 24
파일 2개 · 덜 덮인 순 last-used.ts 100.0% · queries.ts 100.0%
파일라인브랜치라인 수
last-used.ts100.0%100.0%20 / 20
queries.ts100.0%–4 / 4
lib/collection-approvals공용 코드1100.0%–100.0%100.0%4 / 4
파일 1개 · 덜 덮인 순 queries.ts 100.0%
파일라인브랜치라인 수
queries.ts100.0%–4 / 4
lib/customer-companies공용 코드1100.0%87.5%100.0%100.0%12 / 12
파일 1개 · 덜 덮인 순 queries.ts 100.0%
파일라인브랜치라인 수
queries.ts100.0%87.5%12 / 12
lib/env.ts공용 코드10.0%––0.0%0 / 2
파일 1개 · 덜 덮인 순 env.ts 0.0%
파일라인브랜치라인 수
env.ts0.0%–0 / 2
lib/file공용 코드1100.0%–100.0%100.0%6 / 6
파일 1개 · 덜 덮인 순 download-blob.ts 100.0%
파일라인브랜치라인 수
download-blob.ts100.0%–6 / 6
lib/filter공용 코드1100.0%100.0%100.0%100.0%12 / 12
파일 1개 · 덜 덮인 순 use-filter-draft.ts 100.0%
파일라인브랜치라인 수
use-filter-draft.ts100.0%100.0%12 / 12
lib/format공용 코드3100.0%100.0%100.0%100.0%29 / 29
파일 3개 · 덜 덮인 순 date-input.ts 100.0% · date-time.ts 100.0% · file-size.ts 100.0%
파일라인브랜치라인 수
date-input.ts100.0%100.0%10 / 10
date-time.ts100.0%100.0%10 / 10
file-size.ts100.0%100.0%9 / 9
lib/react공용 코드2100.0%100.0%100.0%100.0%17 / 17
파일 2개 · 덜 덮인 순 use-reset-on-open.ts 100.0% · use-validated-text-field.ts 100.0%
파일라인브랜치라인 수
use-reset-on-open.ts100.0%100.0%5 / 5
use-validated-text-field.ts100.0%100.0%12 / 12
lib/url공용 코드2100.0%100.0%100.0%100.0%23 / 23
파일 2개 · 덜 덮인 순 search-params.ts 100.0% · use-search-param-nav.ts 100.0%
파일라인브랜치라인 수
search-params.ts100.0%100.0%14 / 14
use-search-param-nav.ts100.0%–9 / 9
lib/utils.ts공용 코드1100.0%–100.0%100.0%1 / 1
파일 1개 · 덜 덮인 순 utils.ts 100.0%
파일라인브랜치라인 수
utils.ts100.0%–1 / 1
proxy.ts루트10.0%0.0%0.0%0.0%0 / 7
파일 1개 · 덜 덮인 순 proxy.ts 0.0%
파일라인브랜치라인 수
proxy.ts0.0%0.0%0 / 7
합계25792.7%81.8%88.3%91.8%4454 / 4803

수치는 보고 전용 — 최소 % 게이트는 보류 상태다(docs/decisions/20260723-testing-coverage-lint.md). 측정·전달 경로와 공개 범위: docs/decisions/20261006-test-coverage-docs-site.md · 설정: docs-site/README.md §8. 모듈·영역 행 아래 파일 목록을 펼치면 파일별 수치가 보이고, 파일을 누르면 백엔드·프론트엔드 가이드의 그 파일 행으로 간다. 두 가이드의 파일 행에도 같은 수치가 뱃지로 붙는다.