hwss-investigation-agent-backend
HWSS 백엔드 가이드
폴더(모듈 → 패키지) 단위로 무엇이 있는지와 파일마다 맡은 역할을 정리했습니다. 역할 문장은 각 클래스의 Javadoc 첫 문장을 옮겼고, 주석이 없는 파일은 이름 규칙으로 보충했습니다. 파일 이름을 누르면 GitHub 소스로 가고, 최근 변경된 파일은 강조됩니다. 컨트롤러 행에는 그 API 를 부르는 프론트 화면이 연결됩니다. 코드에 쓰인 W·N·ST·DP 번호는 주말·야간 작업 플랜의 항목 번호, S-00x 는 docs/specs 스펙 번호입니다. 섹션 제목 옆 말풍선으로 댓글을, 이슈 버튼으로 GitHub 이슈를 남길 수 있습니다.
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 빌드 · 빌드 런
모듈 계층과 의존 방향
base공통 응답·예외·인증 골격·포트 인터페이스<domain>-sharedDTO·enum 계약 (base 에만 의존)<domain>-core엔티티·저장소·서비스·컨트롤러·마이그레이션 (base + 자기 shared)apps/hwss-api전부 조합해 실행
도메인 core 끼리는 직접 의존할 수 없어서, 서로 부를 때는 base 의 *Port 인터페이스를 거치고 구현체는 각 모듈의 integration/·port/ 패키지에 둡니다. 빌드의 verifyModuleDependencies 가 이 방향을 강제합니다.
패키지 이름이 뜻하는 것
- web/
- REST 컨트롤러
- service/
- 비즈니스 로직·트랜잭션
- entity/
- JPA 엔티티(테이블)
- repository/
- Spring Data 저장소
- exception/
- 도메인 예외·에러 코드
- config/
- hwss.* 설정 바인딩
- integration/
- base 포트 구현체
- dto/ · status/
- shared 계약·enum
시작하기
로컬 실행 · Swagger
JDK 17 이상 · Docker 필요 · 모든 명령은 hwss-investigation-agent-backend/ 에서 실행
접속 주소
http://localhost:8080/swagger-ui.html
OpenAPI JSONhttp://localhost:8080/v3/api-docs
헬스 체크http://localhost:8080/actuator/health
메트릭http://localhost:8080/actuator/prometheus
http://localhost:8080/api/v1/… — 포트는 server.port: 8080Swagger UI 는 /swagger-ui/index.html 로 이동해 열립니다. Swagger 와 api-docs 경로는 세션 없이 열리고, 문서의 서버 주소는 같은 오리진(/)으로 고정돼 있어 “Try it out” 이 지금 연 호스트로 요청을 보냅니다.
Swagger 에서 로그인이 필요한 API 부르기
조사자·관리자 API 는 세션 쿠키가 없으면 401 입니다. Swagger 에서 먼저 로그인하면 브라우저가 httpOnly 쿠키를 저장해 이후 요청에 자동으로 붙입니다.
# auth-controller → POST /api/v1/auth/login { "employeeNo": "H2016-0071", "password": "devpass" }
H2016-0071 은 마이그레이션이 넣어 두는 시드 시스템 관리자이고, 비밀번호는 AUTH_LOCAL_PASSWORD 값(셸·.env, 없으면 Infisical)입니다. 이 로그인은 local 프로필에서만 동작합니다.
로그인 전 경로(auth/login·auth/refresh·auth/logout·auth/sso/**)와 이미지시스템 수신 API 를 빼면 모든 API 가 세션을 요구합니다. 컨트롤러의 접근 표시(@MenuPermission·@LoginRequired)를 인가 인터셉터가 보고 세션이 없으면 401, 메뉴 권한이 없으면 403 을 냅니다.
1PostgreSQL 띄우기
docker compose up -d # postgres:16 · DB/계정/비밀번호 모두 hwss · 5432
5432 를 다른 PostgreSQL 이 쓰고 있으면(role "hwss" does not exist) 컨테이너를 5433 으로 띄우고 기동 명령에 DB_URL=jdbc:postgresql://localhost:5433/hwss 를 더합니다. 테이블은 앱이 기동하면서 Flyway 로 만듭니다.
2 서버 기동 — bootRun
DB_PASSWORD=hwss \ AUTH_JWT_SECRET=local-dev-only-secret-key-32bytes-min \ AUTH_LOCAL_PASSWORD=devpass \ SPRING_PROFILES_ACTIVE=local \ ./gradlew :hwss-api:bootRun
$env:DB_PASSWORD="hwss" $env:AUTH_JWT_SECRET="local-dev-only-secret-key-32bytes-min" $env:AUTH_LOCAL_PASSWORD="devpass" $env:SPRING_PROFILES_ACTIVE="local" .\gradlew.bat :hwss-api:bootRun
로그에 Successfully applied … migrations 와 Started HwssApiApplication 이 보이면 성공입니다. bootRun 은 먼저 개발 시크릿 저장소(Infisical)의 팀 공용 값을 넣습니다 — 우선순위는 셸 환경변수 > apps/hwss-api/.env > Infisical > application*.yml 기본값이고, CLI 가 없거나 로그인·터널이 안 돼 있으면 경고만 내고 .env 만으로 뜹니다(끄기 -PnoSecrets, 안내 docs/guides/dev-secrets-infisical.md). 위 명령은 셸 값이 앞서 개인 DB 로 뜨고, 셸·.env 를 비운 채 띄우면 Infisical 값(local,dev-shared)으로 공용 DB 에 붙습니다. DB_PASSWORD·AUTH_JWT_SECRET 은 기본값이 일부러 없어서 어느 경로로도 값이 없으면 기동이 실패합니다. 프로필은 --args='--spring.profiles.active=local' 로 줘도 같습니다.
환경변수
DB_PASSWORD필수 | DB 비밀번호. 로컬 compose 는 hwss. |
AUTH_JWT_SECRET필수 | 세션 JWT 서명 키 — 32바이트 이상 아무 문자열(로컬 전용 값). |
SPRING_PROFILES_ACTIVE=local | 기본값도 local — 개발용 로그인 스텁(LocalDevIdentityProvider)을 켠다. local 을 뺀 프로필이면 이 로그인이 없다. 공용 DB 는 local,dev-shared. |
AUTH_LOCAL_PASSWORD | local 프로필 공용 로그인 비밀번호. 비우면 로그인 자체가 막힌다. |
DB_URL · DB_USERNAME | 기본 jdbc:postgresql://localhost:5432/hwss · hwss. |
IMAGE_INCOMING_ROOT | 이미지시스템과 공유하는 ZIP 수신 폴더(기본 runtime/incoming). 이미지시스템 데모와 같은 절대 경로여야 API-02 가 동작. IMAGE_STORAGE=s3 면 파일 원본은 S3 로 간다. |
IMAGE_PROCESSING_ROOT | ZIP 압축 해제·낱장 파일 처리 폴더(기본 runtime/image-processing). |
COLLECTION_STORAGE_ROOT | 지식컬렉션 업로드 파일 저장 폴더(기본 runtime/collections). COLLECTION_ORIGINAL_STORAGE=s3 면 원본은 S3 로 간다. |
AI_PLATFORM_PROVIDER | none(기본, in-memory) 또는 studio(업스테이지 Studio 접속 설정 필요). |
MAIL_ENABLED | SMTP 발송 켜기(기본 false). 켜면 MAIL_HOST·MAIL_USERNAME·MAIL_PASSWORD·MAIL_FROM 등이 필요. |
SMARTREVIEW_ENABLED | 스마트심사 오라클 사용자·조직 라이브 조회(기본 false). |
AUTH_SSO_ENABLED | SSO 콜백 로그인 켜기(기본 false). 앞단 WebAgent 가 있어야 동작. |
자주 쓰는 Gradle 명령
./gradlew :hwss-api:bootRun | 서버 기동 (위 환경변수와 함께). |
./gradlew build | 전체 빌드 — 테스트 · spotlessCheck · verifyModuleDependencies · JaCoCo 리포트까지 한 번에. |
./gradlew test | 전체 테스트. DB·Docker 없이 H2(PostgreSQL 호환 모드)로 돈다. |
./gradlew :investigation-core:test --tests '*SummaryResultServiceTest' | 모듈 하나·테스트 클래스 하나만 실행. |
./gradlew spotlessApply | 포맷 자동 수정. 검사만은 spotlessCheck (위반 시 빌드 실패). |
./gradlew verifyModuleDependencies | core 끼리 직접 의존 같은 모듈 경계 위반 검사. |
./gradlew coverageSummary | 모듈별 커버리지 표 — build/reports/jacoco/coverage-summary.md. 빌드를 실패시키지 않는 보고 전용. |
./gradlew :hwss-api:exportOpenApiSpec | openapi/openapi.json 스냅샷 갱신(서버·DB 불필요). 이어서 프론트에서 pnpm openapi:gen 을 같은 PR 에 커밋. |
./gradlew :hwss-api:bootJar | 실행 jar 생성 — Dockerfile 이 쓰는 것과 같은 산출물. |
./gradlew --no-daemon --continue spotlessCheck test verifyModuleDependencies verifyProductionClasspath coverageSummary | CI(Backend Harness)가 돌리는 명령. PR 에서는 jacocoAggregatedReport 가 더해진다. |
Windows 는 ./gradlew 대신 .\gradlew.bat. 더 자세한 절차(프론트·이미지시스템 데모 함께 띄우기)는 docs/guides/local-dev-run-guide.md, .http 시나리오 실행은 docs/guides/api-http-testing-guide.md.
시작하기
관측 스택 — Prometheus · Grafana · Loki
선택 — 지연·에러율·힙을 눈으로 볼 때만 띄웁니다 · 명령은 저장소 최상위에서 실행
백엔드가 내보내는 지표와 컨테이너 로그를 한 화면에서 보는 운영자용 스택입니다. 감사 로그·업무 통계의 데이터 원천이 아닙니다 — 그건 PostgreSQL 입니다. 다만 통계의 서비스 상태 카드는 STATISTICS_SERVICE_STATUS_PROMETHEUS_URL 을 주면 Prometheus 를 읽고, 비어 있으면 연결 전으로 표시됩니다. 앱 배포와 생명주기가 달라 별도 compose 로 둡니다.
1스택 띄우기
docker compose -f infra/observability/docker-compose.yml up -d
내릴 때는 같은 명령의 down, 쌓인 데이터까지 지우려면 down -v. 백엔드(bootRun)가 떠 있으면 Prometheus 가 15초마다 /actuator/prometheus 를 당겨가고, 1분 안에 Grafana → HWSS → “HWSS API Overview” 에 HTTP 처리율 · p95 지연 · 5xx 비율 · JVM 힙 · Hikari 풀 · 외부 연동 실패율/지연이 그려집니다.
접속 주소
http://localhost:3200
Prometheushttp://localhost:9090
스크레이프 상태http://localhost:9090/targets
http://loki:3100 — Grafana 를 통해서만 봅니다(자체 UI 없음)Grafana 초기 계정은 admin / admin 으로, 로컬 전용입니다. 데이터소스(Prometheus·Loki)와 대시보드는 프로비저닝돼 있어 따로 추가할 필요가 없습니다. 포트 3200·3101 은 다른 로컬 서비스와 겹치지 않게 잡은 값입니다.
구성 요소
Prometheus | 수치 시계열을 모읍니다. 백엔드 /actuator/prometheus 를 당겨가는(pull) 쪽이라 앱은 Prometheus 의 존재를 모릅니다. |
Loki | 로그 줄 저장소 — Prometheus 의 로그 버전. 본문 전문 인덱스를 만들지 않고 라벨(container=…)로 범위를 좁힌 뒤 그 덩어리만 훑습니다. 그래서 가볍고, 대신 “아무 단어나 전체 검색”에는 약합니다. |
Alloy | 수집기. 컨테이너 로그(도커 소켓)와 파일 로그(runtime/logs/*.log) 두 갈래를 Loki 로 밀어 넣습니다(push). 둘 다 같은 container 라벨을 붙입니다. |
Grafana | 위 둘을 같은 시간축에 놓고 보는 화면. “5xx 가 튄 시각”에서 그 시각 로그로 넘어가는 것이 이 조합의 목적입니다. |
2Loki 로 로그 보기
Grafana → Explore → 왼쪽 위 데이터소스 드롭다운을 Loki 로 바꾸고, Label browser 에서 container 라벨을 고르면 됩니다. 질의는 LogQL 입니다.
# 컨테이너 하나의 로그 {container="hwss-loki"} # 문자열 필터 — 라벨로 범위를 좁힌 뒤 그 안에서 찾는다 {container="hwss-api"} |= "ERROR" # JSON 로그일 때, 한 요청이 남긴 줄만 {container="hwss-api"} | json | mdc_requestId="응답 헤더 X-Request-Id 값"
주의 bootRun 으로 띄운 백엔드의 로그는 그냥은 Loki 에 들어오지 않습니다. Alloy 의 도커 수집은 컨테이너 로그만 보는데 bootRun 은 호스트 JVM 프로세스이기 때문입니다. 그래서 파일 수집 갈래를 하나 더 두었습니다 — compose 가 hwss-investigation-agent-backend/runtime/logs 를 컨테이너의 /var/log/hwss 로 마운트하고, Alloy 가 그 폴더의 *.log 를 따라 읽어 같은 container="hwss-api" 라벨로 보냅니다. 아래처럼 출력을 그 폴더로 흘리기만 하면 됩니다.
# 최초 1회 mkdir -p hwss-investigation-agent-backend/runtime/logs # 기동 — hwss-investigation-agent-backend/ 에서 LOG_FORMAT=json DB_PASSWORD=hwss AUTH_JWT_SECRET=local-dev-only-secret-key-32bytes-min AUTH_LOCAL_PASSWORD=devpass SPRING_PROFILES_ACTIVE=local ./gradlew -q :hwss-api:bootRun | tee runtime/logs/app.log
LOG_FORMAT=json 이라야 | json 필드 질의가 됩니다. -q 는 Gradle 자신의 진행 줄을 빼서 파일이 JSON 줄로만 차게 합니다. 수집까지 10초쯤 걸리고, {container="hwss-api"} 가 잡히면 된 것입니다. 다른 경로에 남기려면 HWSS_LOG_DIR 에 절대 경로를 주고 스택을 다시 올립니다. 라벨 이름을 서버(컨테이너 수집) 쪽과 같게 맞춰 두었으므로 hwss-api 질의는 로컬과 개발 서버가 동일합니다.
기본 로그는 사람이 읽는 콘솔 형식이라 | json 필드 질의가 되지 않습니다. LOG_FORMAT=json(또는 json 프로필)을 주면 한 줄 JSON 이 되고, 요청마다 붙는 X-Request-Id(응답 헤더로도 돌아옵니다)가 mdc.requestId 로 나갑니다. 사번 등 개인정보는 로그에 싣지 않습니다 — 누가 무엇을 했는지는 감사 원장(audit_logs)의 몫입니다.
막힐 때
error getting credentials … docker-credential-desktop … not found in $PATH | Docker Desktop 을 지웠는데 ~/.docker/config.json 의 credsStore 가 desktop 으로 남아 있어서 이미지 pull 이 막힌 것입니다(런타임이 OrbStack·Colima 인 경우 흔합니다). macOS 는 sed -i '' 's/"desktop"/"osxkeychain"/' ~/.docker/config.json, 또는 그 줄을 지우면 됩니다 — 공개 이미지를 받는 데 로그인은 필요 없습니다. 관측 스택만의 문제가 아니라 docker compose 전반에 걸립니다. |
대시보드가 No data | Prometheus → Targets 에서 hwss-api 가 UP 인지 봅니다. DOWN 이면 백엔드가 안 떠 있거나 8080 이 아닌 포트입니다. 로컬 타깃은 host.docker.internal:8080 으로 잡혀 있습니다. |
| 외부 연동 패널만 비어 있음 | 정상입니다. ai-platform(기본 provider=none)·smart-review(기본 꺼짐)는 켜야 시계열이 생깁니다. |
Loki 에 hwss-api 라벨이 없음 | bootRun 출력을 runtime/logs/ 로 흘리고 있는지 봅니다(위 tee). 파일이 생긴 뒤 수집까지 10초쯤 걸립니다. docker logs hwss-alloy 에 loki.source.file.hwss_files 가 보이면 파이프라인은 살아 있는 것입니다. |
구성 파일과 개발 서버 반입 방식은 infra/observability/README.md, 스택을 이렇게 나눈 근거는 docs/decisions/20260828-observability-stack.md, 프론트·이미지시스템 데모까지 함께 띄우는 절차는 docs/guides/local-dev-run-guide.md 에 있습니다.
변경 추적
최근 변경
최근 14일 · PR 146건 (최근 20건 표시)
dev 에 머지된 PR 중 이 가이드 범위의 파일을 바꾼 것입니다. 파일을 누르면 아래 해당 행으로 이동하고, 7일 이내에 바뀐 파일 행은 주황색으로 강조됩니다. PR 제목은 로그인하면 보입니다.
루트
hwss-investigation-agent-backend/GitHub
빌드·배포·로컬 실행에 필요한 루트 파일
build.gradle이력6일 전 · #1946 | 빌드 | 루트 빌드 — 전 서브프로젝트에 Java 17·Spotless·JaCoCo 적용, 모듈 의존 방향 검증 태스크 verifyModuleDependencies, 커버리지 요약 태스크 coverageSummary. |
settings.gradle이력 | 빌드 | 모듈 등록과 projectDir 매핑 — base / <domain>-shared / <domain>-core / apps 계층과 의존 방향 규칙을 주석으로 설명한다. |
gradlew · gradlew.bat | 빌드 | Gradle Wrapper 실행 스크립트. |
gradle/wrapper/ | 빌드 | Wrapper jar 와 배포판 버전 지정 properties. |
Dockerfile이력4일 전 · #2054 | 배포 | 2단 빌드 — JDK 에서 :hwss-api:bootJar 생성 → JRE 이미지에 certs/*.crt 를 JVM 신뢰 저장소로 등록하고 8080 으로 실행. |
.dockerignore이력 | 배포 | 이미지 빌드 컨텍스트에서 build 산출물·IDE 파일·문서를 뺀다. |
docker-compose.yml이력 | 로컬 | 로컬 개발용 PostgreSQL 16 (hwss/hwss) — 운영 구성이 아니다. |
gradle.properties이력6일 전 · #1946 | 빌드 | Gradle JVM·워커 수 상한 (CI 장비 메모리 보호). |
libs/ | 빌드 | 공개 저장소에 없는 업체 제공 jar 를 두는 저장소 안 Maven 폴더. |
osv-ignore.txt이력 | 검증 | 의존성 취약점 검사의 예외 목록 — 권고 id 와 사유. |
scenarios/ | 검증 | 워크플로 시나리오 — API 로 상태 전이를 돌려 단계마다 기대 결과를 판정한다(WorkflowScenarioTest). |
scripts/ | 검증 | HTTP 시나리오 실행, JaCoCo 변환·수동 커버리지 누적 등 CI 보조 스크립트. |
README.md이력 | 문서 | 모듈 구성·실행·검증 안내. |
CLAUDE.md이력 | 문서 | Claude Code 작업 컨텍스트 — 모듈 구조, 빌드·테스트·로컬 실행 방법, 금지 사항. |
AGENTS.md이력 | 문서 | Codex 작업 지침 — 공통 패턴 우선 사용과 모듈 경계 규칙 요약. |
apps/
apps/hwss-api/GitHub
실행 앱
실행 앱 — 부팅 엔트리포인트. 필요한 core/shared 모듈을 전부 조합하고, 앱 설정·로컬 시드·통합(API) 테스트를 가진다.
api/1GitHub
앱 루트
HwssApiApplication.java이력33.3% | 클래스 | Spring Boot 부팅 진입점 — 모든 core 모듈의 빈·엔티티·Flyway 경로를 한 앱으로 조합한다. |
api/config/1GitHub
앱 수준 설정 (OpenAPI 메타데이터).
OpenApiConfig.java이력100.0% | 설정 | springdoc 이 생성하는 /v3/api-docs 문서의 메타데이터. |
api/config/realtime/1GitHub
PostgresReportEventFanout.java이력91.0% | 클래스 | SSE 변경 신호를 PostgreSQL LISTEN/NOTIFY 로 모든 인스턴스에 나눠 준다 (결정 20261014-realtime-updates-sse 「보완 2026-10-23」 — 운영 AP 2대 이중화, 결정 20261023-production-k0s-cluster). |
빌드·리소스6GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력 | 빌드 | 이 모듈의 의존성 선언 — base, investigation-shared, investigation-core, workflow-shared, workflow-core, classification-shared, classification-core, smartreview-core, mail-core, organization-shared, organization-core, aiplatform-core, collection-shared, collection-core, chat-shared, chat-core, audit-shared, audit-core 모듈 참조. |
application-dev-shared.yml이력 | 리소스 | 설명 주석 없음 |
application-local.yml.example이력 | 리소스 | 설명 주석 없음 |
application.yml이력오늘 · #2185 | 리소스 | 앱 전체 설정 — datasource·Flyway·백그라운드 풀·springdoc, 그리고 도메인별 hwss.* 주요 블록(image-integration, image-system, collection, investigation, classification, extraction, statistics, ai-platform, smartreview, mail, organization, auth, chat 등)과 actuator/prometheus 노출. |
db/local/R__local_seed_data.sql이력 | 리소스 | 로컬 전용 반복 실행 시드 — 개인 PC의 이미지 시스템 연동 테스트에 필요한 최소 위탁사 데이터 (PostgreSQL·H2 공용 문법). |
logback-spring.xml이력 | 리소스 | 로그 포맷 — 콘솔 패턴과 요청 상관관계 ID(MDC)를 담는 JSON 로그 설정. |
src/test/215GitHub
테스트 파일 — 펼쳐서 보기
src/test/215GitHubapi/acceptance/AcceptanceHooks.java이력 | 클래스 | 시나리오 사이의 공용 상태 정리. |
api/acceptance/AcceptanceScenariosPostgresTest.java이력 | 테스트 | 수용 시나리오(Gherkin)를 실제 PostgreSQL 16 에서 다시 돈다 — AcceptanceScenariosTest 의 짝. |
api/acceptance/AcceptanceScenariosTest.java이력 | 테스트 | 수용 시나리오(Gherkin) 실행 진입점 — src/test/resources/features/**/*.feature 를 Cucumber 로 돌린다. |
api/acceptance/AcceptanceWorld.java이력 | 클래스 | 시나리오 하나의 상태 — 누가 로그인해 있는지, 마지막 응답이 무엇이었는지. |
api/acceptance/AdminSteps.java이력 | 클래스 | 관리자 기능 — 사용자 레벨·메뉴 권한(S-010), 요약 골격(S-014), 메일 발송 계정(S-011). |
api/acceptance/AnalysisClaimTypeSteps.java이력 | 클래스 | 분석 조건의 청구유형·대표 청구유형·증권번호(결정 20261019-analysis-request-claim-type-policy-no). |
api/acceptance/AuditSteps.java이력 | 클래스 | 감사 원장(S-009). |
api/acceptance/AuthSteps.java이력 | 클래스 | 로그인·세션(S-008) — 개발용 로그인과 사이트마인더 SSO 콜백. |
api/acceptance/AuthorizationSteps.java이력 | 클래스 | API 메뉴 권한 인가(docs/decisions/20261012-api-menu-authorization.md) — 메뉴마다 대표 조회 API 하나를 불러 인터셉터의 판정을 본다. |
api/acceptance/ChatAttachmentSteps.java이력 | 클래스 | 챗봇 첨부 제한의 HTTP 경계 시나리오. |
api/acceptance/ChatCitationRegionSteps.java이력 | 클래스 | 챗봇 근거의 쪽 안 위치 수용 단계(기획 7/24·8/07 근거 하이라이트, Studio SaaS 실측 2026-11-04). |
api/acceptance/ChatConversationDeleteSteps.java이력 | 클래스 | 대화 전체 삭제·마지막 질문 삭제 수용 단계(docs/decisions/20261030-chat-conversation-delete.md). |
api/acceptance/ChatHistoryRetentionSteps.java이력 | 클래스 | 범용 채팅 90일 보관 정책의 DB·외부 자원 경계 수용 단계. |
api/acceptance/ChatKnowledgeSteps.java이력 | 클래스 | 에이전트 채팅 진행 중 대화의 지식컬렉션 참조 변경(docs/decisions/20261019-agent-knowledge-picker-file-unit.md 「개정 2026-10-28」). |
api/acceptance/ChatStatisticsSteps.java이력 | 클래스 | 챗봇 이용 통계(화면 dashboard — 챗봇 질의 건수·질의 답변 응답 속도) 단계. |
api/acceptance/ChatTitleGenerationSteps.java이력 | 클래스 | 범용 대화 제목 생성 수용 단계(통합 설계 v0.4 범용 7번, 업스테이지 공유 2026-11-03). |
api/acceptance/ChatUsageSteps.java이력 | 클래스 | 사용 내역(화면 conversations) 단계 — 대화는 실제 API 로 만들고, 「N일 전에 썼다」는 저장된 시각을 옮겨 만든다. |
api/acceptance/ClassificationReviewSteps.java이력 | 클래스 | 분류 검수(W07) — 미분류·저신뢰 낱장의 수동 지정과 AI 분류 일괄 확정(S-005 §4-4). |
api/acceptance/CollectionApprovalSteps.java이력 | 클래스 | 지식컬렉션 승인 단계 — 1차 승인자 범위와 요청자 레벨(S-010 §4-4, 화면 approval-center). |
api/acceptance/CollectionFileBulkSteps.java이력 | 클래스 | 지식컬렉션 파일 일괄 삭제·재색인(docs/decisions/20261021-knowledge-collection-bulk-file-actions.md). |
api/acceptance/CollectionIndexingClaimSteps.java이력 | 클래스 | 실제 엔티티의 파일 단위 선점 수명. |
api/acceptance/CommonSteps.java이력 | 클래스 | 여러 기능이 함께 쓰는 단계 — 로그인, 그리고 마지막 응답이 성공·거절인지. |
api/acceptance/ConcurrencyLimitSteps.java이력 | 클래스 | 1인 동시 AI 분석 요청 제한(WBS 29.12.3) — 착수 버튼과 관리자 한도 설정. |
api/acceptance/CucumberSpringConfiguration.java이력 | 클래스 | 수용 시나리오가 띄우는 Spring 컨텍스트 — 기존 API 시나리오 테스트(ReanalysisApiTest 등)와 같은 방식이다. |
api/acceptance/DisclosureLinkSteps.java이력 | 클래스 | 공시실 링크(위탁사 Workspace 4단계 `공시실 링크 설정`) — 위탁사당 주소 한 건과 사용자 노출을 `저장` 한 번에. |
api/acceptance/ErrorIncidentSteps.java이력 | 클래스 | 오류/장애 현황(화면 dashboard) 단계 — 실패 기록 원천 셋(AI 분석 작업 원장·이미지 전송·보고서 메일 발송)에 행을 직접 남긴다. |
api/acceptance/ExtractionCorrectionSteps.java이력 | 클래스 | 추출 검수 — 추출값 수정(S-012 §2 `추출 완료`, POST …/extraction-results/latest/field-corrections). |
api/acceptance/FakeChatRetentionExternalStore.java이력 | 클래스 | 채팅 보관 수용 시나리오에서 외부 Studio 대화·파일 파기 결과를 제어하는 대역. |
api/acceptance/ImageIntegrationSteps.java이력 | 클래스 | 이미지 시스템 연동(S-003 API-01·02·03·05·06·07) — 이미지 시스템이 보내는 통지를 계약 형식 그대로 흉내 낸다. |
api/acceptance/InvestigationSteps.java이력2일 전 · #2113 | 클래스 | 사고조사 건의 진행(S-004)·조회 범위(S-010 NB04)·분석 조건·다시 분석(S-012)·요약 확정과 검수(S-014). |
api/acceptance/KnowledgeDefaultsSteps.java이력 | 클래스 | 사고조사 건 위탁사의 참조 지식컬렉션 기본값 조회(docs/decisions/20261030-reference-defaults-to-analysis-and-chat.md 3항). |
api/acceptance/LogCsvExportSteps.java이력 | 클래스 | 관리자 로그 CSV 내보내기(HSA-AD-006) — 감사 로그·메일 발송 로그. |
api/acceptance/MenuPermissionSteps.java이력 | 클래스 | 메뉴 권한 매트릭스(S-010, 화면 permissions, WBS 19.2) — 매트릭스·기본값·저장 검증·1차 승인 지정·내 권한·레벨별 권한. |
api/acceptance/MyProfileSteps.java이력 | 클래스 | 내 정보 조회·본인 이메일 수정(S-008, 화면 profile) — 로그인한 본인의 계정·소속·이메일·보유 레벨. |
api/acceptance/OrganizationChangeSteps.java이력 | 클래스 | 조직 변경 사원 단계 — 스마트심사 변경 이력은 로컬 표본(user_change_histories)에 넣는다(라이브 뷰 대신 쓰는 폴백). |
api/acceptance/OrganizationDirectorySteps.java이력 | 클래스 | 조직도 직원 목록(S-010, 화면 organization) — 비활성(퇴직·휴직) 직원의 표시 (docs/decisions/20261012-user-org-affiliation-basis.md 🟢 결정 8). |
api/acceptance/PageEditClassificationSteps.java이력 | 클래스 | 추출 이후 분류값 변경 — 편집 저장에 함께 싣는다(결정 20261101 §4). |
api/acceptance/ReclassificationReservationSteps.java이력 | 클래스 | 분류·추출 진행 중 재확정 예약(결정 20260910-confirm-reservation-and-reanalysis-scope 1항, S-012 §3-1). |
api/acceptance/ReportDeliveryChannelSteps.java이력 | 클래스 | 위탁사별 보고서 초안 전송 방식(화면 /admin/client-workspace 3단계, 결정 20260902 1·5~10항). |
api/acceptance/ReportDisposalLogSteps.java이력 | 클래스 | 설명 주석 없음 |
api/acceptance/ReportSendLogSteps.java이력 | 클래스 | 관리자 보고서 초안 전송 로그(화면 /admin/report-send-logs). |
api/architecture/ArchitectureTest.java이력 | 테스트 | 백엔드 전체(ai.clush.hwss 의 운영 코드)가 지키고 있는 구조 규칙을 테스트로 고정한다. |
api/audit/AdminAuditTrailApiTest.java이력 | 테스트 | 관리자 설정·마스터 데이터·반출·지식컬렉션 작업의 감사 원장 적재를 실제 조합(인가 인터셉터·서비스 트랜잭션·audit-core)으로 확인한다 (docs/decisions/20261018-audit-event-scope-expansion.md). |
api/audit/BusinessActionAuditTrailApiTest.java이력 | 테스트 | 사고조사 업무 행위의 감사 원장 적재와 화면 표시 설정을 실제 조합으로 확인한다 (docs/decisions/20261023-business-action-audit-events.md). |
api/audit/IntegrationExchangeApiTest.java이력 | 테스트 | 연동 교환 기록을 실제 조합(수신 필터 → 컨트롤러 → audit-core 저장 → 관리자 조회 API)으로 확인한다 (docs/decisions/20261023-integration-exchange-log.md). |
api/chat/AgentChatApiScenarioTest.java이력 | 테스트 | http/agent-chat.http 를 그대로 재생해 에이전트 채팅 API(NX01)를 검증한다. |
api/chat/ChatAnswerStreamApiTest.java이력 | 테스트 | 답변 스트림 응답 계약(docs/decisions/20261102-agent-chat-answer-streaming.md) — 스텁 어댑터로 이벤트 순서·저장·헤더 없는 요청을 본다. |
api/chat/ChatExchangePersistenceTest.java이력 | 테스트 | 질문 전송(ChatService.ask)이 돌려주는 두 줄의 id 와 첨부 연결을 실제 영속성 계층에서 본다. |
api/chat/ChatResponseTimePersistenceTest.java이력 | 테스트 | 질문 전송이 답변 행에 응답 소요시간(chat_messages.response_millis)을 남기는지 실제 영속성 계층에서 본다 — 마이그레이션이 컬럼을 만들고 엔티티 매핑이 그 컬럼에 쓰는지는 유닛 테스트로 잡히지 않는다(docs/rules/testing.md). |
api/chat/ChatSessionListPersistenceTest.java이력 | 테스트 | GET /api/v1/chat-sessions가 의존하는 세션 목록 집계 쿼리를 실제 영속성 계층에서 검증한다. |
api/chat/InvestigationChatApiScenarioTest.java이력 | 테스트 | http/investigation-chat.http 를 그대로 재생한다 — 실제 맥락 포트(조사 모듈)가 붙은 앱에서 경로·인가·없는 보고서 응답을 본다. |
api/chat/InvestigationChatApiTest.java이력 | 테스트 | 사고조사 챗봇 패널 API — 시나리오 C1~C8 을 실제 HTTP·스키마에서 본다 (docs/decisions/20261023-investigation-chat-session-structure.md 4항). |
api/chat/InvestigationChatAskApiTest.java이력 | 테스트 | 사고조사 챗봇 질문 API — 시나리오 Q1~Q15 를 실제 HTTP·스키마·저장·통계로 본다 (docs/decisions/20261023-investigation-chat-session-structure.md 4·7항, 20261023 지시문 DB 7항). |
api/chat/InvestigationChatAttachmentApiTest.java이력 | 테스트 | 사고조사 챗봇 첨부 API — 시나리오 T2~T9 를 실제 HTTP·스키마에서 본다 (docs/decisions/20261023-investigation-chat-session-structure.md 8항, 20261026 첨부 묶음 2항). |
api/chat/InvestigationChatKnowledgeApiTest.java이력4일 전 · #2040 | 테스트 | 사고조사 챗봇 검색 범위 변경 API — 시나리오 K1·K2·K7~K10 을 실제 HTTP·스키마에서 본다 (docs/decisions/20261023-investigation-chat-session-structure.md 6항). |
api/chat/InvestigationChatPurgeTest.java이력 | 테스트 | 보고서 삭제 연동 — 시나리오 P1~P3·P5·P7 을 실제 스키마(CASCADE)에서 본다 (docs/decisions/20261023-investigation-chat-session-structure.md 8항). |
api/chat/InvestigationChatReflectApiTest.java이력 | 테스트 | 사고조사 챗봇 AI 보고서 반영 API — 시나리오 R1·R4~R7·R9·R10 을 실제 HTTP·스키마에서 본다 (docs/decisions/20261021-investigation-chat-references-and-reflection.md 5~7·9~11항). |
api/chat/InvestigationChatStorageTest.java이력 | 테스트 | 사고조사 챗봇 대화 저장 구조 — 마이그레이션이 실제로 적용된 스키마에서 S1~S9 를 본다 (docs/decisions/20261023-investigation-chat-session-structure.md 1·3·8항). |
api/chat/InvestigationChatUsageApiTest.java이력 | 테스트 | 사용 내역의 사고조사 건 — 시나리오 U1·U2·U4·U5·U7·U9·U10 을 실제 HTTP·스키마에서 본다 (docs/decisions/20261023-investigation-chat-session-structure.md 5항, 20261010-investigation-chat-usage-… |
api/classification/ClassificationMappingApiScenarioTest.java이력 | 테스트 | http/classification-mapping.http 를 그대로 재생해 분류체계 매핑 API(N02·NW01)를 검증한다. |
api/classification/ClassificationMappingApiTest.java이력 | 테스트 | 분류체계 매핑 API(`GET/PUT …/classification-mappings`, `GET …/confirmations`)의 거절 응답을 실제 SQL·인증 필터와 함께 본다(WBS 22.1.2, 22.1.3). |
api/classification/ClassificationMappingConfirmationPersistenceTest.java이력 | 테스트 | 분류체계 매핑 확정 이력(folder_classification_mapping_confirmations, 2026-10-09 야간 NW01)이 의지하는 DB 제약이 실제 스키마에 있는지 확인한다. |
api/classification/ClassificationMasterPersistenceTest.java이력 | 테스트 | API-06·API-07 이 실제 스키마(Flyway) 와 JPA 매핑 위에서 마스터를 영속화하는지 확인한다 — 유닛 테스트로는 잡히지 않는 영역이다 (docs/rules/testing.md): 엔티티 스캔, 컬럼/타입 매핑, document_types → customer_companies FK… |
api/classification/CustomerCompanyApiTest.java이력 | 테스트 | 위탁사 마스터 조회 API(N03)를 실제 HTTP 경계에서 확인한다 — 유닛 테스트로는 잡히지 않는 부분이다 (docs/rules/testing.md): 파생 쿼리(findByActiveTrueOrderBy…)가 실제 SQL 로 평가된 결과, 컨트롤러가 classification-core 에서… |
api/classification/CustomerOnboardingApiScenarioTest.java이력6일 전 · #1935 | 테스트 | http/admin-customer-onboarding.http 를 그대로 재생해 위탁사 온보딩 상태 API 를 검증한다. |
api/classification/DisclosureLinkApiScenarioTest.java이력6일 전 · #1935 | 테스트 | http/admin-disclosure-link.http 를 그대로 재생해 공시실 링크 API(ND01 → 결정 20261023 개정)를 검증한다. |
api/collection/CollectionApiScenarioTest.java이력 | 테스트 | http/collections.http 를 그대로 재생해 지식컬렉션 세로조각(N03~N06)을 검증한다. |
api/collection/CollectionApprovalFilePreviewApiTest.java이력 | 테스트 | 승인센터 파일 미리보기(GET /api/v1/collection-approvals/{id}/files/{fileId}/preview)를 실제 HTTP 경계에서 본다 — 지식컬렉션 미리보기와 같은 저장소의 미리보기 파일을 내준다(docs/decisions/20261014-collection-fil… |
api/collection/CollectionApprovalOptimisticLockTest.java이력 | 테스트 | 같은 승인 요청을 두 사람이 겹쳐 처리할 때 늦은 저장이 앞 저장을 덮지 않고 409 로 거절되는지 실제 DB(H2 PostgreSQL 모드 — H2TestDatasource)에서 본다. |
api/collection/CollectionAsyncIndexingApiTest.java이력 | 테스트 | 즉시 모드의 백그라운드 색인(기본 작업자 2) — 등록 요청은 PENDING 으로 바로 응답하고, 커밋 뒤 작업자가 색인해 상세가 READY 로 바뀐다(docs/decisions/20261013-file-ingestion-pdf-unification.md §4). |
api/collection/CollectionBatchWindowPostgresTest.java이력 | 테스트 | 두 서버를 대신하는 독립 작업 실행기가 실제 선점·결과 저장·만료 복구 트랜잭션을 사용한다. |
api/collection/CollectionDescriptionClaimPostgresTest.java이력 | 테스트 | 두 독립 서비스가 실제 PostgreSQL 의 같은 설명 행을 선점한다. |
api/collection/CollectionDocumentCleanupPostgresTest.java이력 | 테스트 | 독립 AP 서비스·별도 연결·실제 PostgreSQL 잠금으로 삭제 의도와 사용 중 문서 보호를 검증한다. |
api/collection/CollectionFileDownloadApiTest.java이력 | 테스트 | 지식컬렉션 파일 내려받기(GET /api/v1/collections/{id}/files/{fileId}/download)를 실제 HTTP 경계에서 본다. |
api/collection/CollectionFileNameMatchApiTest.java이력 | 테스트 | 지식컬렉션 파일명 검색(GET /api/v1/collections/file-name-matches)의 보이는 범위를 실제 질의로 본다 (docs/decisions/20261013-knowledge-collection-folder-file-search.md). |
api/collection/CollectionFilePreviewApiTest.java이력 | 테스트 | 지식컬렉션 파일 미리보기(GET /api/v1/collections/{id}/files/{fileId}/preview)를 실제 HTTP 경계에서 본다. |
api/collection/CollectionIndexingBatchApiTest.java이력 | 테스트 | 지식컬렉션 배치 색인·1,000쪽 겹침 분할·개인 쪽 수 상한·원본 discard 병합 다운로드를 실제 HTTP 경계와 스키마에서 본다 (docs/decisions/20261013-file-ingestion-pdf-unification.md §2·§4·§5). |
api/collection/CollectionRecoveryClaimIntegrationTest.java이력 | 테스트 | 복구 판단 후 활동 갱신·완료·다른 서버의 복구가 끼어드는 상황을 서로 다른 DB 트랜잭션으로 검증한다. |
api/collection/CollectionRecoveryClaimPostgresTest.java이력 | 테스트 | 동일한 복구 경합 시나리오를 실제 PostgreSQL 에서 검증한다. |
api/collection/CollectionVectorStoreCreationPostgresTest.java이력 | 테스트 | 두 독립 Gateway 와 별도 DB 트랜잭션으로 실제 PostgreSQL advisory lock 과 매핑·롤백 정리를 검증한다. |
api/collection/CollectionWorkDistributionPostgresTest.java이력 | 테스트 | 두 서버를 대신하는 독립 작업 실행기가 실제 선점·결과 저장·만료 복구 트랜잭션을 사용한다. |
api/collection/LongFileNameUploadTest.java이력 | 테스트 | 윈도우가 만들 수 있는 가장 긴 파일명(255자)도 업로드 단계에서 거절되지 않는다 — server.tomcat.max-part-header-size. |
api/config/collection/CollectionCleanupConfigurationTest.java이력 | 테스트 | 실제 application.yml 과 서비스·스케줄러를 연결하되 DB·Studio·개인 .env 는 사용하지 않는다. |
api/config/realtime/PostgresReportEventFanoutBeanTest.java이력 | 테스트 | 운영 기본값(hwss.realtime.fanout=postgres)에서 이 빈을 Spring 이 실제로 만들 수 있는지 본다. |
api/config/realtime/PostgresReportEventFanoutPostgresTest.java이력 | 테스트 | SSE 변경 신호의 인스턴스 간 전파를 실제 PostgreSQL 16 의 LISTEN/NOTIFY 로 본다 (결정 20261014-realtime-updates-sse 「보완 2026-10-23」). |
api/config/realtime/PostgresReportEventFanoutTest.java이력 | 테스트 | 전파 구현의 단위 동작 — 드라이버 연결은 가짜다. |
api/db/FlywayMigrationTest.java이력6일 전 · #1935 | 테스트 | classpath 전체(db/migration)의 Flyway 마이그레이션이 실제로 순서대로 적용되고, S-007 §3 의 스키마가 만들어지는지 검증한다. |
api/db/FlywaySchemaPostgresTest.java이력 | 테스트 | 빈 PostgreSQL 16 에 전 모듈의 Flyway 마이그레이션을 처음부터 적용하고, Hibernate ddl-auto=validate 가 통과하는지(엔티티 매핑 = 실제 스키마) 본다. |
api/db/FlywayVersionUpgradePostgresTest.java이력6일 전 · #1953 | 테스트 | 이미 적용된 이미지시스템 매핑의 이력을 유지한 채 다음 버전의 통계 스키마로 올린다. |
api/db/PostgresDialectBehaviorPostgresTest.java이력 | 테스트 | H2(PostgreSQL 호환 모드)와 실제 PostgreSQL 이 다르게 동작할 수 있는 자리를 실제 PostgreSQL 16 에서 확인한다. |
api/db/SchemaCommentTest.java이력 | 테스트 | 스키마의 모든 테이블과 컬럼이 DB 설명(COMMENT)을 갖는지 검증한다. |
api/guard/ApiAccessRuleGuardTest.java이력 | 테스트 | 지정 누락 검사 — 우리 핸들러는 모두 접근 표시 4종 중 정확히 하나를 가져야 하고, @MenuPermission 의 메뉴 코드는 실제 매트릭스 (시드 마이그레이션이 만든 role_menu_permissions)에 있어야 한다 (docs/decisions/20261012-api-menu-aut… |
api/guard/DtoSchemaNameGuardTest.java이력 | 테스트 | API 표면에 오르는 타입의 simple name 이 리포 전체에서 유일한지 지킨다. |
api/guard/ImageIntegrationHttpBodyGuardTest.java이력 | 테스트 | http/*.http 의 이미지시스템 연동 요청 본문이 계약 정본과 같은 필드명을 쓰는지 지킨다. |
api/guard/SourceTextGuardTest.java이력 | 테스트 | 소스 파일이 텍스트로 남아 있는지 지킨다. |
api/http/HttpScenarioFile.java이력 | 클래스 | http/*.http 시나리오 파일을 읽어 MockMvc 로 재생할 수 있는 형태로 옮긴다. |
api/http/HttpScenarioFileTest.java이력 | 테스트 | .http 시나리오 파서 자체의 회귀 테스트 (야간 플랜 20260821 Q1). |
api/investigation/AgentStudioInstructApiPostgresTest.java이력 | 테스트 | 실제 PostgreSQL에서 INSTRUCT 저장·재조회 전체 응답과 DB 저장 시각 정밀도를 검증한다. |
api/investigation/AgentStudioInstructApiScenarioTest.java이력 | 테스트 | http/admin-agent-studio-instruct.http 를 그대로 재생해 에이전트 스튜디오 INSTRUCT 설정 API 를 검증한다 (docs/decisions/20261021-studio-instruct-db-storage.md). |
api/investigation/AgentStudioTestRunApiScenarioTest.java이력2일 전 · #2112 | 테스트 | http/admin-agent-studio-test-runs.http 를 그대로 재생해 실행 테스트 분류·추출 API 를 검증한다 (docs/decisions/20261106-studio-test-classify-run.md, 20261107-studio-test-extract-run.md). |
api/investigation/AgentStudioTestRunDiscardRaceTest.java이력2일 전 · #2123 | 테스트 | 실행 테스트 단계 지우기를 실제 SQL 로 본다 — 화면이 서류를 3개씩 동시에 올리면(결정 20261110-studio-test-upload-speed) 요청마다 이전 분류·추출·보고서 단계를 지우는데, 같은 단계를 먼저 지운 요청이 있으면 늦은 요청이 500 으로 끝났다(2026-11-11). |
api/investigation/AiPipelineJobLeaseQueryTest.java이력 | 테스트 | AI 작업 원장의 임대 쿼리를 실제 SQL 로 본다 — 여러 서버가 같은 작업을 동시에 진행시키지 않게 하는 장치라, 서비스 단위 테스트의 목으로는 조건부 UPDATE 의 WHERE 절이 맞는지 알 수 없다. |
api/investigation/AnalysisAiE2eTest.java이력 | 테스트 | 요약 실연동 경로를 실제 엔진·시드·H2 SQL 위에서 본다 (2026-09-29). |
api/investigation/AnalysisRequestApiTest.java이력6일 전 · #1941 | 테스트 | W09 분석 요청의 저장·조회 왕복과 상태 전이를 실제 SQL 로 본다. |
api/investigation/ApplicationFormApiScenarioPostgresTest.java이력 | 테스트 | ApplicationFormApiScenarioTest 의 시나리오를 실제 PostgreSQL 16 에서 그대로 다시 돈다 — 청약서 폼 설정 API. |
api/investigation/ApplicationFormApiScenarioTest.java이력 | 테스트 | http/admin-application-form.http 를 그대로 재생해 청약서 폼 설정 API 를 검증한다. |
api/investigation/ChatPromptApiScenarioTest.java이력 | 테스트 | http/admin-chat-prompts.http 를 그대로 재생해 지시문 관리자 API 를 검증한다 (docs/decisions/20261023-chat-prompt-db-versioning.md). |
api/investigation/ClaimTypeApiScenarioTest.java이력 | 테스트 | http/admin-claim-type.http 를 그대로 재생해 청구유형 마스터 API(NT01)를 검증한다. |
api/investigation/ClassificationActionApiTest.java이력 | 테스트 | W07 분류 조치의 권한·상태 규칙이 실제 스택(세션 필터 → 컨트롤러 → 서비스 → SQL)에서도 그대로 걸리는지 본다. |
api/investigation/ClassificationAiE2eTest.java이력 | 테스트 | 분류 실연동 경로를 실제 엔진·시드·H2 SQL 위에서 본다 (2026-09-22, docs/decisions/20260922-ai-classification-async-integration.md). |
api/investigation/ClassificationResultApiTest.java이력 | 테스트 | W06 문서분류 결과 도메인의 세로조각 — 전송 접수(API-01·02)로 문서함이 채워진 뒤 분류 스텁 실행 → 결과 조회까지가 실제 SQL 로 도는지 본다. |
api/investigation/ClassificationStubE2eTest.java이력 | 테스트 | http/classification-stub-e2e.http 를 재생해 사용자 확정(`AI 분류 시작`) → 스텁 분류 → `미분류검출` → W07 조치 → `정보 추출 시작` → `추출완료` 경로를 검증한다 (2026-09-03 야간 N02, 2026-09-18 야간 NB05). |
api/investigation/ClassificationTransientRetryAiE2eTest.java이력 | 테스트 | ClassificationTransientRetryAiE2e 대상 테스트. |
api/investigation/CorrectionRejectionAiE2eTest.java이력 | 테스트 | 검수 보정이 플랫폼에서 거절돼 추출이 실패한 건이 화면에 실패로 닿는지를 실제 엔진·원장·H2 SQL 위에서 본다 (S-004 §8-6). |
api/investigation/CorrectionRoundtripAiE2eTest.java이력 | 테스트 | 검수 보정의 이어 실행 반영(결과 왕복)을 실제 엔진·시드·H2 SQL 위에서 본다 (docs/decisions/20260929-pipeline-correction-roundtrip.md P1). |
api/investigation/DocumentBoxClassifiedFolderApiTest.java이력5일 전 · #1981 | 테스트 | 미분류 폴더로 수신한 건의 문서함이 분류 결과의 폴더로 묶이는지를 실제 빈·SQL·HTTP 로 본다 (결정 20261104-document-box-classified-folder). |
api/investigation/DocumentTypeSchemaApiScenarioTest.java이력어제 · #2132 | 테스트 | http/document-type-schemas.http 를 그대로 재생해 에이전트 스튜디오 문서 분류·추출 스키마 관리자 API 를 본다. |
api/investigation/ExtractionAiE2eTest.java이력 | 테스트 | 추출 실연동 경로를 실제 엔진·시드·H2 SQL 위에서 본다 (2026-09-25 야간 NX02). |
api/investigation/ExtractionCorrectionRoundtripAiE2eTest.java이력 | 테스트 | 추출값 수정의 이어 실행 반영(결과 왕복 P2)을 실제 엔진·시드·H2 SQL 위에서 본다 (docs/decisions/20260929-pipeline-correction-roundtrip.md §8 P2). |
api/investigation/ExtractionResultApiTest.java이력4일 전 · #2046 | 테스트 | W08 정보추출 결과의 저장·조회 왕복을 실제 SQL 로 본다 (항목의 완료 조건). |
api/investigation/HospitalAliasApiScenarioTest.java이력3일 전 · #2081 | 테스트 | http/admin-hospital-alias.http 를 그대로 재생해 병원 명칭 매핑 API 를 검증한다. |
api/investigation/HospitalFolderPlacementApiTest.java이력 | 테스트 | 번호 폴더 묶음 배정이 실제 스택(API-01 문서분류 동기화 → 관리자 매핑 → 스텁 분류 → 결과)에서 걸리는지 본다 (결정 20261101-hospital-folder-bundle-overflow 1~3항). |
api/investigation/HospitalNameSpacingIntegrationTest.java이력3일 전 · #2082 | 테스트 | 병원 목록과 서류·검색어의 띄어쓰기가 달라도 같은 병원을 찾는지 실제 쿼리로 확인한다(결정 20260910 §3). |
api/investigation/HospitalNameSpacingPostgresTest.java이력4일 전 · #2036 | 테스트 | HospitalNameSpacingIntegrationTest 를 실제 PostgreSQL 16 에서 다시 돈다 — JPQL replace·lower 조합이 방언에 기대는 자리다. |
api/investigation/ImageIntegrationApiSmokeTest.java이력 | 테스트 | http/image-integration.http 를 그대로 재생해 API-01~07 의 실제 HTTP 응답을 검증한다. |
api/investigation/ImageReceptionE2eTest.java이력 | 테스트 | http/image-reception-e2e.http 를 재생해 이미지 접수 세로조각의 상태 전이를 검증한다 (P1-3). |
api/investigation/ImageReceptionZipFixture.java이력 | 클래스 | API-02(전송 완료 통지)가 존재와 SHA-256 을 검사할 ZIP 을 수신 폴더에 만든다. |
api/investigation/ImageTransferBackgroundJobQueueQueryTest.java이력 | 테스트 | 보고서별 선두 작업과 서로 다른 보고서 병렬 선택 조건을 실제 SQL로 검증한다. |
api/investigation/ImageTransferPersistenceTest.java이력 | 테스트 | 전송 접수가 실제 스키마(Flyway)와 JPA 매핑 위에서 동작하는지 확인한다 — 유닛 테스트로는 잡히지 않는 영역이다 (docs/rules/testing.md): 엔티티 스캔, 컬럼/타입 매핑, FK·CHECK 제약, 여러 모듈의 마이그레이션 순서, 그리고 investigation-core… |
api/investigation/ImageZipSmokeFixtureContractTest.java이력 | 테스트 | 사람이 실행하는 TIFF ZIP 생성기와 .http 예시가 수신 계약과 같은지 고정한다. |
api/investigation/InvestigationDisclosureLinkApiTest.java이력 | 테스트 | http/investigation-disclosure-link.http 를 그대로 재생해 워크스페이스 `공시실` 링크 조회(2026-10-19 야간 NL01)를 본다. |
api/investigation/InvestigationReportListApiPostgresTest.java이력 | 테스트 | InvestigationReportListApiTest 의 시나리오를 실제 PostgreSQL 16 에서 그대로 다시 돈다 — 사고조사 목록 API. |
api/investigation/InvestigationReportListApiTest.java이력 | 테스트 | 사고조사 목록 API(P1-1)를 실제 HTTP 경계에서 확인한다 — 유닛 테스트로 잡히지 않는 부분이다 (docs/rules/testing.md): 쿼리 파라미터 바인딩(enum 변환 포함), Specification 필터가 실제 SQL 로 평가된 결과, 정렬·페이지 경계, 세션 필터가 이 경… |
api/investigation/InvestigationScopeApiTest.java이력 | 테스트 | 사고조사 조회 범위를 실제 SQL·세션 경계에서 본다 (2026-09-18 NB04, docs/decisions/20260918-permission-levels-and-org-scope.md). |
api/investigation/InvestigationWorkflowStatusFilterApiTest.java이력 | 테스트 | 목록의 화면 글로벌 상태 다중 필터(workflowStatus)와 파생 필드를 실제 SQL 경계에서 본다 (2026-09-18 NB01). |
api/investigation/InvestigationWorkspaceApiTest.java이력 | 테스트 | P1-2 세로조각을 끝에서 끝까지 한 번에 확인한다 — 이미지시스템 전송 수신(API-01·02) → 조사자 목록 → 워크스페이스 상세. |
api/investigation/MultiInstanceReceptionPostgresTest.java이력 | 테스트 | 운영 AP 2대(결정 20261023-production-k0s-cluster A)에서 두 인스턴스가 같은 보고서를 동시에 다룰 때를 실제 PostgreSQL 16 으로 본다. |
api/investigation/PdfSheetReceptionApiTest.java이력 | 테스트 | 단일 페이지 PDF 의 접수 시점 이미지 변환(결정 20261002-pdf-page-split-at-reception) — 실제 ZIP·실제 스키마(Flyway) 위에서 PDF 한 건이 낱장 행 하나로 변환되고, 다중 페이지 PDF는 거절되는지 본다. |
api/investigation/PipelineSeedE2eTest.java이력 | 테스트 | http/pipeline-seed.http 를 재생해 전 단계 보고서 세트 시드가 실제로 각 상태의 보고서를 만드는지 검증한다 (2026-09-03 야간 N03). |
api/investigation/ReanalysisApiPostgresTest.java이력 | 테스트 | ReanalysisApiTest 의 시나리오를 실제 PostgreSQL 16 에서 그대로 다시 돈다 — 다시 분석 범위 조회·실행 API(S-012 §4-0). |
api/investigation/ReanalysisApiTest.java이력2일 전 · #2113 | 테스트 | `다시 분석` 가능 범위 조회와 세 범위 실행을 실제 SQL·실제 HTTP 상태 코드로 본다 (S-012 §4, 야간 20261002 NR01·NR02 — `http/investigation-reanalysis.http` 와 같은 순서). |
api/investigation/ReclassificationReservationAiE2eTest.java이력 | 테스트 | 분류 진행 중 재확정 예약을 실제 엔진·비동기 분류 경로 위에서 끝까지 본다 (결정 20260910-confirm-reservation-and-reanalysis-scope 🟢 1항, S-012 §3-1, HSA-IF-002). |
api/investigation/ReportDeliveryLogQueryTest.java이력 | 테스트 | 관리자 보고서 초안 전송 로그 조회의 필터가 실제 SQL 에서 어떻게 걸리는지 본다. |
api/investigation/ReportDraftApiTest.java이력3일 전 · #2055 | 테스트 | W12 보고서 초안의 버전 증가·최신본 조회를 실제 SQL 로 본다 (항목의 완료 조건). |
api/investigation/ReportEventStreamApiTest.java이력 | 테스트 | 실시간 갱신 SSE 구독 — 인증·권한을 지나 연결이 열리고, 변경 이벤트가 신호로 나간다 (결정 20261014-realtime-updates-sse). |
api/investigation/ReportMailApiTest.java이력 | 테스트 | 보고서 메일 발송 API(`POST/GET …/report-mails`)를 실제 SQL·인증 필터와 함께 본다 (WBS 20.8.2). |
api/investigation/ReportMailDispatchLogQueryTest.java이력 | 테스트 | 관리자 메일 발송 로그 조회의 필터가 실제 SQL 에서 어떻게 걸리는지 본다 (야간 플랜 20261005 NM01). |
api/investigation/ReportMailDispatchTransactionTest.java이력 | 테스트 | 발송 기록이 바깥 트랜잭션과 함께 롤백되지 않는지 본다 (야간 20260825 Q1 ②). |
api/investigation/ReportPageEditApiPostgresTest.java이력 | 테스트 | ReportPageEditApiTest 의 시나리오를 실제 PostgreSQL 16 에서 그대로 다시 돈다 — 스캔 문서함 편집 저장 API(NP01·NP02). |
api/investigation/ReportPageEditApiTest.java이력 | 테스트 | 스캔 문서함 낱장 편집 저장을 실제 SQL·실제 HTTP 상태 코드로 본다 (야간 20261006 NP01 — http/investigation-page-edits.http 와 같은 순서). |
api/investigation/ReportPageImageApiTest.java이력 | 테스트 | 페이지 이미지 서빙(2026-09-03 야간 N04) — 시드와 같은 1×1 PNG 를 API-01·02 로 접수한 뒤 GET /api/v1/investigation-reports/{reportNo}/pages/{sourcePageId}/image 가 그 바이트를 그대로 돌려주는지, 그리고 유닛… |
api/investigation/ReportPurgeTablesCoverageTest.java이력 | 테스트 | 보고서 파기의 삭제 목록이 실제 스키마와 맞는지 붙잡는다 (결정 20260909-purge-statistics-boundary §2 「누락은 테스트가 막는다」). |
api/investigation/ReportReflectionIntegrationTest.java이력 | 테스트 | AI 보고서 반영 — 시나리오 C1(새 판·이어받기·참조 떼기)·D1(원장)·저장 직전 판 충돌을 실제 SQL 로 본다(H2 PostgreSQL 호환 모드). |
api/investigation/ReportTaskLockConnectionPoolPostgresTest.java이력 | 테스트 | 보고서 작업 잠금이 업무 풀과 연결을 다투지 않는지 실제 PostgreSQL 로 본다(결정 20261103-report-lock-dedicated-connection). |
api/investigation/ReportTaskSequencerPostgresTest.java이력 | 테스트 | 보고서별 작업 직렬 실행기의 인스턴스 간 상호배제를 실제 PostgreSQL 16 의 advisory lock 으로 본다 (결정 20261023-production-k0s-cluster A — 운영 AP 2대). |
api/investigation/SummaryGroupApiScenarioTest.java이력 | 테스트 | http/summary-groups.http 를 그대로 재생해 요약 그룹 관리자 API 와 보고서 `요약` 탭 구획 조회(파이프라인 v2)를 본다. |
api/investigation/SummaryGroupReopenAfterCommitTest.java이력4일 전 · #2003 | 테스트 | 분석 요청의 커밋 직후 경로를 실제 트랜잭션으로 검증한다 — 트랜잭션을 흉내 내는 단위 테스트로는 드러나지 않는다. |
api/investigation/SummaryResultApiTest.java이력3일 전 · #2055 | 테스트 | W10 요약 결과의 항목별 출처 복수 연결 왕복을 실제 SQL 로 본다 (항목의 완료 조건). |
api/investigation/SummarySkeletonApiTest.java이력 | 테스트 | 요약 섹션 골격 관리자 API (S-014 §3) — 시드(공통·한화생명)가 실제 SQL 로 읽히고, 저장이 새 버전·활성 전환으로 돌아오는지. |
api/investigation/SynchronousExtractionConfig.java이력 | 설정 | ZIP 압축 해제를 동기로 돌린다. |
api/investigation/WorkflowProgressApiPostgresTest.java이력 | 테스트 | WorkflowProgressApiTest 의 시나리오를 실제 PostgreSQL 16 에서 그대로 다시 돈다 — 워크플로우 진행률 API. |
api/investigation/WorkflowProgressApiTest.java이력 | 테스트 | W14 워크플로우 진행 상태 조회의 응답 스냅샷을 본다 (항목의 완료 조건). |
api/mail/MailAccountApiScenarioTest.java이력 | 테스트 | http/admin-mail-account.http 를 그대로 재생해 관리자 메일 발송 계정 API(N02)를 검증한다. |
api/mail/MailAccountConcurrentResetTest.java이력 | 테스트 | 동시 재설정 회귀 테스트 — 늦은 쪽이 조용히 이기지 않는다. |
api/mail/MailAccountPasswordPersistenceTest.java이력 | 테스트 | SMTP 대표 계정 비밀번호 저장소가 실제 스키마(Flyway) 와 JPA 매핑 위에서 동작하는지 확인한다 — 유닛 테스트로는 잡히지 않는 영역이다(docs/rules/testing.md): 엔티티 스캔, 단일 행 CHECK 제약, 컬럼 매핑, 그리고 mail-core 가 이 앱에 조립됐을 때… |
api/mail/MailAccountSettingsApiTest.java이력 | 테스트 | MailAccountSettingsApi 대상 테스트. |
api/openapi/DemoContractsSyncTest.java이력 | 테스트 | 이미지시스템 데모 목서버의 계약 화면 명세(image-system-demo/backend/.../contracts.json)가 계약 정본(docs/specs/contracts/image-system-api.yaml)과 같은 엔드포인트 집합을 다루는지 검증한다. |
api/openapi/ImageSystemContractTest.java이력 | 테스트 | 이미지시스템 연동 API(API-01~07)가 협의된 계약 정본과 일치하는지 검증한다. |
api/openapi/OpenApiSnapshotTest.java이력 | 테스트 | OpenAPI 계약 스냅샷(openapi/openapi.json)이 현재 컨트롤러·DTO 와 일치하는지 검증한다. |
api/ops/ActuatorPrometheusExposureTest.java이력 | 테스트 | 시스템 관측 노출 회귀 (20260828 관측 스택 결정) — 프로메테우스 스크레이프 엔드포인트가 실제로 열려 있고 JVM 지표가 실려 나오는지 본다. |
api/ops/LogbackJsonFormatTest.java이력 | 테스트 | 로그 출력 형식 회귀 (20260828 관측 스택 결정 §2 — Loki). |
api/ops/RequestCorrelationApiTest.java이력 | 테스트 | 상관관계 ID 필터가 실제 서블릿 체인에 어떤 순서로 걸렸는지 보는 회귀 (20260828 관측 스택 결정 §2). |
api/organization/AdminMenuWorkflowMigrationTest.java이력 | 테스트 | V202610232300 관리자 LNB 재구성 마이그레이션 — 메뉴 이름·순서·그룹·소제목만 바꾸고 권한 칸은 그대로 두는지 확인한다 (docs/decisions/20261022-admin-lnb-workspace-workflow.md 1·2·3·9·11항). |
api/organization/BoundMenuPermissionMigrationTest.java이력 | 테스트 | V202610240900 묶음 메뉴 마이그레이션 — 공시실 링크 설정을 위탁사 Workspace 에 묶고 권한 값을 맞추는지 확인한다 (docs/decisions/20261022-admin-lnb-workspace-workflow.md 14항). |
api/organization/OrganizationPersistenceTest.java이력 | 테스트 | 조직 스키마·시드가 실제 마이그레이션과 JPA 매핑 위에서 동작하는지 확인한다 — 유닛 테스트로는 잡히지 않는 영역이다 (docs/rules/testing.md): 엔티티 스캔, 컬럼/타입 매핑, FK·CHECK 제약, 여러 모듈의 마이그레이션 순서, 그리고 시드가 실제로 적재되는지. |
api/organization/RetireDisclosureLinkMenuMigrationTest.java이력 | 테스트 | V202610261200 공시실 링크 설정 메뉴 퇴역 마이그레이션 — DISCLOSURE_LINK 행을 지우고 나머지 행의 권한 칸과 순서(빈자리 없이)를 그대로 두는지 확인한다(docs/decisions/20261023-client-workspace-disclosure-inline.md 5항). |
api/organization/UserRoleApiScenarioTest.java이력 | 테스트 | http/user-roles.http 를 그대로 재생해 사용자 레벨 부여·회수 API(N01)를 검증한다. |
api/security/AuthApiTest.java이력 | 테스트 | 인증 골격이 실제 애플리케이션 조립 위에서 동작하는지 확인한다 — 유닛 테스트로는 잡히지 않는 영역이다 (docs/rules/testing.md): 필터가 서블릿 체인에 실제로 등록됐는지, local 프로필의 개발용 로그인 스텁이 organization 모듈의 UserAccountLookupPo… |
api/security/LazyMultipartAuthorizationTest.java이력 | 테스트 | 업로드 본문은 인가를 통과한 뒤에 읽는다 — spring.servlet.multipart.resolve-lazily (docs/decisions/20261012-api-menu-authorization.md §3, 경로 열거 401 정리). |
api/security/ProtectedPathPatternApiTest.java이력 | 테스트 | 개인정보·관리자 데이터를 내려보내는 업무 API 가 세션 없이는 401 인지 확인한다 — 서블릿 체인·인가 인터셉터·전역 예외 처리가 맞물린 결과라 유닛 테스트로는 잡히지 않는다. |
api/statistics/BusinessStatisticsApiPostgresTest.java이력 | 테스트 | BusinessStatisticsApiTest 의 시나리오를 실제 PostgreSQL 16 에서 그대로 다시 돈다 — 업무 통계 조회 API(ST03-B). |
api/statistics/BusinessStatisticsApiTest.java이력 | 테스트 | 업무 통계 조회 API(ST03-B — S-007 §3-4 「조회 API」)를 실제 HTTP 경계 + H2 스키마 위에서 확인한다. |
api/statistics/ChatReflectedMigrationSeedTest.java이력 | 테스트 | 마이그레이션 V202611031900 의 채움 SQL 을 고정한다 — 새 판을 만든 반영만 검토로 세고, 요약 전 행은 비워 두고, 롤업의 검토 건수는 다른 원천까지 포함해 자바 규칙(ReportLifecycleFactEntity#isReviewed())과 같게 다시 센다. |
api/statistics/ClaimTypeDiseaseMigrationSeedTest.java이력 | 테스트 | 마이그레이션 V202610271801 의 첫 적재 SQL(이미 쌓인 업무 통계 사실 행으로 stat_daily_claim_type_diseases 를 채우는 INSERT … SELECT)이 증분 적재의 자바 규칙(StatDailyRollupContributions)과 같은 칸을 만드는지 고정한다… |
api/statistics/ConfirmedPagesMigrationSeedTest.java이력 | 테스트 | 마이그레이션 V202611031800 의 채움 SQL 이 증분 적재와 같은 값을 만드는지 고정한다 — 최신 분류 결과에서 그대로 확정한 낱장만 세고, 직접 지정도 있으면 빼고, 요약 전 행은 비워 둔다. |
api/statistics/ExtractionQualityStatisticsApiTest.java이력 | 테스트 | 추출 완료율 조회 API(NE02 — S-007 §3-4 「추출 완료율 조회 API」)를 실제 HTTP 경계 + H2 스키마 위에서 확인한다. |
api/statistics/LifecycleBackfillApiTest.java이력 | 테스트 | 생애주기 통계 사실 재적재 명령(결정 20261027)을 실제 HTTP 경계 + H2 스키마(Flyway V202610271500) 위에서 고정한다. |
api/statistics/LifecycleStatisticsApiTest.java이력 | 테스트 | 시스템 통계 조회 API(DP06 — S-007 §3-4 「생애주기 조회 API」)를 실제 HTTP 경계 + H2 스키마 위에서 확인한다. |
api/statistics/ProcessingTimeStatisticsApiTest.java이력 | 테스트 | 처리시간 통계 조회 API(2026-10-19 — S-007 §3-4 「처리시간 통계 조회 API」)를 실제 HTTP 경계 + H2 스키마(마이그레이션 V202610191500 포함) 위에서 확인한다 — 파라미터 바인딩, 롤업 SQL 의 칸 합산, 설정 기본 경계로 다시 묶은 분포·매수 구간·시… |
api/statistics/ReportLifecycleFactLoadIntegrationTest.java이력 | 테스트 | 생애주기 사실 적재(DP04)의 3지점을 실제 컨텍스트(커밋 후 이벤트·공용 풀·시퀀서·H2 스키마) 위에서 고정한다. |
api/statistics/ReportLifecycleFactPersistenceTest.java이력 | 테스트 | 생애주기 사실 테이블(DP03)의 엔티티·리포지토리가 실제 스키마(Flyway V202609110002) 위에서 영속화되는지 확인한다 — 유닛 테스트로는 잡히지 않는 영역이다(docs/rules/testing.md): 엔티티 스캔, 컬럼/타입/enum/boolean 매핑, report_no 유니… |
api/statistics/ReportStatFactLoadIntegrationTest.java이력 | 테스트 | 전송 완료 → 통계 사실 적재(ST02)의 세 완료 조건을 실제 컨텍스트(커밋 후 이벤트·공용 풀·H2 스키마) 위에서 고정한다. |
api/statistics/ReportStatFactPersistenceTest.java이력6일 전 · #1949 | 테스트 | 통계 사실 테이블(ST01)의 엔티티·리포지토리가 실제 스키마(Flyway V202609030005) 위에서 영속화되는지 확인한다 — 유닛 테스트로는 잡히지 않는 영역이다(docs/rules/testing.md): 엔티티 스캔, 컬럼/타입/enum 매핑, 부모 경유 cascade, report_… |
api/statistics/ReviewCountMigrationSeedTest.java이력 | 테스트 | 마이그레이션 V202610271700 의 롤업 채움 SQL(이미 쌓인 사실 행으로 stat_daily_lifecycle.reviewed_count 를 채우는 UPDATE)이 증분 적재의 자바 규칙(ReportLifecycleFactEntity#isReviewed())과 같은 값을 만드는지 고정한… |
api/statistics/ServiceStatusApiTest.java이력 | 테스트 | 서비스 상태 조회 API(S-007 §3-4 「서비스 상태 조회 API」)를 실제 HTTP 경계 + 가짜 Prometheus HTTP 서버 위에서 확인한다 — application.yml 의 개발 서버 기본 PromQL 이 그대로(값 인코딩) 나가는지, 판정·연결 실패 처리. |
api/statistics/SliceRollupMigrationSeedTest.java이력 | 테스트 | 마이그레이션 V202610191500 의 첫 적재 SQL(이미 쌓인 사실 행으로 두 롤업을 채우는 INSERT … SELECT)이 증분 적재의 자바 규칙과 같은 칸을 만드는지 고정한다 — 올림·상한 칸(StatDailyProcessingTimeRollupService#pageBucketOf· S… |
api/statistics/StatDailyRollupIntegrationTest.java이력 | 테스트 | 적재 직후 일별 롤업 증분 갱신(ST03-A)의 완료 조건 다섯을 실제 컨텍스트(커밋 후 이벤트·공용 풀·H2 스키마) 위에서 고정한다. |
api/statistics/StatDailyRollupPostgresTest.java이력 | 테스트 | StatDailyRollupIntegrationTest 의 시나리오를 실제 PostgreSQL 16 에서 그대로 다시 돈다 — 일별 롤업 증분 갱신(ST03-A). |
api/statistics/StatUnmappedQueueApiTest.java이력 | 테스트 | 미매핑 큐·차원 마스터 관리자 API(ST05-A — S-007 §3-4 「미매핑 큐 API」)의 완료 조건을 실제 HTTP 경계 + H2 스키마 위에서 고정한다. |
api/statistics/StatisticsBackfillApiPostgresTest.java이력 | 테스트 | StatisticsBackfillApiTest 의 시나리오를 실제 PostgreSQL 16 에서 그대로 다시 돈다 — 통계 재적재 명령(ST04). |
api/statistics/StatisticsBackfillApiTest.java이력 | 테스트 | 재적재 명령 API(ST04 — S-007 §3-4 「재적재 명령」)의 완료 조건을 실제 HTTP 경계 + H2 스키마 위에서 고정한다. |
api/statistics/UsageStatisticsApiTest.java이력 | 테스트 | 이용 현황 조회 API(2026-10-19 — S-007 §3-4 「이용 현황 조회 API」)를 실제 HTTP 경계 + H2 스키마 위에서 확인한다 — 롤업 SQL 의 사람 × 부서 합산·정렬, 서로 다른 이용자 수, 그리고 이름·팀·단을 로컬 표본 조직도(organization-core 시드… |
api/support/H2AdvisoryTransactionLock.java이력 | 클래스 | H2 전용 SQL 별칭의 테스트 모형. |
api/support/H2TestDatasource.java이력 | 클래스 | 컨텍스트를 띄우는 테스트가 쓰는 H2 PostgreSQL 호환 모드 데이터소스 설정. |
api/support/PostgresTestDatabase.java이력 | 클래스 | PostgreSQL 통합 테스트(*PostgresTest, @Tag("postgres"))가 쓰는 실제 PostgreSQL 16 데이터소스. |
api/support/RepoRoot.java이력 | 클래스 | 테스트가 리포 안의 파일을 가리킬 때 쓰는 단일 기준점. |
api/support/RepoRootTest.java이력 | 테스트 | RepoRoot 자체의 동작을 지킨다. |
api/workflow/WorkflowDefinitionOrderingTest.java이력 | 테스트 | 워크플로우 정의를 단계까지 함께 읽을 때 순서가 seq_no 오름차순인지 본다. |
api/workflow/scenario/ScenarioCoverage.java이력 | 클래스 | 시나리오별 실행 커버리지 — JaCoCo 에이전트(jacoco 플러그인이 test 태스크에 붙인다)의 실행 데이터를 시나리오 앞에서 비우고 뒤에서 꺼내 이 시나리오가 지나간 클래스·줄을 센다. |
api/workflow/scenario/ScenarioExpectations.java이력 | 클래스 | 워크플로 시나리오의 기대값 판정 — ".": 한 줄을 실제 값과 견준다. |
api/workflow/scenario/WorkflowScenarioReport.java이력 | 클래스 | 시나리오 판정 기록 — 시나리오마다 .json(단계·판정 줄 전부)과 모음 summary.json·summary.md. |
api/workflow/scenario/WorkflowScenarioRunner.java이력어제 · #2120 | 클래스 | 워크플로 시나리오 한 편을 실제 스택(MockMvc → 컨트롤러 → 엔진 → H2)에서 단계별로 돌리고 단계마다 기대값을 판정한다. |
api/workflow/scenario/WorkflowScenarioTest.java이력 | 테스트 | 워크플로 시나리오(scenarios/workflow/)를 스텁 엔진·H2 위의 실제 스택으로 돌린다 — 시나리오 한 편이 테스트 하나다. |
modules/ · 공통
modules/base/GitHub
공통 기반
공통 기반 — 모든 모듈의 최하위 계층. 표준 응답·전역 예외·인증(JWT 쿠키) 골격, 그리고 도메인끼리 Gradle 의존 없이 서로 부르게 하는 포트 인터페이스를 둔다. 다른 모듈에 의존하지 않는다.
ai/31GitHub
외부 AI 플랫폼(벡터 컬렉션·인덱싱·검색, 채팅, 문서 처리·변환) 포트와 값 객체.
VectorCollectionCreateCommand.java이력0.0% | DTO | VectorCollectionPort#create 입력. |
VectorDescriptionGenerateCommand.java이력0.0% | DTO | 컬렉션(벡터스토어) 설명 생성 요청 — 플랫폼이 스토어의 기존 설명과 색인을 마친 문서 앞부분을 읽어 설명을 새로 만든다 (docs/decisions/20261016-collection-store-description-generate.md §3). |
VectorDocumentIndexCommand.java이력100.0% | DTO | VectorDocumentPort#requestIndexing 입력. |
VectorSearchHit.java이력0.0% | DTO | 검색 결과 한 건. |
VectorIndexingStatus.java이력0.0% | enum | 문서 인덱싱 진행 상태. |
ChatAnswer.java이력0.0% | record | 채팅 답변 한 건. |
ChatCitation.java이력100.0% | record | 플랫폼 응답이 준 출처 하나 — 플랫폼 식별자다 (결정 20261021 6항). |
ChatPrompt.java이력72.7%7일 전 · #1914 | record | 채팅 한 번의 입력. |
ChatRouting.java이력0.0% | record | ① 의도 게이트 + ② 컬렉션 라우팅의 결과 (결정 20261021 10항). |
ChatRoutingCandidate.java이력0.0% | record | ② 컬렉션 라우팅(POST /vector_stores/route)에 실을 공용 컬렉션 후보 하나 (결정 20261021 3·10항). |
ChatRoutingPrompt.java이력0.0% | record | ① 의도 게이트 + ② 컬렉션 라우팅 한 번의 입력 (결정 20261021 10항). |
ChatSearchStore.java이력0.0% | record | 본 답변(②)의 file_search 가 볼 Store 하나 (결정 20261021 3·4항). |
KnowledgeDefaults.java이력0.0% | record | 위탁사별 참조 기본값 — 그 위탁사에 켜 둔 문서와 그 문서들의 컬렉션(docs/decisions/20261030-reference-defaults-to-analysis-and-chat.md 3항). |
KnowledgeFileRef.java이력0.0% | record | 플랫폼 파일 식별자를 우리 지식컬렉션 파일로 되돌린 값 — 답변 근거 행의 재료. |
KnowledgeSearchScope.java이력0.0% | record | 대화가 라우팅과 무관하게 항상 볼 검색 범위 (결정 20261021 3·4항). |
VectorCollectionRef.java이력0.0% | record | 플랫폼에 만들어진 컬렉션 한 개에 대한 참조. |
VectorDocumentRef.java이력0.0% | record | 플랫폼에 인덱싱 요청된 문서 한 건에 대한 참조. |
VectorSearchQuery.java이력100.0% | record | VectorSearchPort#search 입력. |
ChatModelException.java이력0.0% | 예외 | 채팅 답변 생성 실패. |
VectorDescriptionGenerationException.java이력0.0% | 예외 | 컬렉션 설명 생성 실패 — 호출자가 다시 시도할 때를 정하도록 이유를 나눈다 (docs/decisions/20261016-collection-store-description-generate.md §3, 2026-10-16 실측). |
VectorIndexingDeferredException.java이력0.0% | 예외 | 요청 마감(VectorDocumentIndexCommand#requestDeadline())이 지나 새 요청을 보내지 않았다. |
VectorStoreException.java이력0.0% | 예외 | AI 플랫폼 벡터 저장소 연동 실패. |
ChatConversationPort.java이력 | 포트 | 외부 AI 플랫폼의 채팅 대화를 파기하는 포트. |
ChatModelPort.java이력0.0% | 포트 | 채팅 답변 생성 포트 — 업체 중립 표면. |
ChatPromptLookupPort.java이력100.0% | 포트 | Studio 호출에 싣는 지시문의 지금 판을 읽는다 — 지시문 판은 조사 모듈이 저장하고(관리자 API), 채팅 모듈이 이 포트로 읽는다 (docs/decisions/20261023-chat-prompt-db-versioning.md). |
ChatTitlePort.java이력 | 포트 | 외부 AI 플랫폼에 대화 제목을 만들어 달라고 하는 포트 — 업체 중립 표면. |
KnowledgeScopePort.java이력0.0% | 포트 | 채팅이 지식컬렉션에서 읽는 것 — 검색 범위·라우팅 후보·출처 되돌리기 (결정 20261021). |
VectorCollectionPort.java이력0.0% | 포트 | 외부 AI 플랫폼의 벡터 컬렉션(지식컬렉션 1개에 대응하는 저장 단위) 수명주기 포트. |
VectorDocumentCleanupPort.java이력 | 포트 | File ID 를 얻은 지식컬렉션 업로드의 영속 정리 경계. |
VectorDocumentPort.java이력 | 포트 | 컬렉션에 담긴 문서의 인덱싱(벡터화) 요청·상태 조회·제거 포트. |
VectorSearchPort.java이력 | 포트 | 선택된 컬렉션 집합을 대상으로 하는 검색 포트. |
ai/conversion/5GitHub
DocumentInfo.java이력85.7% | record | 파일 정보 — 지금은 쪽 수만 쓴다. |
PdfConversion.java이력100.0% | record | PDF 변환 결과. |
DocumentConversionException.java이력100.0% | 예외 | 파일 정보를 읽거나 PDF 로 바꾸지 못했을 때. |
DocumentConversionPort.java이력 | 포트 | 파일 정보 읽기와 PDF 변환 포트 — 문서 AI 플랫폼에 올리기 전 단계다 (docs/decisions/20261013-file-ingestion-pdf-unification.md §1). |
DocumentPageInspectionPort.java이력 | 포트 | 외부 문서 분석기가 보고한 쪽 수를 읽는 포트. |
ai/document/49GitHub
AnalysisJobRequest.java이력0.0% | DTO | 요약 작업 요청 — 추출 작업에 이어서 돌리는 것이 전제다. |
AnalyzedItem.java이력0.0% | DTO | 요약 항목 한 개 — 카드 안의 한 절(내원경위·진단병명 …)이다. |
ClassificationJobRequest.java이력0.0% | DTO | 분류 작업 요청. |
ExtractionJobRequest.java이력0.0%2일 전 · #2113 | DTO | 추출 작업 요청 — 분류 작업에 이어서 돌리는 것이 전제다. |
GroupSummaryJobRequest.java이력0.0% | DTO | 요약 그룹 하나의 요청 (DocumentGroupSummaryPort#submit). |
AgentRole.java이력0.0% | enum | 문서 AI 플랫폼 에이전트의 용도 — 조사건 설정 스냅샷이 용도마다 에이전트·지시서를 고정한다(DocumentAgentConfigPort). |
AiJobState.java이력0.0% | enum | 플랫폼에 맡긴 작업의 상태 — 플랫폼별 상태 이름을 이 셋으로 모은다. |
ExternalFileState.java이력0.0% | enum | 플랫폼에 맡긴 파일의 준비 상태. |
AgentClassifyConfigDraft.java이력0.0% | record | 관리자 화면에서 고친 분류 체계 — 원본 지시서를 복제해 새 지시서를 만들 때 바꿀 값이다 (docs/decisions/20261103-studio-config-save-new-config.md). |
AgentConfigRef.java이력0.0% | record | 문서 AI 플랫폼의 에이전트·지시서 한 쌍 — 작업 요청에 실으면 어댑터가 설정값 대신 이것으로 호출한다. |
AgentConfigVersion.java이력0.0% | record | 문서 AI 플랫폼 에이전트의 지시서(Config) 하나 — 버전 목록의 한 줄(docs/decisions/20261029-studio-config-version-list-from-studio.md). |
AnalysisJobStatus.java이력0.0% | record | 요약 작업의 현재 상태와 결과 — ExtractionJobStatus 와 같은 모양이다. |
AnalyzedCard.java이력0.0% | record | 요약 결과의 카드 한 장 — 요약 표 섹션에서는 플랫폼이 기관(병원) 하나로 묶어 쓴 요약, 행 추가 탭 섹션에서는 행(탭) 하나다(S-014 §6·§9). |
AnalyzedSection.java이력0.0% | record | 플랫폼이 준 요약 결과의 구역(섹션) 하나 — 골격(S-014 §9)에 맞춰 답한 경우. |
AnalyzedSource.java이력0.0% | record | 요약 항목의 근거 하나 — 입력 문서의 어느 쪽에서 무엇을 보고 썼는가. |
AnalyzedTabOutput.java이력0.0% | record | 플랫폼이 준 요약 결과의 탭 하나 원형 — 보고서 에이전트의 Instruct 노드 하나가 낸 출력 JSON 을 모양을 바꾸지 않고 그대로 담는다 (S-014 §9-1, 20261007 결정 1·3항). |
ClassificationJobStatus.java이력0.0% | record | 분류 작업의 현재 상태와 결과. |
ClassifiedDocument.java이력0.0%6일 전 · #1952 | record | 분류 결과 한 건 — 플랫폼이 문서 하나로 묶어 판정한 결과다. |
DocumentUpload.java이력0.0% | record | 플랫폼에 올릴 파일 하나. |
ExternalDocumentFile.java이력0.0% | record | 플랫폼이 보관 중인 파일 참조. |
ExtractOccurrence.java이력0.0%6일 전 · #1962 | record | 추출 작업 안 Extract 결과 하나의 자리 — 보고서 탭 출력의 요약근거({job_id, occurrence_id})를 낱장으로 되짚는 데 쓴다 (docs/decisions/20261029-shinhan-summary-evidence-occurrence.md). |
ExtractedDocument.java이력0.0% | record | 추출 결과 한 건 — 플랫폼이 문서 하나로 묶어 항목을 뽑은 결과다. |
ExtractedField.java이력0.0%5일 전 · #1992 | record | 추출 항목 한 개 — 플랫폼이 문서에서 뽑은 키·값 한 쌍이다. |
ExtractionJobStatus.java이력0.0% | record | 추출 작업의 현재 상태와 결과 — ClassificationJobStatus 와 같은 모양이다. |
FieldLocation.java이력100.0% | record | 추출 항목이 원문 낱장 어디에 있는지 — 낱장 폭·높이에 대한 비율(0~1) 로 적은 축 정렬 사각형이다. |
GroupSummaryJobStatus.java이력0.0% | record | 요약 그룹 작업의 현재 상태와 결과 (DocumentGroupSummaryPort#poll). |
PurgedDocumentFile.java이력0.0% | record | 파기로 플랫폼에서 지운 파일 하나의 결과. |
ReviewedDocumentStructure.java이력100.0% | record | 분류 작업의 현재 검수 구조 — 그룹 요약이 문서를 고르는 기준이다(DocumentGroupSummaryPort#readStructure). |
SubmittedJobLookup.java이력0.0% | record | 응답을 받지 못한 작업 요청(접수불명)이 플랫폼에 실제로 접수됐는지 찾는 조회 — 멱등 키가 없는 작업 생성 호출의 중복 요청을 막는 데 쓴다. |
AgentClassifyConfig.java이력0.0% | 설정 | 분류 에이전트 지시서(Config) 하나의 분류 체계 — 관리자 스키마 화면에 채울 값만 뽑은 것이다 (docs/decisions/20261102-studio-config-sync-fill-screen.md). |
AgentExtractConfig.java이력0.0% | 설정 | 추출 에이전트 지시서(Config) 하나의 문서종별 추출 항목 — 관리자 스키마 화면에 채울 값만 뽑은 것이다 (docs/decisions/20261102-studio-config-sync-fill-screen.md). |
AgentConfigSourceNotReadyException.java이력0.0% | 예외 | 플랫폼이 지시서의 원본 Collection 을 아직 검사 중이라 새 지시서를 만들 수 없다. |
DocumentAiException.java이력0.0% | 예외 | 문서 AI 플랫폼 호출 실패 — DocumentFilePort·DocumentClassificationPort 공통 계약이다. |
UnsupportedAgentConfigChangeException.java이력0.0% | 예외 | 원본 지시서를 복제하면서 값만 바꿔서는 할 수 없는 변경 — 처리 단계나 갈래 구조가 바뀌어야 한다 (docs/decisions/20261103-studio-config-save-new-config.md 6항). |
PdfDocumentAssembler.java이력93.4% | 클래스 | 낱장 이미지를 입력 순서대로 여러 쪽 PDF 로 묶는다. |
SourceJobSelectors.java이력95.8%2일 전 · #2113 | 클래스 | 분류 Job 여럿을 한 문자열로 주고받는 표기 — 다시 분석 `증분` 으로 합친 분류 결과는 분류 Job 이 여럿이다(결정 20261111-incremental-reanalysis-execution-unit). |
AgentConfigCompatibilityPort.java이력0.0%5일 전 · #1988 | 포트 | 앞 단계 지시서(Config)의 결과를 뒤 단계 지시서가 이어받을 수 있는지 — 건에 고정한 지시서 짝의 사전 감지 (docs/decisions/20261108-studio-config-pair-repin.md). |
AgentImportShapePort.java이력0.0%어제 · #2132 | 포트 | 뒤 단계 지시서(추출·요약 그룹)의 Import 형태 맞춤 — 분류 지시서가 바뀌면 그 지시서가 만들 형태를 고른 새 지시서를 만든다 (docs/decisions/20261111-studio-import-shape-regeneration.md). |
CaseDocumentStorePort.java이력100.0% | 포트 | 사건 서류가 색인되는 플랫폼 Store — 사고조사 챗봇 답변의 file_search 범위를 만들 때 쓴다. |
DocumentAgentConfigPort.java이력0.0%5일 전 · #1994 | 포트 | 지금 설정된 문서 AI 플랫폼 에이전트·지시서 — 조사건이 인입될 때 이 값을 건에 고정하고, 이후 작업 요청에 AgentConfigRef 로 실어 보낸다(docs/decisions/20261028-investigation-settings-snapshot-at-intake.md 2항). |
DocumentAgentConfigVersionPort.java이력 | 포트 | 용도별 에이전트의 지시서(Config) 목록 — 관리자 에이전트 스튜디오의 버전 선택 목록이 플랫폼과 같은 버전을 보이게 한다 (docs/decisions/20261029-studio-config-version-list-from-studio.md). |
DocumentAnalysisPort.java이력 | 포트 | 추출된 문서 묶음을 근거로 보고서 요약(해석)을 쓰는 일을 문서 AI 플랫폼에 맡기고 결과를 받는 포트. |
DocumentClassificationPort.java이력0.0% | 포트 | 문서 분류를 문서 AI 플랫폼에 맡기고 결과를 받는 포트. |
DocumentExtractionPort.java이력0.0% | 포트 | 문서에서 항목을 뽑는 일을 문서 AI 플랫폼에 맡기고 결과를 받는 포트. |
DocumentFilePort.java이력0.0% | 포트 | 문서 AI 플랫폼에 원본 파일을 맡기는 포트 — 분류·추출 같은 문서 작업의 입력 준비 단계다. |
DocumentGroupSummaryPort.java이력 | 포트 | 요약 그룹 하나(2depth 문서종 N개 → 프롬프트 1개)를 문서 AI 플랫폼에 맡기고 결과를 받는 포트 — 그룹마다 1회 부른다 (docs/decisions/20261019-studio-summary-tab-doc-groups.md 「추가 2026-10-21」). |
DocumentReportLlmPort.java이력50.0% | 포트 | 보고서 초안의 탭 하나를 LLM 직접 호출로 만든다 (docs/decisions/20261020-report-generation-llm-input-job.md 「결정」 1~7항). |
DocumentReportPort.java이력0.0% | 포트 | 보고서 초안의 탭(구역) 글을 문서 AI 플랫폼에 맡긴다 (docs/decisions/20261015-studio-saas-v2-agents-adoption.md D4). |
DocumentResultCorrectionPort.java이력0.0%5일 전 · #1992 | 포트 | 사람이 고친 결과(분류 라벨·추출 값)를 문서 AI 플랫폼의 저장 결과에 되돌려 놓는 포트 — 결과 왕복 (docs/decisions/20260929-pipeline-correction-roundtrip.md). |
audit/7GitHub
감사 원장 적재 포트와 값 객체.
AuditEventCommand.java이력81.8% | DTO | 원장에 남길 행위 한 건. |
AuditEventType.java이력100.0%2일 전 · #2112 | enum | 감사 원장에 남는 행위의 갈래 (야간 플랜 20260824 N04). |
AuditOutcome.java이력100.0% | enum | 기록된 행위의 처리 결과. |
AuditTargetType.java이력100.0% | enum | 행위가 가리키는 대상(작업 항목)의 갈래. |
AuditActor.java이력71.4% | record | 행위자 — "누가 했는가". |
AuditedActions.java이력100.0%5일 전 · #1970 | 클래스 | 컨트롤러가 업무 행위 하나를 감사 원장과 함께 실행하는 부품 — docs/specs/audit-event-catalog.md 「기록 중」 (docs/decisions/20261018-audit-event-scope-expansion.md). |
AuditTrailPort.java이력 | 포트 | 감사 원장 적재 포트 (야간 플랜 20260824 N04). |
classification/8GitHub
위탁사·분류 마스터 포트.
ModelMappingStatus.java이력0.0% | enum | 이미지시스템 폴더 분류와 AI Agent 낱장 분류 사이의 매핑 진행 상태다 (S-003 API-07). |
ReportDeliveryChannel.java이력0.0% | enum | 위탁사별 보고서 초안 전송 방식 (결정 20260902-report-delivery-channel-selection 1항 — 위탁사별 택1). |
CustomerCompanyLookupPort.java이력0.0% | 포트 | 영속 위탁사 마스터의 사용 여부를 읽는 포트다. |
DisclosureLinkLookupPort.java이력 | 포트 | 위탁사의 사용자에게 열린 공시실 링크를 읽는 포트다 (결정 20261017-customer-onboarding-status-api 4항). |
FolderPlacementLookupPort.java이력0.0% | 포트 | 위탁사의 「분류 라벨 → 이미지시스템 폴더」 배정 조회 — 분류 결과의 회신 폴더를 정할 때 쓴다(구현은 classification-core). |
ImageMasterSyncPort.java이력0.0% | 포트 | 이미지시스템이 보내는 위탁사·문서분류 마스터 전체 목록을 영속 마스터에 반영하는 포트다. |
ReportDeliveryChannelLookupPort.java이력 | 포트 | 위탁사의 보고서 초안 전송 방식을 읽는 포트 (결정 20260902-report-delivery-channel-selection 7항). |
StudioDocumentTypeMasterPort.java이력0.0%오늘 · #2161 | 포트 | 에이전트 스튜디오 배포가 운영 문서종 마스터(agent_document_types)와 위탁사 분류체계 매핑 (folder_classification_mappings)을 맞추는 포트다(docs/decisions/20261112-studio-deploy-master-mapping-sync.md). |
exception/2GitHub
BusinessException 하위 도메인 예외 — 에러 코드와 HTTP 상태를 정한다.
BusinessException.java이력100.0% | 예외 | 도메인 모듈에서 발생하는 처리 가능한 예외의 공통 상위 타입. |
GlobalExceptionHandler.java이력76.9% | 핸들러 | ResponseEntityExceptionHandler 를 상속해 Spring MVC 가 던지는 4xx 예외 (검증 실패, 잘못된 요청 본문, 지원하지 않는 메서드 등)는 원래 상태 코드를 그대로 유지한다. |
file/9GitHub
ZIP·PDF(쪽 낱장 분할)·문서 변환·파일 해시 유틸.
PdfPageTooLargeException.java이력100.0%2일 전 · #2093 | 예외 | PDF 의 한 쪽만으로 Studio 문서 파싱 구간 한도 이상이라 쪽을 나눠서는 맞출 수 없을 때 (docs/decisions/20261110-collection-studio-group-size.md). |
PdfRasterizationException.java이력100.0% | 예외 | PDF 를 낱장 이미지로 풀지 못했을 때. |
ZipProcessingException.java이력100.0% | 예외 | ZIP 무결성 계산 또는 안전한 압축 해제에 실패했음을 나타낸다. |
FileDigests.java이력50.0% | 클래스 | 파일 내용의 다이제스트. |
LocalDocumentConverter.java이력95.0% | 클래스 | DocMate 규격을 받기 전의 로컬 변환 구현 (docs/decisions/20261013-file-ingestion-pdf-unification.md §1-2). |
PdfDocuments.java이력88.2%2일 전 · #2093 | 클래스 | PDF 쪽 수 읽기·이미지 → PDF·쪽 범위 분할·조각 병합 (docs/decisions/20261013-file-ingestion-pdf-unification.md). |
PdfPageRasterizer.java이력95.9% | 클래스 | PDF 를 쪽마다 한 장의 JPEG 로 렌더링한다 (결정 20261002-pdf-page-split-at-reception). |
ZipArchiveProcessor.java이력74.2% | 클래스 | ZIP SHA-256 계산과 경로 탈출을 막는 안전한 압축 해제 유틸. |
ZipEntryNames.java이력95.7% | 클래스 | ZIP 항목명 문자셋 판정. |
hospital/1GitHub
HospitalMasterSourcePort.java이력0.0%4일 전 · #2006 | 포트 | 병원 마스터 원천 조회 포트 (결정 20260910 병원 마스터 §1). |
integration/10GitHub
base 포트 구현체 — 다른 도메인·워크플로우 엔진이 이 모듈을 부르는 입구.
investigation/6GitHub
InvestigationBusinessMetadataLookupPort.java이력0.0% | 포트 | 보고서번호로 외부 업무 원천의 조사·계약 메타데이터를 조회하는 포트다. |
InvestigationChatContextPort.java이력92.5% | 포트 | 사고조사 챗봇이 쓰는 보고서 쪽 맥락 — 보고서 건을 소유한 investigation-core 가 구현하고, 대화를 소유한 chat-core 가 이 타입으로만 받는다(docs/decisions/20261021-investigation-chat-references-and-reflection.md). |
InvestigationChatPurgePort.java이력0.0% | 포트 | 보고서가 지워질 때 그 보고서의 사고조사 챗봇 대화를 첨부까지 지운다(docs/decisions/20261023-investigation-chat-session-structure.md 8항). |
InvestigationReportReflectionPort.java이력100.0% | 포트 | 사고조사 챗봇 「AI 보고서 반영」 — 대화에서 확인한 내용으로 보고서를 고쳐 요약 결과 새 판으로 남긴다 (docs/decisions/20261021-investigation-chat-references-and-reflection.md 5~7항, 통합 설계 v0.3 사고조사 4번·템플릿 5번). |
ReportDisposalSchedulePort.java이력0.0% | 포트 | 스마트심사가 알려 주는 보고서 파기 일정 — 파기 뷰 두 개를 보고서번호로 읽는다 (docs/decisions/20260909-report-disposal-policy.md 🟢, 뷰 정의 smartreview/views.json). |
SmartReviewReportTransferPort.java이력0.0% | 포트 | 스마트심사 보고서 수신 API 를 호출하는 포트 (docs/decisions/20261103-smart-review-report-receiver-api.md). |
mail/3GitHub
아웃바운드 메일 포트.
OutboundMail.java이력0.0% | record | 발송할 메일 한 건. |
MailDeliveryException.java이력0.0% | 예외 | 메일 발송 실패 (접속·TLS·인증·전송). |
MailDeliveryPort.java이력 | 포트 | 아웃바운드 메일 발송 포트. |
observability/5GitHub
요청 상관관계 ID·MDC 전파·외부 호출 계측.
ExternalCallMetrics.java이력100.0% | DTO | 외부 시스템으로 나가는 호출 하나의 성패·지연을 남기는 공통 계측 헬퍼 (docs/decisions/20260828-observability-stack.md §2 가 관측의 이유로 든 "외부 연동 장애 분석"). |
ObservabilityConfig.java이력0.0% | 설정 | 시스템 관측 빈 구성 (docs/decisions/20260828-observability-stack.md). |
MdcPropagation.java이력100.0% | 클래스 | MDC(로그 컨텍스트)를 다른 스레드로 넘기는 도우미. |
RequestCorrelation.java이력100.0% | 클래스 | 요청 상관관계 ID(correlation id)의 이름과 값 규칙을 한곳에 모은 상수/헬퍼. |
RequestCorrelationFilter.java이력100.0% | 필터 | 요청마다 상관관계 ID 를 MDC 에 심고 응답 헤더로 돌려주는 필터. |
organization/6GitHub
조직·사용자 디렉터리 라이브 조회 포트.
OrganizationScope.java이력0.0% | record | 조회자 한 명이 볼 수 있는 담당 조사자 사번의 집합 — 사고조사 조회 범위의 판정 결과다 (docs/decisions/20260918-permission-levels-and-org-scope.md §2). |
CollectionApprovalPolicyPort.java이력0.0% | 포트 | 지식컬렉션 승인 정책 — 권한 관리 매트릭스가 정하는 "누가 승인센터를 열고, 누가 1차 승인을 맡는가". |
MenuPermissionLookupPort.java이력 | 포트 | 메뉴 권한 매트릭스의 읽기 전용 창 — "보유 레벨 중 하나라도 이 메뉴들 중 하나를 쓸 수 있는가". |
OrganizationChangeHistoryPort.java이력 | 포트 | 사원별 최종 인사 변경일시 라이브 조회 포트 — 조직도의 「변경 대상자」(레벨 재검토가 필요한 사원) 판정 원천이다 (docs/decisions/20260827-orgchart-change-tracking.md). |
OrganizationDirectoryPort.java이력0.0% | 포트 | 조직·사용자 디렉터리 라이브 조회 포트 — 조직도 화면(/api/v1/departments·/api/v1/users)의 데이터 원천을 로컬 표본에서 라이브 뷰로 바꾸기 위한 자리다. |
OrganizationScopePort.java이력0.0% | 포트 | 사고조사 조회 범위 포트 — 조회자(세션 사용자)가 어느 담당 조사자의 건을 볼 수 있는지를 조직 트리로 판정하고, 목록·워크스페이스가 담당 조사자를 이름·소속으로 표시·검색할 수 있게 한다 (docs/decisions/20260918-permission-levels-and-org-scope.m… |
persistence/3GitHub
엔티티 공용 매핑 조각.
AfterCommit.java이력100.0%5일 전 · #1971 | 클래스 | 비가역 작업을 커밋된 뒤로 미루는 도우미. |
AfterRollback.java이력100.0% | 클래스 | 트랜잭션 안에서 먼저 만든 외부 자원(디스크 사본 등)을 롤백됐을 때만 거두는 도우미 — AfterCommit 의 짝. |
AuditTimestamps.java이력100.0% | 클래스 | 모든 도메인 엔티티가 공유하는 감사 시각(생성/수정) 두 컬럼. |
response/2GitHub
표준 응답 래퍼(success/data/error).
ApiResponse.java이력100.0% | DTO | docs/rules/api.md 의 표준 응답 구조(success/data/error)를 따르는 공통 응답 래퍼. |
ApiError.java이력100.0% | record | ApiResponse#error에 담기는 실패 상세. |
retention/2GitHub
DataRetentionConfig.java이력0.0% | 설정 | 공통 보관 일수 설정 등록 — DataRetentionProperties. |
DataRetentionProperties.java이력100.0% | 설정 | 데이터 보관·파기 공통 일수 — 파기 성격의 정리는 전부 이 값 하나를 본다 (docs/decisions/20261023-shared-data-retention-setting.md). |
security/22GitHub
base 의 사용자 조회 포트 어댑터.
ActiveSession.java이력100.0% | record | 판정을 통과한 세션 — 필터가 요청 속성에 담고, 세션 상태 조회(GET /api/v1/auth/session)가 읽는다. |
AuthenticatedUser.java이력100.0% | record | 시스템 세션이 표현하는 "지금 요청을 보낸 사람". |
IdentityCredentials.java이력100.0% | record | 신원 확인 요청 — 개발용 로그인(IdentityProviderPort)의 사번+비밀번호. |
IssuedSession.java이력100.0% | record | 수립된 시스템 세션. |
AuthSessionService.java이력98.9%5일 전 · #1970 | 서비스 | 로그인·재발급의 흐름만 담당한다: 신원 확인(IdentityProviderPort) → 토큰 발급 (AuthTokenService). |
AuthTokenService.java이력97.6% | 서비스 | 시스템 세션 토큰(JWT) 발급·검증. |
SessionLifetimeService.java이력92.3% | 서비스 | 세션 유휴 판정 — 유휴 만료를 서버가 지킨다(20261008 결정 2항). |
AuthProperties.java이력73.6% | 설정 | 인증 설정. |
SecurityConfig.java이력0.0% | 설정 | 인증 골격 빈 구성 (P0-5). |
AuthenticationFailedException.java이력100.0% | 예외 | 신원 확인 실패 / 세션 없음. |
UnregisteredUserException.java이력100.0% | 예외 | 외부에서 확인된 신원(SSO 사번)이 사용자 디렉터리(스마트심사 뷰)에 없거나 비활성인 경우. |
AuthAuditRecorder.java이력100.0%오늘 · #2188 | 클래스 | 로그인·로그아웃의 감사 원장 적재 — docs/specs/audit-event-catalog.md 「기록 중」. |
AuthCookieFactory.java이력100.0% | 클래스 | 세션 쿠키 생성·판독. |
RoleCodeAuthorization.java이력100.0% | 클래스 | 설정값 레벨 목록과 보유 레벨 집합을 대조하는 판정 한 곳. |
AuthSessionStorePort.java이력100.0% | 포트 | 세션 기록 포트 — 유휴 만료와 로그아웃을 서버가 판정하기 위한 상태다(20261008 결정 2항). |
IdentityProviderPort.java이력 | 포트 | 신원 확인(로그인) 포트 — "이 사람이 누구인지"를 판정하는 자리다. |
RefreshTokenStorePort.java이력100.0% | 포트 | refresh 토큰 원장 포트 — 회전(재발급마다 새 토큰)·무효화(로그아웃·재사용 감지)의 서버 측 상태다 (20260826 로테이션 결정). |
UserAccountLookupPort.java이력 | 포트 | 사번으로 사용자 부가 정보(이름·레벨·부서)를 읽는 포트. |
UserEmailLookupPort.java이력 | 포트 | 사번으로 사용자 메일 주소를 읽는 포트. |
UserSupplementLookupPort.java이력75.0% | 포트 | 사용자 부수정보(우리 DB 소유) 조회 포트. |
UserSupplementStorePort.java이력오늘 · #2181 | 포트 | 사용자 부수정보 저장 포트 — 최초 로그인 온보딩이 기본 레벨·이메일을 기록할 때 쓴다. |
JwtCookieAuthenticationFilter.java이력100.0% | 필터 | access 쿠키(JWT)를 읽어 요청에 세션 사용자를 붙이는 필터. |
security/authorization/9GitHub
API 접근 표시와 인가 인터셉터.
AuthorizationConfig.java이력0.0% | 설정 | 인가 인터셉터 등록. |
MenuAccessForbiddenException.java이력100.0% | 예외 | 세션은 있지만 이 API 가 속한 메뉴를 쓸 권한이 없다 — 403. |
ApiAccessRule.java이력100.0% | 인터페이스 | 핸들러 메서드 하나의 접근 규칙 — 붙은 접근 표시 4종(MenuPermission·LoginRequired·SystemApi· PublicApi) 중 무엇인지. |
LoginRequired.java이력 | 클래스 | 로그인만 필요한 API — 메뉴 권한을 보지 않는다. |
MenuAuthorizationInterceptor.java이력100.0% | 클래스 | API 인가 — 핸들러의 접근 표시(ApiAccessRule)와 세션의 보유 레벨, 메뉴 권한 매트릭스를 대조한다 (docs/decisions/20261012-api-menu-authorization.md). |
MenuCodes.java이력 | 클래스 | MenuPermission 에 적는 메뉴 코드 — role_menu_permissions.menu_code 의 값. |
MenuPermission.java이력 | 클래스 | 이 API 가 속한 메뉴 — 호출자의 보유 레벨 중 하나라도 나열한 메뉴 중 하나를 허용하면 통과한다. |
PublicApi.java이력 | 클래스 | 공개 API — 로그인 전에 부르는 경로(로그인·재발급·로그아웃·SSO). |
SystemApi.java이력 | 클래스 | 시스템 간 API — 사람 세션을 보지 않고 통과시킨다(이미지시스템 수신 API-01~07). |
security/local/1GitHub
local 프로필 전용 개발 로그인 스텁.
LocalDevIdentityProvider.java이력94.7% | 클래스 | 개발용 로그인 스텁 — local 프로필에서만 등록된다. |
security/onboarding/2GitHub
최초 로그인 온보딩 API.
AuthOnboardingController.java이력화면 미연결Swagger85.7%오늘 · #2181 | API | 최초 로그인 온보딩 API — 세션은 있으나 부수정보(레벨)가 없는 사용자가 이메일을 설정하고 기본 레벨(일반사용자)을 받는다. |
AuthOnboardingService.java이력100.0% | 서비스 | 최초 로그인 온보딩 — 부수정보(레벨·이메일)가 없는 사용자가 이메일을 설정하면 기본 레벨(일반사용자)을 부여한다 (2026-08-26 PM 지시). |
security/sso/8GitHub
SSO 콜백 로그인과 WebAgent 연동.
SsoCallbackController.java이력98.3% | API | SSO 콜백 — WebAgent 가 넣어 준 사번 헤더로 시스템 세션을 만들고 원래 화면으로 돌려보낸다 (S-008 2-2). |
SsoLoginController.java이력95.5% | API | 로그인 폼 → login.fcc 전달 (S-008 4-1~4-4, 가이드 Action.jsp 의 역할). |
SiteMinderPasswordEncoder.java이력 | 인터페이스 | login.fcc 로 보낼 비밀번호 변환 — SiteMinder 가 요구하는 값과 같아야 한다(S-008 4-4). |
RathonSiteMinderPasswordEncoder.java이력62.5% | 클래스 | 라톤테크 RathonCrypt#encodeSHA256 을 그대로 호출한다 — 가이드 Action.jsp 와 같은 값이다. |
SsoConfiguration.java이력80.0% | 클래스 | SSO 가 켜졌을 때만 조립된다. |
SsoHeaderValue.java이력100.0% | 클래스 | WebAgent 가 넣어 준 헤더 값 읽기 — RFC 2047 encoded-word 를 푼다(S-008 4-5). |
SsoLogoutCookie.java이력100.0% | 클래스 | 로그아웃 때 SSO(SiteMinder) 세션도 끝내는 쿠키. |
SsoReturnPath.java이력100.0% | 클래스 | 로그인 뒤 돌아갈 경로 검증 — 오픈 리다이렉트 차단. |
security/web/3GitHub
세션 API (login·logout·me·refresh).
AuthController.java이력화면 미연결Swagger42.4% | API | 세션 API. |
LoginRequest.java이력0.0% | DTO | 개발용 로그인 요청. |
SessionStatusResponse.java이력0.0% | DTO | 세션 상태 — 화면의 세션 타이머·만료 경고가 쓴다(20261008 결정 4·5항). |
storage/4GitHub
업로드 파일 저장 — 로컬 디스크, 설정 시 S3.
ObjectStorageException.java이력0.0% | 예외 | 로컬 또는 S3 호환 객체 저장소 접근 실패. |
ObjectStore.java이력 | 인터페이스 | 도메인에 무관한 키-객체 저장소. |
LocalObjectStore.java이력70.0% | 클래스 | 개발·로컬 실행에서 같은 객체 키 계약을 디렉터리로 구현한다. |
S3ObjectStore.java이력0.0% | 클래스 | 지식컬렉션과 이미지 접수가 함께 쓰는 S3 호환 객체 저장소 구현. |
text/1GitHub
Texts.java이력100.0%5일 전 · #1970 | 클래스 | 모듈마다 private 으로 복사돼 있던 문자열 helper 를 한곳에 모은다. |
validation/2GitHub
커스텀 Bean Validation 제약.
NullOrNotBlank.java이력 | 클래스 | PATCH(부분 수정) DTO의 String 필드용. |
NullOrNotBlankValidator.java이력0.0% | 클래스 | NullOrNotBlank의 실제 검증 로직 — null은 통과(=필드 생략), 공백 문자열만 거부한다. |
web/3GitHub
REST 컨트롤러 — HTTP 요청을 서비스로 넘기고 ApiResponse 로 감싼다.
ListSortDirection.java이력0.0% | enum | 목록 API가 공통으로 사용하는 정렬 방향. |
ListPageCondition.java이력100.0% | 인터페이스 | 쪽 단위 목록 조회 조건이 공통으로 갖는 쪽 번호·행 수 정규화. |
ListPeriodCondition.java이력100.0% | 인터페이스 | 기간 필터를 양끝 포함으로 받는 목록 조회 조건의 거꾸로 판정. |
web/csv/9GitHub
CsvColumn.java이력100.0% | record | CSV 한 열 — 목록 응답 DTO 의 필드 하나와 1:1 이다. |
CsvExportConfig.java이력0.0% | 설정 | CSV 내보내기 설정 등록 — CsvExportProperties. |
CsvExportProperties.java이력100.0% | 설정 | 관리자 로그 CSV 내보내기 설정 (HSA-AD-006). |
CsvExportBusyException.java이력100.0% | 예외 | 시스템 전체 동시 내보내기 상한에 걸렸다 — 429 CSV_EXPORT_BUSY. |
CsvExportTooManyRowsException.java이력100.0% | 예외 | 조건에 맞는 행이 한 번에 내보낼 수 있는 최대 행 수(hwss.export.csv.max-rows)보다 많다 — 400 CSV_EXPORT_TOO_MANY_ROWS. |
CsvPageFetcher.java이력100.0% | 인터페이스 | 화면이 이미 쓰는 목록 조회 함수를 한 쪽 단위로 부르는 어댑터. |
CsvCells.java이력100.0% | 클래스 | CSV 셀 한 칸의 문자열 규칙 — 수식 주입(CSV injection) 막기와 RFC 4180 따옴표 처리. |
CsvExportGate.java이력100.0% | 클래스 | 인스턴스당 동시 CSV 내보내기 상한 — 모든 로그 화면의 내보내기가 한 세마포어를 나눠 쓴다(HSA-AD-006). |
CsvExporter.java이력90.0% | 클래스 | 관리자 로그 화면 공통 CSV 내보내기 (HSA-AD-006). |
workflow/12GitHub
업무 도메인 ↔ 워크플로우 엔진 사이의 포트와 진행 뷰.
WorkflowLaunchCommand.java이력0.0% | DTO | WorkflowLauncherPort 로 워크플로우 실행을 시작할 때 넘기는 값이다. |
WorkflowProgressDetail.java이력0.0% | DTO | 화면 스테퍼가 한 번에 필요로 하는 것 전부 — 현재 단계 + 단계 이력 + 게이트 차단 사유. |
WorkflowProgressView.java이력0.0% | DTO | 업무 화면이 "지금 어느 단계인가"를 표시하기 위해 읽는 워크플로우 실행 스냅샷. |
WorkflowStepProgressView.java이력0.0% | DTO | 단계 하나의 진행 상태 — 화면 스테퍼의 칸 하나에 해당한다. |
AwaitingStepCompletion.java이력0.0% | record | 외부 작업을 기다리던 단계(WorkflowStepWorkPort.StepWorkResult#awaitingExternal())의 결과를 엔진에 돌려줄 때 넘기는 값. |
WorkflowStepFailure.java이력0.0% | record | 엔진이 WorkflowStepCompletionPort 로 알리는 "단계 최종 실패" 사실. |
WorkflowStepSuccess.java이력0.0% | record | 엔진이 WorkflowStepCompletionPort 로 알리는 "단계 성공" 사실. |
StepPreconditionPort.java이력0.0% | 포트 | 워크플로우 단계의 업무 선행 조건을 판정하는 포트. |
WorkflowLauncherPort.java이력 | 포트 | 업무 도메인이 워크플로우 실행을 시작·진행시킬 때 쓰는 포트(인터페이스). |
WorkflowProgressPort.java이력 | 포트 | 업무 도메인이 워크플로우 진행 상황을 읽기만 할 때 쓰는 포트. |
WorkflowStepCompletionPort.java이력0.0% | 포트 | 워크플로우 단계가 성공해 처리 상태가 넘어갈 때 그 사실을 업무 도메인에 되돌려 주는 포트. |
WorkflowStepWorkPort.java이력0.0% | 포트 | 워크플로우 단계가 실제로 하는 업무(분류·추출·분석 …)를 업무 도메인이 제공하는 포트. |
src/test/57GitHub
테스트 파일 — 펼쳐서 보기
src/test/57GitHubmodules/ · 도메인
modules/investigation-core/GitHub
사고조사 · 비즈니스 로직
사고조사 · 비즈니스 로직 — 이미지시스템 수신 → 분류 → 추출 → 분석 조건 → 요약 → 초안 → 메일까지의 사고조사 파이프라인과 통계 적재·조회. 백엔드 코드의 절반가량이 여기 있다.
access/3GitHub
ActionOverrideRoles.java이력 | 인터페이스 | 담당 조사자가 아닌 사용자의 조치를 레벨로 열어 줄지 — AssigneeActionRule 이 받는 입력 하나. |
AssigneeActionRule.java이력100.0% | 클래스 | 사고조사 쓰기(조치·실행) 권한의 담당 조사자 판정 한 곳 (2026-10-02 야간 Q2). |
InvestigationAccessGuard.java이력89.5% | 클래스 | 사고조사 조회 권한 판정 한 곳 (2026-09-18 야간 NB04) — 목록의 범위 필터와 상세·하위 GET 의 진입 검사가 모두 여기를 거친다. |
chat/1GitHub
ReportTabJson.java이력93.8%5일 전 · #1970 | 클래스 | 사고조사 챗봇 instructions 에 싣는 탭 JSON (결정 20261021 2항 「보고서 전문」) — 순수 계산만 둔다. |
config/40GitHub
@ConfigurationProperties 설정 바인딩과 빈 구성 (application.yml hwss.* 블록).
AgentStudioTestRunConfig.java이력100.0%3일 전 · #2058 | 설정 | 에이전트 스튜디오 실행 테스트 설정 바인딩. |
AgentStudioTestRunProperties.java이력94.4%3일 전 · #2058 | 설정 | 에이전트 스튜디오 실행 테스트 설정(docs/decisions/20261106-studio-test-classify-run.md 2·7·10항). |
AiPipelineConfig.java이력0.0% | 설정 | 문서 AI 플랫폼 작업 폴러 구성. |
AiPipelineProperties.java이력100.0% | 설정 | 문서 AI 플랫폼 작업 폴러 설정 (hwss.ai-pipeline.*). |
AnalysisConfig.java이력0.0% | 설정 | 분석 요청 도메인의 설정 바인딩. |
AnalysisProperties.java이력100.0% | 설정 | 분석 요청(분석 조건) 설정. |
ClassificationConfig.java이력0.0%어제 · #2151 | 설정 | 문서분류 결과 도메인의 설정 바인딩. |
ClassificationPauseProperties.java이력91.7%어제 · #2151 | 설정 | 분류 뒤 멈춤 — 미분류·저신뢰 낱장이 하나도 없어도 분류가 끝난 건을 `미분류검출`(분류 검토 화면)에 세워 두는 시연용 임시 설정. |
ClassificationProperties.java이력95.8%4일 전 · #2046 | 설정 | 문서분류 결과 판정·조치 설정. |
ExtractionConfig.java이력0.0% | 설정 | 정보추출 결과 도메인의 설정 바인딩. |
ExtractionProperties.java이력97.0%4일 전 · #2046 | 설정 | 정보추출 결과의 저장 정책·판정 설정. |
ImageIntegrationConfig.java이력0.0% | 설정 | 이미지 시스템 수신·송신 설정 바인딩. |
ImageIntegrationProperties.java이력100.0% | 설정 | 이미지 시스템이 HWSS로 전송한 파일의 수신·검증 설정(hwss.image-integration.*). |
ImageSystemProperties.java이력100.0% | 설정 | HWSS가 이미지 시스템 API-08·09·10을 호출할 때 사용하는 연결 설정 (hwss.image-system.*). |
ImageTransferStorageProperties.java이력100.0% | 설정 | 이미지 시스템 수신 ZIP과 압축 해제 결과의 공유 저장소 설정. |
ImageTransferTaskQueueProperties.java이력33.3% | 설정 | 보고서번호별 이미지 전송 백그라운드 작업 큐의 폴링·임대·재시도 설정. |
InvestigationListConfig.java이력0.0% | 설정 | 사고조사 목록 조회(P1-1)의 설정 바인딩. |
InvestigationListProperties.java이력100.0% | 설정 | 사고조사 목록 조회(P1-1)의 설정 (hwss.investigation.list.*). |
PdfSheetProperties.java이력100.0% | 설정 | 접수한 PDF 를 쪽별 낱장 이미지로 푸는 조건(hwss.image-integration.pdf-sheet.*, 결정 20261002-pdf-page-split-at-reception). |
ReportDraftLlmProperties.java이력85.7% | 설정 | 보고서 초안 LLM 직접 호출의 업무 쪽 설정 (hwss.report-draft-llm.*) — docs/decisions/20261020-report-generation-llm-input-job.md 「결정」 5·6항. |
ReportMailDispatchLogConfig.java이력0.0% | 설정 | 관리자 메일 발송 로그 설정 바인딩. |
ReportMailDispatchLogProperties.java이력66.7% | 설정 | 관리자 메일 발송 로그 조회 설정 (야간 플랜 20261005 NM01). |
ReportPurgeConfig.java이력0.0% | 설정 | 보고서 파기 배치 설정 바인딩. |
ReportPurgeProperties.java이력100.0% | 설정 | 보고서 파기 배치 설정 (hwss.report-purge.*) — docs/decisions/20261027-report-purge-configurable-basis.md. |
ReportReflectionProperties.java이력100.0% | 설정 | 사고조사 챗봇 「AI 보고서 반영」 설정 (hwss.report-reflection.*) — 결정 20261021 5~7항, 통합 설계 v0.3 프롬프트 템플릿 5번. |
ReportReviewConfig.java이력0.0% | 설정 | 요약 확정·보고서 검수·초안 쓰기 설정 바인딩. |
ReportReviewProperties.java이력100.0% | 설정 | 요약 확정·보고서 검수·초안 쓰기의 담당자 판정 설정 (2026-09-18 NB02). |
ScanPdfUploadProperties.java이력100.0%7일 전 · #1922 | 설정 | 이미지 접수 직후 Studio 에 선업로드할 사건 묶음 PDF 설정(결정 20261021-case-documents-job-100-files). |
StatisticsBackfillProperties.java이력100.0% | 설정 | 통계 사실 재적재 명령(ST04 — S-007 §3-4 「재적재 명령」)의 설정 (hwss.statistics.backfill.*). |
StatisticsErrorIncidentProperties.java이력100.0% | 설정 | 오류/장애 현황 조회(S-007 §3-4 「오류/장애 현황 조회 API」)의 설정 (hwss.statistics.error-incidents.*). |
StatisticsExtractionQualityProperties.java이력100.0% | 설정 | 추출 완료율 조회 API(NE02 — S-007 §3-4 「추출 완료율 조회 API」)의 설정 (hwss.statistics.extraction-quality.*). |
StatisticsLifecycleProperties.java이력100.0% | 설정 | 생애주기 사실 적재(DP04, 2026-09-11 야간)의 처리시간 판정 설정 (hwss.statistics.lifecycle.*). |
StatisticsLoadConfig.java이력0.0% | 설정 | 통계 사실 적재(ST02)·일별 롤업(ST03-A)·조회 API(ST03-B)·재적재 명령(ST04)·미매핑 큐 API(ST05-A)·생애주기 적재(DP04)의 설정 바인딩. |
StatisticsLoadProperties.java이력100.0% | 설정 | 통계 사실 적재(ST02)의 원천 항목 키·판정 규칙 설정 (hwss.statistics.load.*). |
StatisticsProcessingTimeProperties.java이력100.0% | 설정 | 처리시간 통계 조회(시스템 통계 #16·#17·#23, 2026-10-19 — S-007 §3-4 「처리시간 통계 조회 API」)의 구간 기준 (hwss.statistics.processing-time.*). |
StatisticsQueryProperties.java이력100.0% | 설정 | 업무 통계 조회 API(ST03-B — S-007 §3-4 「조회 API」)의 설정 (hwss.statistics.query.*). |
StatisticsRollupProperties.java이력100.0% | 설정 | 일별 롤업(ST03-A)의 설정 (hwss.statistics.rollup.*). |
StatisticsServiceStatusProperties.java이력97.6% | 설정 | 서비스 상태 조회(S-007 §3-4 「서비스 상태 조회 API」)의 설정 (hwss.statistics.service-status.*). |
StatisticsUnmappedProperties.java이력100.0% | 설정 | 미매핑 큐·차원 마스터 관리자 API(ST05-A — S-007 §3-4 「미매핑 큐 API」)의 설정 (hwss.statistics.unmapped.*). |
InvestigationPipelineVersion.java이력100.0% | 클래스 | 이 환경이 새 실행에 쓰는 사고조사 파이프라인 버전 — hwss.workflow.definition-versions[INVESTIGATION_MAIN] (AI_PLATFORM_STUDIO_PIPELINE_VERSION, docs/decisions/20261002-pipeline-version-c… |
entity/80GitHub
JPA 엔티티 — 테이블 한 행을 매핑한다.
event/14GitHub
트랜잭션 커밋 후 발행되는 도메인 이벤트.
AnalysisRequestedEvent.java이력100.0% | 이벤트 | 분석 조건을 저장하고 분석을 요청했다(트랜잭션 커밋 뒤). |
ClassificationQueueDueEvent.java이력100.0% | 이벤트 | 분류 대기열을 다시 보라는 신호 — 조사자의 AI 작업 자리가 났거나(분류·추출·분석 단계 종료) 한도가 바뀌었다 (결정 20261022-image-confirm-classification-queue). |
ClassificationStartedEvent.java이력100.0%5일 전 · #1971 | 이벤트 | 보고서 한 건의 분류가 시작됐다(CONFIRM_REQUESTED → `분류중`, S-004 §8-2) — 확정 트랜잭션이 커밋된 뒤 후속 단계가 받는 도메인 이벤트 (2026-09-11 야간 DP04). |
ExtractionSubmittedEvent.java이력100.0% | 이벤트 | 추출 작업을 문서 AI 플랫폼에 제출했다 — 분류 검수 보정이 플랫폼 분류 작업에 반영된 뒤다. |
FinalTransferCompletedEvent.java이력100.0% | 이벤트 | 보고서 한 건의 최종 전송이 끝났다(FINAL_TRANSFER_COMPLETED, S-004 §7) — 전송 트랜잭션이 커밋된 뒤 후속 단계가 받는 도메인 이벤트 (2026-09-03 야간 ST02). |
ImageSystemClassificationFinalizedEvent.java이력100.0% | 이벤트 | 분류 결과 한 벌이 확정돼 API-09 전체 스냅샷을 보낼 수 있음을 알린다. |
ImageSystemPageEditsSavedEvent.java이력100.0% | 이벤트 | 문서함 이동·삭제 스냅샷이 저장돼 API-10을 보낼 수 있음을 알린다. |
ImageTransferAcceptedEvent.java이력100.0% | 이벤트 | API-02 물리 전송 검증과 현재 페이지 반영이 모두 끝난 뒤 발생한다. |
ImageTransferTaskQueuedEvent.java이력100.0% | 이벤트 | 영속 작업이 커밋된 직후 폴러를 깨우는 내부 신호. |
InvestigationReportCreatedEvent.java이력100.0% | 이벤트 | 조사건이 처음 생겼다 — 이미지 시스템 API-01 이 새 접수번호로 보고서 행을 만들었다. |
ReanalysisRestartedEvent.java이력100.0% | 이벤트 | AI 를 다시 돌리는 재실행이 시작됐다 — 사용자 `다시 분석`(추출부터·분류부터)과 예약 재분류. |
ReclassificationReservationDueEvent.java이력100.0% | 이벤트 | 재분류 예약을 지금 소비할 수 있을지 다시 볼 때가 됐다는 신호 — 분류·추출 단계가 끝났거나(성공·최종 실패), 예약이 기다리던 물리 전송의 검증이 끝났다(결정 20260910-confirm-reservation-and-reanalysis-scope 1항, S-012 §3-1). |
ReportChangedEvent.java이력100.0% | 이벤트 | 보고서 한 건의 문서함·상태가 바뀌었다 — 화면 실시간 갱신 신호의 원천 (결정 20261014-realtime-updates-sse §2). |
SummaryCompletedEvent.java이력100.0% | 이벤트 | 보고서 한 건의 요약 생성이 끝났다(ANALYSIS_FINISHED → `분석완료`, S-004 §7) — 엔진 단계 트랜잭션이 커밋된 뒤 후속 단계가 받는 도메인 이벤트 (2026-09-11 야간 DP04). |
exception/120GitHub
BusinessException 하위 도메인 예외 — 에러 코드와 HTTP 상태를 정한다.
integration/18GitHub
base 포트 구현체 — 다른 도메인·워크플로우 엔진이 이 모듈을 부르는 입구.
ClassificationQueueListener.java이력0.0% | 리스너 | 단계 종료·한도 변경 커밋 뒤에 분류 대기열을 소비한다(결정 20261022-image-confirm-classification-queue). |
InvestigationSettingsSnapshotListener.java이력0.0% | 리스너 | 조사건이 생긴 트랜잭션 안에서 설정 판을 고정한다 — 건이 커밋되면 스냅샷도 함께 커밋되고, 접수가 실패해 되돌려지면 함께 사라진다. |
ReclassificationReservationListener.java이력0.0% | 리스너 | 단계 종료·전송 검증 종료 커밋 뒤에 재분류 예약 소비를 시도한다(결정 20260910 1항, S-012 §3-1). |
AgentStudioInstructSeeder.java이력96.7%6일 전 · #1958 | 클래스 | 에이전트 스튜디오 INSTRUCT 첫 버전을 기동 때 넣는다 (docs/decisions/20261021-studio-instruct-db-storage.md 8항). |
AgentStudioTestRunSweeper.java이력0.0%6일 전 · #1915 | 클래스 | 실행 테스트 보관 기간 정리 — 마지막 활동 뒤 보관 기간(기본 1일)이 지난 실행을 Studio 파일·작업과 함께 지운다 (docs/decisions/20261106-studio-test-classify-run.md 7항). |
AiPipelineJobPoller.java이력68.4% | 클래스 | 문서 AI 플랫폼에 맡긴 작업을 주기적으로 진행시키는 폴러 — 런타임 시작점이다(docs/rules/backend.md). |
ClassificationQueueSweeper.java이력0.0% | 클래스 | 분류 대기열 점검 — 자리가 난 신호(ClassificationQueueListener)가 빠졌을 때(서버 재기동·소비 중 예외, 단계 종료가 아닌 경로로 자리가 난 경우) 대기열이 영구 대기로 남지 않게 주기적으로 다시 본다. |
DocumentTypeSchemaSeeder.java이력88.9% | 클래스 | 에이전트 스튜디오 문서 분류·추출 스키마 첫 버전을 기동 때 넣는다. |
ImageTransferExtractionResumeSweeper.java이력92.3% | 클래스 | 압축 해제 재개 점검 — API-02 접수 뒤 메모리 대기열에만 있던 압축 해제가 재기동(롤링 배포)으로 사라져 VALIDATING 으로 남은 전송을 다시 맡긴다(결정 20261023-production-k0s-cluster A). |
ReclassificationReservationSweeper.java이력0.0% | 클래스 | 재분류 예약 점검 — 단계 종료 직후 소비(ReclassificationReservationListener)가 빠졌을 때(서버 재기동·소비 중 예외) 예약이 영구 대기로 남지 않게 주기적으로 다시 본다. |
AnalysisStepWorkPortImpl.java이력100.0% | 포트 구현 | ANALYZE 단계의 업무 — 문서 AI 플랫폼 실연동, 없으면 스텁 요약 결과 산출. |
ChatPromptLookupPortImpl.java이력71.4% | 포트 구현 | 지시문 판 조회 포트 — 관리자 API 와 같은 ChatPromptService#current 를 읽는다(판이 없으면 기본 문구, 판 0). |
ClassificationStepWorkPortImpl.java이력100.0% | 포트 구현 | CLASSIFY 단계의 업무 — 문서 AI 플랫폼 실연동, 없으면 스텁 분류 결과 산출. |
ExtractionPreconditionPortImpl.java이력100.0%어제 · #2151 | 포트 구현 | 추출(EXTRACT) 진입 게이트 — 미분류·저신뢰 낱장이 남아 있으면 막는다 (W05 가 세운 골격의 구현체, S-004 §7 `미분류검출`, 8/14 확정 "전건 확정 전에는 추출 시작 비활성"). |
ExtractionStepWorkPortImpl.java이력98.1% | 포트 구현 | EXTRACT 단계의 업무 — 문서 AI 플랫폼 실연동, 없으면 스텁 추출 결과 산출. |
InvestigationChatContextPortImpl.java이력100.0%2일 전 · #2113 | 포트 구현 | 사고조사 챗봇 맥락 포트의 구현 — 이 모듈이 가진 보고서·요약·분류·추출·분석 요청 값을 모은다 (결정 20261021 사고조사 챗봇 2·4·5·8항, 20260918 §4, 20260909 6항, 20261010). |
ReportTabsStepWorkPortImpl.java이력0.0% | 포트 구현 | GENERATE_REPORT_TABS 단계의 업무 — 파이프라인 v2 의 「AI 보고서 생성」, v1 ANALYZE 자리(V202610220938, docs/decisions/20261021-investigation-pipeline-v2-composition.md). |
WorkflowStepCompletionPortImpl.java이력100.0%어제 · #2151 | 포트 구현 | 엔진 단계 성공·최종 실패를 보고서 처리 상태로 옮기는 구현체 (S-004 §7 자동 전이, 2026-09-03 야간 N01). |
purge/12GitHub
ReportPurgeBasis.java이력100.0% | enum | 보고서 파기의 기준일 — 이 날짜에 보관 일수를 더한 날이 지나면 파기한다 (hwss.report-purge.basis). |
ReportPurgeScope.java이력100.0% | enum | 파기 범위 (hwss.report-purge.scope) — 결정 20260909-purge-statistics-boundary 「미확정 1」 이 닫히기 전이라 둘 다 연다. |
ReportPurgeCandidate.java이력100.0% | record | 파기 후보 한 건. |
ReportPurgeOutcome.java이력100.0% | record | 보고서 한 건의 파기 결과. |
ReportPurgeRunResult.java이력100.0% | record | 파기 배치 한 번의 결과. |
ReportPurgeService.java이력94.5% | 서비스 | 보고서 파기 배치 — 설정(ReportPurgeProperties)대로 후보를 골라 한 건씩 처리한다 (docs/decisions/20261027-report-purge-configurable-basis.md). |
ReportDisposalRecorder.java이력100.0% | 인터페이스 | 파기 결과를 남기는 자리 — 결정 20260909-purge-statistics-boundary §5 의 파기 로그(report_disposal_logs). |
JpaReportDisposalRecorder.java이력100.0% | 클래스 | 파기 배치가 넘긴 결과를 보고서 원본과 FK 없이 보존한다. |
ReportPurgeCandidateFinder.java이력100.0% | 클래스 | 파기 후보를 고른다 — 보고서번호 순으로 한 쪽씩 읽는다(키셋). |
ReportPurgeScheduler.java이력100.0% | 클래스 | 설정된 시각에 보고서 파기 배치를 실행한다. |
ReportPurgeTables.java이력100.0%4일 전 · #2007 | 클래스 | 보고서 계보의 삭제 순서와 남기는 표 — 결정 20260909-purge-statistics-boundary §1·§2. |
ReportPurgeWorker.java이력94.4% | 클래스 | 파기 후보 한 건을 처리한다 — 결정 20260909-purge-statistics-boundary §2·§2-1·§3, 20261023-investigation-chat-session-structure 8항. |
realtime/4GitHub
ReportEventStreamListener.java이력100.0% | 리스너 | 변경 이벤트를 커밋 뒤에 SSE 연결로 넘긴다 — 화면이 신호를 받고 다시 조회했을 때 바뀐 값이 보여야 하기 때문이다 (결정 20261014-realtime-updates-sse §2). |
ReportEventStreamService.java이력0.0% | 서비스 | 실시간 갱신 구독 — 상세 조회와 같은 권한 검사를 지난 화면만 연결을 연다 (결정 20261014-realtime-updates-sse §3). |
ReportEventFanout.java이력 | 인터페이스 | 변경 신호를 모든 인스턴스의 SSE 연결로 나눠 주는 길 (결정 20261014-realtime-updates-sse 「보완 2026-10-23」). |
ReportEventStreamRegistry.java이력100.0%5일 전 · #1976 | 클래스 | 접수번호별 SSE 연결 목록 (결정 20261014-realtime-updates-sse §3·§4). |
repository/72GitHub
Spring Data JPA 저장소 인터페이스.
AgentStudioConfigExtrasRepository.java이력 | 저장소 | AgentStudioConfigExtrasEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioDeploymentRepository.java이력2일 전 · #2112 | 저장소 | AgentStudioDeploymentEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioInstructTabBodyRepository.java이력 | 저장소 | AgentStudioInstructTabBodyEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioInstructTabRepository.java이력 | 저장소 | AgentStudioInstructTabEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioInstructVersionRepository.java이력 | 저장소 | AgentStudioInstructVersionEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioSummaryConfigVersionRepository.java이력어제 · #2132 | 저장소 | AgentStudioSummaryConfigVersionEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioSummaryPairRepository.java이력 | 저장소 | AgentStudioSummaryPairEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioTestRunCorrectionRepository.java이력2일 전 · #2123 | 저장소 | AgentStudioTestRunCorrectionEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioTestRunFileRepository.java이력3일 전 · #2091 | 저장소 | AgentStudioTestRunFileEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioTestRunReportItemRepository.java이력2일 전 · #2123 | 저장소 | AgentStudioTestRunReportItemEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioTestRunRepository.java이력6일 전 · #1915 | 저장소 | AgentStudioTestRunEntity 저장소 (Spring Data JPA 인터페이스). |
AgentStudioTestRunStepRepository.java이력2일 전 · #2123 | 저장소 | AgentStudioTestRunStepEntity 저장소 (Spring Data JPA 인터페이스). |
AiPipelineDocumentPageRepository.java이력 | 저장소 | AiPipelineDocumentPageEntity 저장소 (Spring Data JPA 인터페이스). |
AiPipelineDocumentRepository.java이력 | 저장소 | AiPipelineDocumentEntity 저장소 (Spring Data JPA 인터페이스). |
AiPipelineFileRepository.java이력 | 저장소 | AiPipelineFileEntity 저장소 (Spring Data JPA 인터페이스). |
AiPipelineJobInputRepository.java이력 | 저장소 | AiPipelineJobInputEntity 저장소 (Spring Data JPA 인터페이스). |
AiPipelineJobRepository.java이력2일 전 · #2128 | 저장소 | AiPipelineJobEntity 저장소 (Spring Data JPA 인터페이스). |
AiPipelineResultSyncRepository.java이력2일 전 · #2113 | 저장소 | AiPipelineResultSyncEntity 저장소 (Spring Data JPA 인터페이스). |
AnalysisConcurrencySettingRepository.java이력 | 저장소 | 1인 동시 AI 분석 요청 한도 설정(한 행). |
AnalysisRequestClaimHospitalRepository.java이력6일 전 · #1941 | 저장소 | 분석 요청의 청구병원·대표 상병 — 결정 20261106-analysis-request-claim-hospitals. |
AnalysisRequestCollectionRepository.java이력 | 저장소 | AnalysisRequestCollectionEntity 저장소 (Spring Data JPA 인터페이스). |
AnalysisRequestContractItemRepository.java이력 | 저장소 | AnalysisRequestContractItemEntity 저장소 (Spring Data JPA 인터페이스). |
AnalysisRequestContractRepository.java이력 | 저장소 | AnalysisRequestContractEntity 저장소 (Spring Data JPA 인터페이스). |
AnalysisRequestFileRepository.java이력 | 저장소 | 분석 요청이 좁혀 볼 문서 — 결정 20261030-reference-defaults-to-analysis-and-chat 1항. |
AnalysisRequestFormRepository.java이력 | 저장소 | AnalysisRequestFormEntity 저장소 (Spring Data JPA 인터페이스). |
AnalysisRequestRepository.java이력 | 저장소 | AnalysisRequestEntity 저장소 (Spring Data JPA 인터페이스). |
ApplicationFormVersionRepository.java이력5일 전 · #1969 | 저장소 | ApplicationFormVersionEntity 저장소 (Spring Data JPA 인터페이스). |
ChatPromptVersionRepository.java이력 | 저장소 | ChatPromptVersionEntity 저장소 (Spring Data JPA 인터페이스). |
ClaimTypeRepository.java이력 | 저장소 | ClaimTypeEntity 저장소 (Spring Data JPA 인터페이스). |
ClassificationCorrectionRepository.java이력 | 저장소 | ClassificationCorrectionEntity 저장소 (Spring Data JPA 인터페이스). |
ClassificationResultPageRepository.java이력 | 저장소 | ClassificationResultPageEntity 저장소 (Spring Data JPA 인터페이스). |
ClassificationResultRepository.java이력 | 저장소 | ClassificationResultEntity 저장소 (Spring Data JPA 인터페이스). |
DocumentTypeSchemaVersionRepository.java이력 | 저장소 | DocumentTypeSchemaVersionEntity 저장소 (Spring Data JPA 인터페이스). |
ExtractionFieldCorrectionRepository.java이력 | 저장소 | ExtractionFieldCorrectionEntity 저장소 (Spring Data JPA 인터페이스). |
ExtractionResultFieldRepository.java이력 | 저장소 | ExtractionResultFieldEntity 저장소 (Spring Data JPA 인터페이스). |
ExtractionResultRepository.java이력 | 저장소 | ExtractionResultEntity 저장소 (Spring Data JPA 인터페이스). |
ExtractionSchemaFieldRepository.java이력 | 저장소 | ExtractionSchemaFieldEntity 저장소 (Spring Data JPA 인터페이스). |
ImageIntegrationIdempotencyRepository.java이력0.0% | 저장소 | 이미지 연동 쓰기 API의 멱등성 키와 요청 본문 해시를 저장한다. |
ImageSystemOutboundRequestRepository.java이력 | 저장소 | ImageSystemOutboundRequestEntity 저장소 (Spring Data JPA 인터페이스). |
ImageTransferBackgroundJobRepository.java이력 | 저장소 | ImageTransferBackgroundJobEntity 저장소 (Spring Data JPA 인터페이스). |
ImageTransferRepository.java이력 | 저장소 | ImageTransferEntity 저장소 (Spring Data JPA 인터페이스). |
InvestigationReportRepository.java이력 | 저장소 | 보고서는 업무 번호(reportNo)로만 조회한다 — 이미지 시스템과 주고받는 모든 API 가 그 값을 키로 쓰기 때문이다. |
InvestigationSettingsSnapshotRepository.java이력 | 저장소 | InvestigationSettingsSnapshotEntity 저장소 (Spring Data JPA 인터페이스). |
ReportBusinessContractRepository.java이력 | 저장소 | ReportBusinessContractEntity 저장소 (Spring Data JPA 인터페이스). |
ReportDisposalLogRepository.java이력 | 저장소 | ReportDisposalLogEntity 저장소 (Spring Data JPA 인터페이스). |
ReportDraftAiTabRepository.java이력 | 저장소 | ReportDraftAiTabEntity 저장소 (Spring Data JPA 인터페이스). |
ReportDraftLlmTabRepository.java이력5일 전 · #1969 | 저장소 | ReportDraftLlmTabEntity 저장소 (Spring Data JPA 인터페이스). |
ReportDraftRepository.java이력 | 저장소 | ReportDraftEntity 저장소 (Spring Data JPA 인터페이스). |
ReportDraftSectionRepository.java이력 | 저장소 | ReportDraftSectionEntity 저장소 (Spring Data JPA 인터페이스). |
ReportHospitalSelectionRepository.java이력4일 전 · #2007 | 저장소 | ReportHospitalSelectionEntity 저장소 (Spring Data JPA 인터페이스). |
ReportMailDispatchRepository.java이력 | 저장소 | ReportMailDispatchEntity 저장소 (Spring Data JPA 인터페이스). |
ReportPageEditRepository.java이력 | 저장소 | 스캔 문서함 낱장 편집 저장분 (야간 20261006 NP01). |
ReportPageRepository.java이력 | 저장소 | ReportPageEntity 저장소 (Spring Data JPA 인터페이스). |
ReportReflectionRepository.java이력 | 저장소 | ReportReflectionEntity 저장소 (Spring Data JPA 인터페이스). |
ReportTemplateRepository.java이력 | 저장소 | ReportTemplateEntity 저장소 (Spring Data JPA 인터페이스). |
ReportTemplateVariableRepository.java이력 | 저장소 | ReportTemplateVariableEntity 저장소 (Spring Data JPA 인터페이스). |
SmartReviewTransferRepository.java이력 | 저장소 | 스마트심사 전송 기록. |
StudioDocumentCategoryRepository.java이력 | 저장소 | StudioDocumentCategoryEntity 저장소 (Spring Data JPA 인터페이스). |
StudioDocumentTypeRepository.java이력 | 저장소 | StudioDocumentTypeEntity 저장소 (Spring Data JPA 인터페이스). |
SummaryCardRepository.java이력 | 저장소 | SummaryCardEntity 저장소 (Spring Data JPA 인터페이스). |
SummaryGroupBatchRepository.java이력 | 저장소 | SummaryGroupBatchEntity 저장소 (Spring Data JPA 인터페이스). |
SummaryGroupDocumentTypeRepository.java이력 | 저장소 | SummaryGroupDocumentTypeEntity 저장소 (Spring Data JPA 인터페이스). |
SummaryGroupRepository.java이력5일 전 · #1969 | 저장소 | SummaryGroupEntity 저장소 (Spring Data JPA 인터페이스). |
SummaryGroupRunRepository.java이력2일 전 · #2128 | 저장소 | SummaryGroupRunEntity 저장소 (Spring Data JPA 인터페이스). |
SummaryGroupVersionRepository.java이력 | 저장소 | SummaryGroupVersionEntity 저장소 (Spring Data JPA 인터페이스). |
SummaryItemRepository.java이력 | 저장소 | SummaryItemEntity 저장소 (Spring Data JPA 인터페이스). |
SummaryItemSourceRepository.java이력 | 저장소 | SummaryItemSourceEntity 저장소 (Spring Data JPA 인터페이스). |
SummaryResultRepository.java이력 | 저장소 | SummaryResultEntity 저장소 (Spring Data JPA 인터페이스). |
SummarySectionRepository.java이력 | 저장소 | SummarySectionEntity 저장소 (Spring Data JPA 인터페이스). |
SummarySkeletonRepository.java이력 | 저장소 | SummarySkeletonEntity 저장소 (Spring Data JPA 인터페이스). |
TransferPageRepository.java이력 | 저장소 | TransferPageEntity 저장소 (Spring Data JPA 인터페이스). |
InvestigationReports.java이력100.0% | 클래스 | 접수번호로 보고서를 꺼내되 없으면 InvestigationReportNotFoundException(404) — 같은 세 줄 (findByReportNo(…).orElseThrow(…))이 서비스·통계·연동 20여 곳에 있었다(2026-10-20 Q2). |
service/126GitHub
비즈니스 로직과 트랜잭션 경계.
InputPages.java이력96.6% | record | 문서 AI 작업 입력 파일들을 요청 순서대로 이어 붙인 쪽과 낱장의 대응. |
InvestigationReceivedDateRange.java이력100.0% | record | 사고조사 목록의 접수일자 범위 조건(야간 플랜 20260904 N08) — 달력 날짜 두 개를 절대 시각의 반열린 구간으로 환산한다. |
InvestigationSettings.java이력100.0%5일 전 · #1994 | record | 조사건 하나가 끝까지 쓰는 사고조사 Workflow 설정의 판 (docs/decisions/20261028-investigation-settings-snapshot-at-intake.md). |
ImageSystemOutboundEventListener.java이력100.0% | 리스너 | 내부 DB 커밋 후에만 이미지시스템 운영 API를 호출한다. |
ScanPdfPreparationListener.java이력100.0% | 리스너 | 이미지 접수 작업 대기열 안에서 정상 스냅샷을 Studio 입력 PDF로 준비한다. |
AgentStudioConfigVersionService.java이력93.5%오늘 · #2161 | 서비스 | 에이전트 스튜디오 1단계 분류·2단계 추출 스키마의 버전 선택 목록 — 그 단계 에이전트의 Studio 지시서(Config) 목록이다 (docs/decisions/20261029-studio-config-version-list-from-studio.md). |
AgentStudioDeploymentService.java이력93.9%오늘 · #2161 | 서비스 | 에이전트 스튜디오 서버 배포 — 실행 테스트를 통과한 한 벌을 기록한다(docs/decisions/20261111-studio-server-deployment-management.md). |
AgentStudioInstructService.java이력100.0% | 서비스 | 에이전트 스튜디오 3단계 INSTRUCT(AI 보고서) 설정 (관리자 화면 /admin/agent-studio/schema 3단계, docs/decisions/20261021-studio-instruct-db-storage.md). |
AgentStudioShapeAlignmentService.java이력98.8%어제 · #2132 | 서비스 | 분류 지시서가 바뀌면 추출·요약 지시서의 Import 형태를 새로 고른 새 버전을 만든다 (docs/decisions/20261111-studio-import-shape-regeneration.md 1~4항). |
AgentStudioSummaryConfigService.java이력91.5%어제 · #2132 | 서비스 | 요약 그룹 지시서 버전 — 관리자 에이전트 스튜디오의 실행 테스트·배포가 쓰는 요약 지시서 한 벌 (docs/decisions/20261111-studio-import-shape-regeneration.md 5항). |
AgentStudioTestExtractService.java이력91.6%2일 전 · #2123 | 서비스 | 에이전트 스튜디오 실행 테스트 2단계 — 추출을 실제 문서 AI 플랫폼으로 돌린다(docs/decisions/20261107-studio-test-extract-run.md). |
AgentStudioTestReportService.java이력91.4%오늘 · #2184 | 서비스 | 에이전트 스튜디오 실행 테스트 3단계 — AI 보고서를 실제로 만든다(docs/decisions/20261109-studio-test-report-run.md). |
AgentStudioTestRunService.java이력93.0%오늘 · #2149 | 서비스 | 에이전트 스튜디오 실행 테스트 — 1단계 분류를 실제 문서 AI 플랫폼으로 돌린다(docs/decisions/20261106-studio-test-classify-run.md). |
AiAnalysisJobService.java이력97.0%2일 전 · #2128 | 서비스 | 보고서 요약을 문서 AI 플랫폼에 맡기고 끝까지 이어 가는 서비스 — ANALYZE 단계의 실연동 경로 (2026-09-29, docs/decisions/20260922-ai-classification-async-integration.md 3~6항의 세 번째 단계). |
AiClassificationJobService.java이력86.5%2일 전 · #2128 | 서비스 | 문서 분류를 문서 AI 플랫폼에 맡기고 끝까지 이어 가는 서비스 — CLASSIFY 단계의 실연동 경로 (docs/decisions/20260922-ai-classification-async-integration.md). |
AiExtractionJobService.java이력92.5%2일 전 · #2128 | 서비스 | 정보추출을 문서 AI 플랫폼에 맡기고 끝까지 이어 가는 서비스 — EXTRACT 단계의 실연동 경로 (2026-09-25 야간 NX02, docs/decisions/20260922-ai-classification-async-integration.md 3~6항). |
AiPipelineResultSyncService.java이력90.3%2일 전 · #2113 | 서비스 | 검수 보정을 다음 단계 이어 실행에 반영하는 준비 단계 — 결과 왕복 원장(ai_pipeline_result_syncs)을 한 걸음씩 진행시켜 갱신 Job 을 얻는다 (docs/decisions/20260929-pipeline-correction-roundtrip.md). |
AiReportTabsJobService.java이력91.1% | 서비스 | 파이프라인 v2 의 「AI 보고서 생성」 단계(GENERATE_REPORT_TABS) — 보고서 LLM 탭1→2→3 을 돌려 그 결과를 `AI 보고서 확인` 화면이 읽는 요약 결과로 넣는다(docs/decisions/20261021-investigation-pipeline-v2-compositi… |
AiSummaryGroupJobService.java이력88.5%2일 전 · #2128 | 서비스 | 요약을 요약 그룹마다 1회 플랫폼에 맡기고 끝까지 이어 가는 서비스 — 파이프라인 v2 의 곁가지 (docs/decisions/20261021-investigation-pipeline-v2-composition.md, 20261019-studio-summary-tab-doc-groups.md 「… |
AnalysisConcurrencyLimitService.java이력97.8% | 서비스 | 1인 동시 AI 분석 요청 제한 (WBS 29.12.3) — 한도 설정과 착수 게이트. |
AnalysisRequestService.java이력97.4%4일 전 · #2007 | 서비스 | 분석 요청(분석 조건)의 저장과 조회 (W09, 2026-08-19 확정 구조). |
ApplicationFormSettingsService.java이력96.2%5일 전 · #1970 | 서비스 | 청약서 폼 설정 마스터 (관리자 화면 /admin/application-forms `청약서 폼 설정`). |
ChatPromptService.java이력100.0% | 서비스 | 지시문 판 — 지금 문구 보기와 바꾸기(docs/decisions/20261023-chat-prompt-db-versioning.md). |
ClaimHospitalCandidateService.java이력97.8%2일 전 · #2113 | 서비스 | 분석 조건 2번 「청구병원 및 대표 상병」의 병원 후보(결정 20261106-analysis-request-claim-hospitals 2·3항). |
ClaimTypeService.java이력100.0% | 서비스 | 청구유형 마스터 (분석 조건 1번, 관리자 화면 /admin/report-types). |
ClassificationQueueService.java이력92.3%5일 전 · #1971 | 서비스 | 조사자별 분류 대기열의 소비 — 담당 조사자의 AI 작업 자리가 나면 대기열 앞에서부터 자리만큼 분류를 시작한다 (결정 20261022-image-confirm-classification-queue, S-012 §5). |
ClassificationResultService.java이력92.5%어제 · #2120 | 서비스 | 문서분류 결과의 산출(스텁)·조회·조치 (S-007 §3-2, W06·W07). |
DocumentTypeSchemaService.java이력98.4% | 서비스 | 에이전트 스튜디오 문서 분류·정보 추출 체계 — 관리자 화면 /admin/agent-studio/schema 1단계(CLASSIFY)·2단계 `추출 스키마 설정`의 저장본. |
ExtractionResultService.java이력99.5%4일 전 · #2007 | 서비스 | 정보추출 결과의 적재·조회·사용자 수정 (W08, S-012 §2 `추출 완료`). |
FinalTransferCompletionService.java이력100.0% | 서비스 | 최종 전송 완료(FINAL_TRANSFER_COMPLETED)를 보고서에 적용하고 커밋 후 이벤트를 내는 유일한 지점 (2026-09-03 야간 ST02). |
HospitalMatchService.java이력100.0%어제 · #2144 | 서비스 | 분석 요청 전 병원 지정 (결정 20260910 병원 마스터 §3·§4·§6). |
ImageIntegrationIdempotencyService.java이력66.7% | 서비스 | 이미지 연동 쓰기 API의 동일 키·동일 본문 재호출만 허용한다. |
ImageMasterSyncService.java이력100.0% | 서비스 | API-06·API-07 요청을 영속 마스터(classification-core)에 넘기고 계약 응답으로 되돌린다. |
ImageSystemOutboundService.java이력95.7%4일 전 · #2048 | 서비스 | DB에 확정된 현재 스냅샷을 이미지시스템 API-09·10 계약으로 변환한다. |
ImageTransferFileCleanupService.java이력82.9% | 서비스 | DB에 처리 결과를 남긴 뒤 더 이상 사용할 필요가 없는 처리 저장소의 임시 파일을 정리한다. |
ImageTransferIncomingSyncService.java이력89.4% | 서비스 | 이행 환경의 로컬 SFTP 수신 ZIP을 API-02 성공 통지 시 공용 S3에 복제한다. |
ImageTransferReceptionService.java이력96.9%5일 전 · #1981 | 서비스 | 이미지 연동 API-01~05 의 전송 접수와 보고서 상태를 DB에 영속화한다 (S-003 · S-007 §3-2). |
ImageTransferTaskQueueService.java이력95.2% | 서비스 | 보고서번호별 이미지 전송 작업의 등록·임대·완료 상태 전이를 한 트랜잭션 경계로 제공한다. |
InvestigationBusinessMetadataService.java이력100.0% | 서비스 | API-01 접수 때 HWSS DB에 저장한 보고서·Smart심사 계약 메타데이터를 조회한다. |
InvestigationDeliveryChannelService.java이력77.3% | 서비스 | 보고서 위탁사의 전송 방식 — 사고조사 화면의 전송 버튼과 메일 발송 검사 (결정 20260902-report-delivery-channel-selection 1·7항). |
InvestigationDisclosureLinkService.java이력100.0% | 서비스 | 워크스페이스 `공시실` 버튼의 링크 조회 (결정 20261017-customer-onboarding-status-api 4항, 2026-10-19 야간 NL01). |
InvestigationReportQueryService.java이력78.4%5일 전 · #1981 | 서비스 | 조사자 목록 화면(P1-1)과 워크스페이스 화면(P1-2)이 쓰는 사고조사 보고서 조회. |
InvestigationSettingsQueryService.java이력100.0% | 서비스 | 조사자 화면이 그리는 설정 — 그 조사건에 고정한 판이다(docs/decisions/20261028-investigation-settings-snapshot-at-intake.md 4항). |
InvestigationSettingsService.java이력93.8%2일 전 · #2130 | 서비스 | 조사건 설정 스냅샷 — 사고조사 Workflow 설정(병원 명칭 매핑 제외)을 건이 인입될 때의 판으로 고정하고, 처리하는 동안 그 판을 돌려준다 (docs/decisions/20261028-investigation-settings-snapshot-at-intake.md). |
InvestigationStartService.java이력100.0%5일 전 · #1981 | 서비스 | 조사자 화면의 사용자 착수 두 지점 — `AI 분류 시작`·`정보 추출 시작` (2026-09-18 야간 NB05, S-012 §1-2). |
ReanalysisService.java이력99.0%2일 전 · #2113 | 서비스 | `다시 분석` — 가능 범위 산출과 세 범위의 실행 (S-012 §4·§4-2·§5, 야간 20261002 NR01·NR02). |
ReclassificationReservationService.java이력100.0% | 서비스 | 분류·추출 진행 중 재확정 예약의 소비 — 진행 중 단계가 끝나면 최신 서류 목록으로 분류부터 다시 시작한다 (결정 20260910-confirm-reservation-and-reanalysis-scope 🟢 1항, S-012 §3-1, 요구사항 HSA-IF-002). |
ReportDeliveryLogQueryService.java이력100.0% | 서비스 | 관리자 「보고서 초안 전송 로그」(/admin/report-send-logs) 전사 조회. |
ReportDisposalLogService.java이력0.0% | 서비스 | 설명 주석 없음 |
ReportDraftAiService.java이력95.4% | 서비스 | 보고서 초안 구역을 Studio 보고서 생성 에이전트로 채운다 (docs/decisions/20261015-studio-saas-v2-agents-adoption.md D4 A안). |
ReportDraftLlmService.java이력89.6%6일 전 · #1958 | 서비스 | 보고서 초안 탭을 LLM 직접 호출로 채운다 (docs/decisions/20261020-report-generation-llm-input-job.md 「결정」 1~7항, 통합 설계 v0.3 「보고서 생성」). |
ReportDraftService.java이력95.9%4일 전 · #2029 | 서비스 | 보고서 초안의 생성·조회·수정 (W12 → S-014 §7, 2026-09-29). |
ReportMailDispatchLogService.java이력91.0% | 서비스 | 관리자 메일 발송 로그 조회 (야간 플랜 20261005 NM01, 화면 /admin/mail-account 우측 섹션). |
ReportMailService.java이력99.1%4일 전 · #2044 | 서비스 | 보고서 메일 보내기 (W13). |
ReportPageEditService.java이력99.3% | 서비스 | 스캔 문서함 낱장 편집(`삭제 예정`·표시 순서·추출 이후 분류값 변경)의 저장 — `편집 저장` ([20260921] 🟢 0항, S-012 §4-0, 기준선 「스캔 문서함」, 야간 20261006 NP01). |
ReportPageImageService.java이력89.1% | 서비스 | 워크스페이스 문서 뷰어(N05)가 페이지 원본 이미지를 여는 경로(2026-09-03 야간 N04). |
ReportReflectionService.java이력95.8%5일 전 · #1970 | 서비스 | 사고조사 챗봇 「AI 보고서 반영」 엔진 (결정 20261021 5~7항, 통합 설계 v0.3 사고조사 4번·템플릿 5번). |
ReportSummaryGroupQueryService.java이력92.6%4일 전 · #2052 | 서비스 | 보고서 `요약` 탭의 요약 그룹 구획 조회 (docs/decisions/20261019-studio-summary-tab-doc-groups.md 6항). |
ReportTemplateService.java이력95.0%5일 전 · #1970 | 서비스 | 보고서 양식(프롬프트 형식) 설정 (W15, 관리자 화면 /admin/report-templates). |
ReportTextFormatService.java이력93.0%4일 전 · #2029 | 서비스 | 보고서 초안 구역 글을 위탁사·탭 양식으로 찍는다 (결정 20261106-report-text-format-by-insurer). |
ScanPdfPreparationService.java이력90.4%2일 전 · #2113 | 서비스 | API-02 정상 접수 스냅샷의 활성 낱장을 문서함 순서대로 사건 단위 여러 쪽 PDF 로 묶어 문서 AI 플랫폼에 미리 올린다. |
SmartReviewTransferService.java이력97.0%4일 전 · #2044 | 서비스 | 보고서 스마트심사 전송 (docs/decisions/20261103-smart-review-report-receiver-api.md). |
SummaryGroupService.java이력93.8%6일 전 · #1954 | 서비스 | 요약 그룹 마스터 (docs/decisions/20261019-studio-summary-tab-doc-groups.md) — 관리자 에이전트 스튜디오 2단계 `요약 설정`이 읽고 쓰고, 요약 그룹 곁가지(AiSummaryGroupJobService)가 정의를 읽는다. |
SummaryResultService.java이력87.1%2일 전 · #2130 | 서비스 | 요약 결과의 적재·조회·수정 (W10 → S-014 섹션 모델, 2026-09-29). |
SummarySkeletonService.java이력84.1% | 서비스 | 요약 섹션 골격 저장소 (S-014 §3, 관리자 에이전트 스튜디오 `3 Instruct` 설정의 백엔드 자리). |
ReportTaskLock.java이력100.0% | 인터페이스 | 보고서 단위 작업 잠금 — ReportTaskSequencer 가 작업 하나를 돌리는 동안 다른 인스턴스가 같은 보고서의 작업을 돌리지 못하게 한다 (결정 20261023-production-k0s-cluster 「우리 쪽 검토 항목」 A — 운영 AP 2대 이중화). |
AcceptedSnapshotComparison.java이력100.0% | 클래스 | 검증을 마친 전송 스냅샷이 현재 정상 페이지와 같은지 비교한다. |
AgentConfigPairGuard.java이력100.0%5일 전 · #1994 | 클래스 | 건에 고정한 지시서 짝의 사전 감지 — 분류·추출·요약 그룹을 플랫폼에 보내기 직전에 부른다 (docs/decisions/20261108-studio-config-pair-repin.md 1항). |
AgentStudioDocumentTypeSync.java이력100.0%오늘 · #2161 | 클래스 | 스튜디오 배포와 운영 문서종 마스터·분류체계 매핑 사이 — 문서종 키로 바뀐 문서종을 견주고, 대기·적용 때 마스터 포트를 부른다 (docs/decisions/20261112-studio-deploy-master-mapping-sync.md). |
AgentStudioInstructValidator.java이력100.0%5일 전 · #1970 | 클래스 | INSTRUCT 설정의 규칙 — 화면(프론트 instruct-prompt.ts)이 입력하는 대로 보이는 검사를 서버가 저장 전에 한 번 더 본다. |
AgentStudioTestClassifyJudgement.java이력100.0%6일 전 · #1915 | 클래스 | 실행 테스트 분류 결과 낱장 판정 (docs/decisions/20261106-studio-test-classify-run.md 4항). |
AgentStudioTestClassifyPages.java이력100.0%6일 전 · #1915 | 클래스 | 실행 테스트 분류 결과 → 낱장별 결과(docs/decisions/20261106-studio-test-classify-run.md 2·4항). |
AgentStudioTestCorrectionRunner.java이력89.3%3일 전 · #2032 | 클래스 | 실행 테스트 결과 왕복 — 관리자가 고친 값(분류 라벨·추출 값)을 Studio 결과 저장소에 되돌려 놓고 이어 실행할 Job 을 찾는다. |
AgentStudioTestExtractFields.java이력100.0%3일 전 · #2032 | 클래스 | 실행 테스트 추출 결과 → 항목별 결과(docs/decisions/20261107-studio-test-extract-run.md 3·9항). |
AiCacheBypass.java이력100.0%2일 전 · #2128 | 클래스 | 재실행 요청이 플랫폼 결과 캐시를 건너뛰게 하는 표식. |
AiPipelineJobLedger.java이력92.3% | 클래스 | 문서 AI 작업 원장(ai_pipeline_jobs)을 다루는 단계 공통 부분 (2026-09-25 야간 NX02). |
AnalysisInstructionBuilder.java이력98.5%6일 전 · #1941 | 클래스 | 분석 요청(분석 조건)을 요약 에이전트에 보낼 지시문으로 펼친다 — 순수 계산만 둔다. |
AnalysisSourceContext.java이력100.0% | 클래스 | 요약이 분류 Job 을 이어받는 구성(hwss.analysis.source-step=CLASSIFY)에서 쓰는 앞 작업·검수 수정값 (docs/decisions/20261015-studio-saas-v2-agents-adoption.md D3). |
ApplicationFormDefaults.java이력70.0% | 클래스 | 서버에 내장된 청약서 폼 기본 설정 — 관리자가 아직 아무것도 저장하지 않은 환경의 「현재 설정」이자 저장된 버전이 없을 때 관리자·조사자 화면에 제공하는 기본 내용. |
ApplicationFormSettingsValidator.java이력98.3% | 클래스 | 청약서 폼 설정의 항목 간 규칙 — 형식(길이·필수)은 @Valid 가 경계에서 걸렀고, 여기서는 그것으로 표현할 수 없는 것만 본다. |
ClaimTypeExposure.java이력100.0% | 클래스 | 조사자에게 보이는 청구유형 — 분석 조건 1번 선택지와 인입 때 고정하는 선택지가 같은 기준을 쓴다. |
DocumentBoxFolderResolver.java이력100.0%5일 전 · #1981 | 클래스 | 스캔 문서함에서 낱장을 어느 폴더 아래 보여 줄지 정한다(결정 20261104-document-box-classified-folder). |
DocumentEditReflection.java이력100.0%7일 전 · #1929 | 클래스 | 저장된 문서 편집([20260921] 🟢 0항 — 낱장 이동·삭제, 추출 이후 분류값 변경)이 있는가·마지막 분류 실행에 반영됐는가를 판정한다. |
DocumentTypeStructures.java이력99.0%5일 전 · #1971 | 클래스 | 이미지 전송에 쓰는 문서 분류체계(계약 구조)를 보관·조회하고, 그 구조로 보고서 전체 페이지 순서와 분류 표시명을 계산한다 (ImageTransferReceptionService 에서 분리). |
HospitalFolderAllocator.java이력100.0%2일 전 · #2113 | 클래스 | AI 분류 라벨 → 이미지시스템 회신 폴더 배정(결정 20261101-hospital-folder-bundle-overflow). |
ImageSnapshotValidator.java이력100.0%5일 전 · #1971 | 클래스 | 이미지 연동 접수 요청(API-01·02·03)의 입력 규칙을 검증한다 — 위탁사 사용 여부, 파일 확장자, 스냅샷 페이지 수·식별자 중복, 신규 페이지 해시, 최종 실패 통지의 재시도 횟수 (ImageTransferReceptionService 에서 분리). |
ImageSystemIntegrationClient.java이력90.7% | 클래스 | AI Agent에서 이미지 시스템이 제공하는 API-08·09·10을 호출하는 외부 연동 클라이언트다. |
ImageSystemRedistributionSynchronizer.java이력100.0% | 클래스 | 이미지시스템 API-09·10 재배분 응답을 검증하고 전용 최종 상태에 반영한다. |
ImageTransferFileStore.java이력88.0%5일 전 · #1971 | 클래스 | 이미지 전송 ZIP 과 압축 해제본이 놓이는 파일 위치를 다룬다 — 수신 루트·처리 루트 경로 계산, S3 수신 객체 확인·내려받기, 처리 파일의 공유 저장소 업로드·정리, 성공·실패 뒤 작업 파일 정리 (ImageTransferReceptionService 에서 분리). |
ImageTransferTaskQueueWorker.java이력91.8% | 클래스 | 영속 이미지 전송 작업을 임대해 공용 작업 풀에서 실행한다. |
ImageZipExtractionProcessor.java이력94.8%5일 전 · #1971 | 클래스 | API-02 뒤의 ZIP 처리 파이프라인 — 압축 해제 작업을 대기열(영속 큐 또는 보고서별 순차 실행기)에 맡기고, ZIP 을 풀어 페이지 파일을 검증·PDF 낱장 분할한 뒤 보고서 행 잠금 트랜잭션 안에서 반영하거나 실패로 종결한다 (ImageTransferReceptionService 에서 분리). |
IncrementalClassificationScope.java이력93.6%2일 전 · #2113 | 클래스 | 다시 분석 `증분` 의 대상 — 직전 분류 결과에 없는 낱장(이미지시스템 추가 인입분)을 고른다 (결정 20261111-incremental-reanalysis-execution-unit). |
InstructTabByteLimits.java이력95.5%2일 전 · #2130 | 클래스 | 조사건 보고서 탭의 byte 제한 — 그 건이 인입될 때 고정한 INSTRUCT 판의 값이다(docs/decisions/20261102-report-tab-byte-limit-guide.md 5항). |
InsuredNameMatcher.java이력100.0%4일 전 · #1998 | 클래스 | 서류에서 뽑은 이름과 피보험자 이름의 대조 (결정 20260910 「기준값 대조」 — 대조 방식 `표기 차이 허용`). |
InvestigatorStartLock.java이력100.0% | 클래스 | 조사자 단위 착수 잠금 — 같은 사람이 두 건을 거의 동시에 착수해 1인 동시 AI 분석 요청 한도를 넘기지 않게 한다(WBS 29.12.3). |
KcdCode.java이력100.0%6일 전 · #1941 | 클래스 | 청구병원 대표 상병의 KCD 코드 정규화 — 소수점 첫째 자리까지로 맞춘다(결정 20261106-analysis-request-claim-hospitals 3항). |
LegacyStudioLabels.java이력100.0% | 클래스 | Studio 분류 결과의 옛 라벨을 우리 문서종 코드로 바꾸는 전환 대응표. |
PostgresReportTaskLock.java이력83.0% | 클래스 | PostgreSQL 세션 범위 advisory lock(pg_advisory_lock)으로 보고서 단위 작업을 인스턴스 사이에서 직렬화한다. |
PreviousTabVariables.java이력100.0%6일 전 · #1958 | 클래스 | 보고서 프롬프트의 앞 탭 결과 변수 (docs/decisions/20261102-report-prompt-previous-tab-variables.md). |
ReportDeliveryLogSpecifications.java이력4.0% | 클래스 | 보고서 초안 전송 로그 조회 조건 → 메일 발송 기록(report_mail_dispatches)에 거는 JPA Criteria 조건. |
ReportEvidenceSources.java이력97.6%6일 전 · #1962 | 클래스 | 보고서 탭 출력의 항목별 요약근거({job_id, occurrence_id}) → 요약 항목 출처(낱장) (docs/decisions/20261029-shinhan-summary-evidence-occurrence.md 3항). |
ReportMailDispatchRecorder.java이력100.0% | 클래스 | 발송 기록 적재만 담당한다 — ReportMailService 에서 떼어 낸 이유가 전파 속성이다. |
ReportMailDispatchSpecifications.java이력4.8% | 클래스 | 조회 조건 → JPA Criteria 조건 (야간 플랜 20261005 NM01). |
ReportOutputSchema.java이력96.0%6일 전 · #1958 | 클래스 | 보고서 탭 출력 골격 → JSON Schema, 그리고 받은 JSON 의 검증·키 매칭 보정 (docs/decisions/20261020-report-generation-llm-input-job.md 「결정」 4·5·6항, 「실측 2」 2절). |
ReportOutputText.java이력100.0% | 클래스 | 탭 출력 JSON → 초안 구역 글. |
ReportPageEditOverlay.java이력98.2% | 클래스 | 저장된 낱장 편집을 문서함 목록에 겹쳐 본 결과 — 삭제된 낱장을 빼고 저장된 표시 순서를 되살린다 (야간 20261006 NP02, S-012 §4-0, [20260921] 🟢 0항). |
ReportPageImageRenderer.java이력96.7% | 클래스 | 페이지 원본을 브라우저가 그릴 수 있는 본문으로 만든다 (결정 20261001-page-image-tiff-png-conversion). |
ReportPageWriter.java이력81.5%5일 전 · #1971 | 클래스 | 전송 이력 페이지(transfer_pages)와 보고서 현재 페이지(report_pages)를 기록·반영한다 — API-01·03 스냅샷 이력 저장, 논리 변경 비교, ZIP·논리 변경 결과의 현재 페이지 반영, PDF 낱장 행 동기화 (ImageTransferReceptionService 에서 분리). |
ReportPromptTemplates.java이력88.6% | 클래스 | 위탁사·탭별 보고서 프롬프트 템플릿을 고르고 조립한다 (docs/decisions/20261020-report-generation-llm-input-job.md 「결정」 7항, 통합 설계 v0.3 「프롬프트 템플릿」 2·3번). |
ReportPromptVariables.java이력96.9%6일 전 · #1958 | 클래스 | 보고서 생성 프롬프트의 건별 변수 값 — 분석 요청(사전분석 조건)을 위탁사·탭 프롬프트의 {{변수}} 자리에 들어갈 글로 펼친다. |
ReportReceptionState.java이력100.0%5일 전 · #1971 | 클래스 | 이미지 전송 접수가 보고서 상태에 주는 영향을 한곳에서 다룬다 — 보고서 행 조회·잠금, 전송 생명주기 이벤트 반영, 정상 접수 뒤 워크플로우 실행 생성, 분류 시작(동시 작업 한도·대기열), 화면 갱신·예약 소비·접수 이벤트 발행 (ImageTransferReceptionService 에서 분리). |
ReportReflectionPrompt.java이력100.0%5일 전 · #1970 | 클래스 | 「AI 보고서 반영」 요청 글·출력 스키마·응답 검증 — 순수 계산만 둔다 (통합 설계 v0.3 사고조사 4번·템플릿 5번). |
ReportSummaryGroupSections.java이력100.0%4일 전 · #2031 | 클래스 | 요약 그룹(서류 묶음) 결과를 초안 맨 뒤 「요약」 구역으로 잇는다 — 전 위탁사 공통 (결정 20261106 「한화손사 회신」 2항). |
ReportTaskLockConnectionPool.java이력90.9% | 클래스 | 보고서 작업 잠금(PostgresReportTaskLock) 전용 커넥션 풀 홀더. |
ReportTaskSequencer.java이력100.0% | 클래스 | 보고서별 인메모리 백그라운드 작업 직렬 실행기. |
ReportTextFormats.java이력93.5%4일 전 · #2029 | 클래스 | 위탁사·탭별 3단계 글 양식(classpath:report-text-formats/*.json) — 결정 20261106-report-text-format-by-insurer. |
ReportTransferPayloadComposer.java이력96.7% | 클래스 | 예전 전달 JSON 조립 (S-014 §8, 20260819 결정 2026-09-29 확정 1·5번). |
ScanPdfFileLookup.java이력96.2% | 클래스 | 낱장이 문서 AI 플랫폼에 올라간 한 쪽 PDF 의 파일 식별자를 찾는다. |
SheetNumbers.java이력100.0% | 클래스 | 화면에 보이는 낱장 번호 — 문서함의 활성 낱장을 순서대로 1부터 센 값이다. |
SmartReviewTransferPayloadComposer.java이력91.4%7일 전 · #1912 | 클래스 | 스마트심사 전달 JSON 조립 — AI 보고서(step2)와 보고서 검수(step3)를 한 문서로 묶는다 (결정 20261020). |
SmartReviewTransferRecorder.java이력0.0% | 클래스 | 전송 기록 적재만 담당한다. |
StartBusinessMetadataResolver.java이력100.0%5일 전 · #1971 | 클래스 | API-01 접수 때 보고서에 붙일 업무 정보(피보험자명·조사자 사번·계약 목록)를 Smart심사에서 읽고 계약 스냅샷을 저장한다 (ImageTransferReceptionService 에서 분리). |
StudioInstructTemplateSource.java이력96.4%5일 전 · #1970 | 클래스 | 보고서 프롬프트 템플릿의 출처 — 에이전트 스튜디오 3단계 INSTRUCT 설정(docs/decisions/20261021-studio-instruct-db-storage.md)의 조사건에 고정한 판에서 그 위탁사의 사용 중인 탭을 표시 순서대로 읽는다(docs/decisions/20261023… |
SummaryGroupPromptRenderer.java이력50.0% | 클래스 | 요약 그룹 프롬프트의 자리표시자를 분석 조건 값으로 채운다 (결정 20261104-summary-group-instruct-templates). |
SummarySectionDraftBytes.java이력97.3%2일 전 · #2130 | 클래스 | 요약 구역의 byte 를 초안 구역 글 기준으로 센다 — 검수 단계(`AI 보고서 생성 완료`)와 초안 단계(`보고서 항목 선택 완료`)가 같은 숫자·같은 제한을 보이게 한다. |
ZipPageExpander.java이력57.8%5일 전 · #1971 | 클래스 | 압축 해제한 ZIP 의 페이지 파일을 검증하고, PDF 를 쪽별 낱장 이미지로 푼다 (ImageTransferReceptionService 에서 분리). |
statistics/88GitHub
통계 star schema — 사실 적재, 일별 롤업, 조회, 미매핑 큐, 재적재.
BackfillCommand.java이력100.0% | DTO | 재적재 명령 본문(BackfillRequest)의 정규화된 형태 (ST04). |
UnmappedQueueGroup.java이력100.0% | DTO | 미매핑 큐를 (차원, 원문값, 상태)로 묶은 JPQL 투영 (ST05-A). |
LifecycleLoadStage.java이력100.0% | enum | 생애주기 사실 적재의 세 지점 (stat_lifecycle_load_failures.stage). |
MainDiseaseRule.java이력100.0% | enum | 메인 질병코드(E41) 판정 규칙 한 단계. |
MainDiseaseSource.java이력100.0%6일 전 · #1949 | enum | 통계 사실 행의 대표 상병을 정한 곳(report_stat_facts.main_disease_source) — 결정 20261106-stat-main-disease-from-claim-hospitals. |
StatDailyRollupTable.java이력100.0%6일 전 · #1949 | enum | 일별 롤업 테이블 7종(ST03-A, V202609040002) — 테이블명과 차원 키 컬럼. |
StatFactLoadFailureStatus.java이력100.0% | enum | 적재 실패 기록(stat_fact_load_failures.status)의 상태. |
BusinessStatisticsQuery.java이력91.7% | record | 업무 통계 조회 조건의 정규화된 형태 (ST03-B). |
ExtractionQualityStatisticsQuery.java이력100.0% | record | 추출 완료율 조회 조건의 정규화된 형태 (2026-10-12 야간 NE02). |
HospitalAddressRegion.java이력100.0%어제 · #2140 | record | 병원 주소 앞머리 → 시/도·시/군/구. |
LifecycleStatisticsQuery.java이력100.0% | record | 시스템 통계 조회 조건의 정규화된 형태 (2026-09-11 야간 DP06). |
LifecycleTotals.java이력100.0% | record | 생애주기 일별 롤업(stat_daily_lifecycle) 합계 열 열 개의 기간 합 — 조회 API(DP06)가 읽는 벡터 (2026-09-11 야간). |
ReportTransferTime.java이력100.0% | record | 사실 행의 (보고서번호, 전송 완료 시각) 투영 — 재적재 명령(ST04)이 대상을 고를 때 조합 행까지 읽지 않기 위한 것. |
StatDailyExtractionQualityContribution.java이력100.0% | record | 보고서 1건이 추출 완료율 축별 일별 롤업(stat_daily_extraction_quality)에 더하는(또는 빼는) 기여 — 순수 계산 (2026-10-12 야간 NE01, S-007 §3-4 「추출 완료율 축별 일별 롤업」). |
StatDailyLifecycleContribution.java이력100.0%5일 전 · #1970 | record | 생애주기 사실 행 1건이 생애주기 일별 롤업(stat_daily_lifecycle)에 더하는(또는 빼는) 기여 — 순수 계산 (2026-09-11 야간 DP05, S-007 §3-4 「생애주기 일별 롤업」). |
StatDailyMeasureRollupStatements.java이력100.0% | record | 합계 열 증분형 일별 롤업의 SQL 세 벌 — 생애주기 롤업(StatDailyLifecycleRollupService)과 추출 완료율 롤업 (StatDailyExtractionQualityRollupService)이 글자 그대로 같은 모양을 쓰므로 조립을 여기 한 곳에 둔다 (2026-10-12… |
ReportLifecycleFactLoadListener.java이력96.1% | 리스너 | 생애주기 사실 적재의 진입점 — 3지점 (2026-09-11 야간 DP04). |
ReportStatFactLoadListener.java이력100.0% | 리스너 | 전송 완료 후속 — 통계 사실 적재의 진입점 (ST02). |
BusinessStatisticsQueryService.java이력92.4% | 서비스 | 업무 통계 조회 (ST03-B — S-007 §3-4 「조회 API」). |
ErrorIncidentQueryService.java이력100.0% | 서비스 | 오류/장애 현황 조회 (S-007 §3-4 「오류/장애 현황 조회 API」) — 시스템 통계 「오류/장애 현황」(정의 시트 33행). |
ExtractionQualityStatisticsQueryService.java이력100.0% | 서비스 | 추출 완료율 조회 (2026-10-12 야간 NE02 — S-007 §3-4 「추출 완료율 조회 API」). |
HospitalAliasService.java이력99.3%3일 전 · #2082 | 서비스 | 병원 다른 이름 등재(관리자 화면 /admin/hospital-aliases `병원 명칭 매핑`) — docs/decisions/20260910-hospital-master-matching.md §6. |
HospitalMasterSyncService.java이력100.0%어제 · #2146 | 서비스 | 스마트심사 병원 뷰 → dim_hospitals 적재 (결정 20260910 병원 마스터 「반영 상태」 — 라이브 조회 원칙의 예외, 노션 이슈로 재검토 중). |
KcdDiseaseSearchService.java이력100.0%6일 전 · #1941 | 서비스 | 조사자용 상병(KCD) 검색 — 분석 조건 「청구병원 및 대표 상병」의 `직접 검색`(결정 20261106-analysis-request-claim-hospitals 4항). |
LifecycleBackfillService.java이력82.4% | 서비스 | 생애주기 통계 사실 재적재 명령 (결정 20261027). |
LifecycleStatisticsQueryService.java이력100.0% | 서비스 | 시스템 통계 조회 (2026-09-11 야간 DP06 — S-007 §3-4 「생애주기 조회 API」). |
ProcessingTimeStatisticsQueryService.java이력100.0% | 서비스 | 처리시간 통계 조회 (2026-10-19 — S-007 §3-4 「처리시간 통계 조회 API」). |
ServiceStatusQueryService.java이력84.7% | 서비스 | 시스템 통계 #30 서비스 상태 — Prometheus 를 조회할 때 바로 읽는다(롤업 없음, S-007 §3-4 「서비스 상태 조회 API」). |
StatDailyExtractionQualityRollupService.java이력100.0%5일 전 · #1970 | 서비스 | 추출 완료율 축별 일별 롤업(stat_daily_extraction_quality, V202610121900)의 증분 갱신 (2026-10-12 야간 NE01 — S-007 §3-4 「추출 완료율 축별 일별 롤업」). |
StatDailyInvestigatorUsageRollupService.java이력100.0%5일 전 · #1970 | 서비스 | 조사자별 이용량 일별 롤업(stat_daily_investigator_usage, V202610191500)의 증분 갱신 (2026-10-19 — S-007 §3-4 「조사자별 이용량 일별 롤업」). |
StatDailyLifecycleRollupService.java이력100.0% | 서비스 | 생애주기 일별 롤업(stat_daily_lifecycle, V202609110003)의 증분 갱신 (2026-09-11 야간 DP05 — S-007 §3-4 「생애주기 일별 롤업」). |
StatDailyProcessingTimeRollupService.java이력100.0%5일 전 · #1970 | 서비스 | 처리시간 구간 일별 롤업(stat_daily_processing_time, V202610191500)의 증분 갱신 (2026-10-19 — S-007 §3-4 「처리시간 구간 일별 롤업」). |
StatDailyRollupService.java이력100.0% | 서비스 | 일별 롤업 7종(stat_daily_*)의 증분 갱신 (ST03-A — S-007 §3-4 「일별 롤업」). |
StatDimensionMasterService.java이력98.0%4일 전 · #2036 | 서비스 | 차원 마스터 3종(dim_hospitals·dim_doctors·dim_diseases)을 StatDimension 하나로 다루는 얇은 층 (ST05-A). |
StatFactLoadFailureService.java이력26.7% | 서비스 | 적재 실패 기록(stat_fact_load_failures) 쓰기 (ST02). |
StatLifecycleLoadFailureService.java이력0.0% | 서비스 | 생애주기 적재 실패 기록(stat_lifecycle_load_failures) 쓰기 (결정 20261027). |
StatUnmappedQueueQueryService.java이력100.0% | 서비스 | 미매핑 큐 목록·차원 마스터 검색 (ST05-A — S-007 §3-4 「미매핑 큐 API」). |
StatUnmappedResolveService.java이력96.8% | 서비스 | 미매핑 큐 처리 (ST05-A — S-007 §3-4 「미매핑 큐 API」). |
StatisticsBackfillService.java이력93.6% | 서비스 | 통계 사실 재적재(backfill) 명령 (ST04 — S-007 §3-4 「재적재 명령」). |
UsageStatisticsQueryService.java이력100.0% | 서비스 | 이용 현황 조회 (2026-10-19 — S-007 §3-4 「이용 현황 조회 API」). |
DiseaseDimensionEntity.java이력54.5% | 엔티티 | 질병 차원 마스터 (dim_diseases) — KCD 코드·표준 병명 (E41). |
DoctorDimensionEntity.java이력57.1% | 엔티티 | 의사 차원 마스터 (dim_doctors) — 키(면허번호, 없으면 병원 키 + 정규화 이름의 대체 키)·표시명·소속 병원 (E43). |
HospitalDimensionEntity.java이력88.5%어제 · #2144 | 엔티티 | 병원 차원 마스터 (dim_hospitals) — 키·대표 표기명·지역 (E42). |
ReportLifecycleFactEntity.java이력95.8% | 엔티티 | 보고서 1건의 생애주기 사실(보고서당 1행) — 시스템 통계(9/1 엑셀 5~31행)의 원천 (DP03). |
ReportStatFactDetailEntity.java이력87.0% | 엔티티 | 보고서 1건 안의 병원·의사·질병·문서유형 조합 한 행 (ST01). |
ReportStatFactEntity.java이력96.3%5일 전 · #1970 | 엔티티 | 보고서 1건의 통계 사실(보고서당 1행) — 전송 완료 시점 확정값의 스냅샷 (ST01). |
StatDimensionAliasEntity.java이력84.4% | 엔티티 | 별칭 → 차원 키 (stat_dim_aliases). |
StatFactLoadFailureEntity.java이력86.7% | 엔티티 | 통계 사실 적재가 실패한 보고서 한 건 (stat_fact_load_failures, ST02). |
StatLifecycleLoadFailureEntity.java이력57.6% | 엔티티 | 생애주기 사실 적재가 실패한 보고서의 한 지점 (stat_lifecycle_load_failures, 결정 20261027). |
StatUnmappedQueueEntity.java이력90.9% | 엔티티 | 코드로 바꾸지 못한 원문값 한 건 (stat_unmapped_queue). |
DepartmentSnapshot.java이력 | 인터페이스 | 사실 행이 갖는 부서 스냅샷(요청·전송 시점의 조사자 부서) — 두 사실 테이블(ReportStatFactEntity· ReportLifecycleFactEntity)이 같은 승계 규칙(ReportStatFactSourceReader#departmentOf(String,)을 타기 위한 최소 계약… |
PrometheusQueryClient.java이력71.4% | 인터페이스 | Prometheus HTTP API 조회 — 서비스 상태 조회(S-007 §3-4)가 쓰는 두 질의만. |
DiseaseDimensionRepository.java이력6일 전 · #1941 | 저장소 | DiseaseDimensionEntity 저장소 (Spring Data JPA 인터페이스). |
DoctorDimensionRepository.java이력 | 저장소 | DoctorDimensionEntity 저장소 (Spring Data JPA 인터페이스). |
ErrorIncidentQueryRepository.java이력17.6% | 저장소 | 오류/장애 현황의 원천 — 우리 시스템이 남긴 실패 기록 셋을 기간으로 읽는다 (S-007 §3-4 「오류/장애 현황 조회 API」). |
HospitalDimensionRepository.java이력어제 · #2144 | 저장소 | HospitalDimensionEntity 저장소 (Spring Data JPA 인터페이스). |
ReportLifecycleFactRepository.java이력 | 저장소 | 보고서 생애주기 사실 저장소 (DP03). |
ReportStatFactRepository.java이력6일 전 · #1949 | 저장소 | 보고서 통계 사실(애그리게이트 루트) 저장소. |
StatDailyExtractionQualityQueryRepository.java이력100.0% | 저장소 | 추출 완료율 일별 롤업(stat_daily_extraction_quality)의 축별 기간 조회 (2026-10-12 야간 NE02 — S-007 §3-4 「추출 완료율 조회 API」). |
StatDailyInvestigatorUsageQueryRepository.java이력17.6% | 저장소 | 조사자별 이용량 일별 롤업(stat_daily_investigator_usage)의 기간 조회 (2026-10-19 — S-007 §3-4 「이용 현황 조회 API」). |
StatDailyLifecycleQueryRepository.java이력100.0% | 저장소 | 생애주기 일별 롤업(stat_daily_lifecycle)의 기간 조회 (2026-09-11 야간 DP06 — S-007 §3-4 「생애주기 조회 API」). |
StatDailyProcessingTimeQueryRepository.java이력6.7% | 저장소 | 처리시간 구간 일별 롤업(stat_daily_processing_time)의 기간 조회 (2026-10-19 — S-007 §3-4 「처리시간 통계 조회 API」). |
StatDailyRollupQueryRepository.java이력97.0% | 저장소 | 일별 롤업(stat_daily_*)의 기간 합산 조회 (ST03-B — S-007 §3-4 「조회 API」). |
StatDimensionAliasRepository.java이력3일 전 · #2081 | 저장소 | StatDimensionAliasEntity 저장소 (Spring Data JPA 인터페이스). |
StatFactLoadFailureRepository.java이력 | 저장소 | StatFactLoadFailureEntity 저장소 (Spring Data JPA 인터페이스). |
StatLifecycleLoadFailureRepository.java이력 | 저장소 | StatLifecycleLoadFailureEntity 저장소 (Spring Data JPA 인터페이스). |
StatUnmappedQueueRepository.java이력 | 저장소 | StatUnmappedQueueEntity 저장소 (Spring Data JPA 인터페이스). |
ReportLifecycleFactLoader.java이력99.6% | 적재기 | 보고서 1건의 생애주기 사실 적재 — 3지점 갱신 (2026-09-11 야간 DP04, S-007 §3-4 report_lifecycle_facts, 경계 결정 §4-1 정정본). |
ReportStatFactLoader.java이력99.2%6일 전 · #1949 | 적재기 | 보고서 1건의 통계 사실 적재 (ST02 — 9/1 노트 「세 층과 시점」 ①). |
RetryingStatFactLoader.java이력100.0% | 적재기 | 통계 사실 적재의 실행 골격 — 경합 재시도 + 실패 기록 (ST03-A 의 재시도를 ST04 가 떼어 공유). |
BackfillTargets.java이력100.0% | 클래스 | 재적재 대상 집합의 계산 — 순수 (ST04, S-007 §3-4 「재적재 명령」). |
ContentionRetry.java이력88.9% | 클래스 | 통계 적재·재집계의 경합 재시도 골격 (2026-09-11 야간 DP08 — 세 벌로 흩어져 있던 같은 루프를 한 곳으로). |
ExtractionFieldMeasure.java이력100.0% | 클래스 | 추출 지표(#14·#18·#19)의 모수 규칙 — 생애주기 사실과 추출 완료율 롤업이 같은 규칙을 쓴다(결정 20261103). |
HospitalMasterSyncScheduler.java이력0.0%어제 · #2146 | 클래스 | 병원 마스터를 하루 한 번 적재한다. |
HospitalNameNormalizer.java이력100.0%4일 전 · #2036 | 클래스 | 병원 이름의 표기 흔들림을 걷어낸다 — 띄어쓰기·괄호·구분 기호와 법인 표기가 사람마다 달라 같은 병원이 다른 이름으로 갈리는 것을 막는다. |
HttpPrometheusQueryClient.java이력0.0% | 클래스 | Prometheus HTTP API(v1) 클라이언트. |
MainDiseaseCodeSelector.java이력97.4% | 클래스 | 보고서 1건의 질병코드 후보들 중 메인 질병코드(E41) 하나를 고른다 — 규칙 순서는 설정(MainDiseaseRule). |
ReportStatFactMainDisease.java이력80.0%6일 전 · #1949 | 클래스 | 보고서 1건의 대표 상병 한 건(report_stat_fact_main_diseases) — ReportStatFactEntity 의 값 컬렉션이다. |
ReportStatFactSourceReader.java이력100.0%6일 전 · #1949 | 클래스 | 통계 사실 적재(ST02)의 원천 읽기 — 보고서 1건의 확정 스냅샷(추출 항목·요약 표본·활성 낱장·최신 분석 요청)과 부서 디렉터리를 읽어 ReportStatFactLoader 가 조립할 재료로 만든다. |
StatDailyRollupAxis.java이력100.0% | 클래스 | 일별 롤업 테이블들의 공통 축(일자 × 위탁사 × 부서) — 업무 데이터 롤업 7종(StatDailyRollupService)과 생애주기 롤업 (StatDailyLifecycleRollupService)이 같은 WHERE 절과 파라미터를 쓴다 (2026-09-11 야간 DP08). |
StatDailyRollupContributions.java이력100.0%5일 전 · #1970 | 클래스 | 사실 행 1건이 일별 롤업 7종에 더하는(또는 빼는) 기여 — 순수 계산 (ST03-A). |
StatDailySliceQueryFilters.java이력0.0% | 클래스 | 처리시간 구간·조사자별 이용량 조회가 함께 쓰는 공통 축 WHERE 절 — 생애주기 조회(StatDailyLifecycleQueryRepository)와 글자 그대로 같은 조건(기간 포함 범위 · 위탁사 · 부서 스냅샷 IN)이다. |
StatDailySliceRollupWriter.java이력94.8% | 클래스 | 사실 행의 열만으로 기여가 정해지는 축 키 롤업의 증분 적용 — 처리시간 구간(StatDailyProcessingTimeRollupService)과 조사자별 이용량(StatDailyInvestigatorUsageRollupService) 두 롤업이 글자 그대로 같은 절차를 쓰므로 한 곳에 둔다… |
StatDimensionKeyResolver.java이력93.8% | 클래스 | 추출 원문값 → 차원 키 변환 (ST02 "코드 변환"). |
StatDimensionLabelResolver.java이력97.1%6일 전 · #1949 | 클래스 | 통계 차원 키 → 대표 표기 (ST03-B). |
StatText.java이력100.0%5일 전 · #1970 | 클래스 | 통계 패키지의 문자열 규칙 세 가지 — 필수 텍스트 검사, 공백 정리, 컬럼 길이 절단. |
StatisticsQueryFilters.java이력100.0%5일 전 · #1970 | 클래스 | 관리자 통계 조회 API 세 곳이 함께 쓰는 요청 파라미터 정규화 — 업무(BusinessStatisticsQuery)·생애주기 (LifecycleStatisticsQuery)·추출 완료율(ExtractionQualityStatisticsQuery) 조회 조건이 기간·위탁사·부서를 글자 그대로… |
package-info.java이력 | 패키지 주석 | 통계 사실 테이블(star schema) — 업무 데이터 통계(9/1 엑셀 32~39행)의 적재 대상 (ST01, 2026-09-03). |
status/5GitHub
S-004 상태 전이표의 단일 구현.
DerivedWorkflowStatus.java이력100.0% | record | WorkflowStatusResolver 의 산출물 — 화면 글로벌 상태 하나와 그 상태에서 허용되는 위험 서브 상태 목록. |
InvestigationStatusTransition.java이력100.0%2일 전 · #2113 | 클래스 | S-004 §7 상태 전이표의 단일 구현 지점. |
ReanalysisScopeResolver.java이력98.1%2일 전 · #2113 | 클래스 | `다시 분석` 범위 노출 규칙의 단일 지점 (S-012 §4 · [20260921 단계별 문서 편집·다시 분석 범위] 🟢, 야간 20261002 NR01). |
StepFailureMessages.java이력100.0%어제 · #2137 | 클래스 | 워크플로 단계 실패 코드 → 사용자 안내 문구 (docs/decisions/20260929-pipeline-correction-roundtrip.md §8 P3). |
WorkflowStatusResolver.java이력59.4%4일 전 · #2007 | 클래스 | 화면 글로벌 상태 11종·위험 서브 상태 6종의 파생 규칙 단일 지점 (2026-09-18 결정 「화면 상태 파생 필드」, S-004 「화면 상태 파생 규칙」 절이 이 클래스를 문서화한다). |
storage/2GitHub
업로드 파일 저장 — 로컬 디스크, 설정 시 S3.
AgentStudioTestRunFileStore.java이력100.0%3일 전 · #2058 | 클래스 | 실행 테스트에 올린 서류(변환한 PDF)의 보관소 — 공용 ObjectStore 위의 업무 키만 맡는다 (docs/decisions/20261109-studio-test-file-object-storage.md 1항). |
ImageTransferS3Store.java이력66.1% | 클래스 | 운영 AP 인스턴스가 공동으로 사용하는 이미지 전송 S3 호환 저장소. |
summary/12GitHub
ReportTextData.java이력95.6%4일 전 · #2029 | 클래스 | 양식에 넣을 탭 데이터 — 탭 원형(summary_sections.output_json)에 보고서 검수 결과를 반영한다 (결정 20261106-report-text-format-by-insurer). |
ReportTextRenderer.java이력98.5%4일 전 · #2031 | 클래스 | 탭 출력 JSON + 위탁사·탭 양식 → 3단계 글 (결정 20261106-report-text-format-by-insurer). |
SummaryByteCount.java이력100.0% | 클래스 | 요약·초안 텍스트의 byte 셈 (S-014 §4) — 위탁사 자료의 「영문+숫자 기준」 값과 비교하는 수. |
SummaryComposer.java이력98.3% | 클래스 | 플랫폼(또는 스텁)이 준 기관 카드를 섹션 골격에 앉힌다 (S-014 §6·§9). |
SummaryGroupPlanner.java이력92.5% | 클래스 | 분류 작업의 검수 구조를 요약 그룹별로 모은다 — 그룹 하나에 요약 호출 하나 (docs/decisions/20261019-studio-summary-tab-doc-groups.md 「추가 2026-10-21」). |
SummaryHumanDraftDedup.java이력92.7% | 클래스 | 같은 조사자 판단 항목(HUMAN — AI 초안)이 탭(섹션) 여럿에 반복돼 오면 마지막 탭 값 하나만 남긴다 (S-014 §9 1항 · 20261007 결정 6항 🟢 2026-10-07). |
SummaryItemEvidence.java이력97.9%7일 전 · #1912 | 클래스 | 보고서 탭 출력의 요약근거 — 두 꼴로 온다. |
SummaryJson.java이력71.4% | 클래스 | 요약 테이블의 JSON 텍스트 컬럼(열 이름 배열·청구유형 코드 배열)을 읽고 쓴다. |
SummaryOutputConformance.java이력100.0% | 클래스 | 보고서 탭 응답이 그 탭 출력 골격과 형식이 같은지 본다 (20261007 결정 10항 — 다르면 다시 부른다). |
SummaryOutputProjector.java이력96.8%7일 전 · #1912 | 클래스 | 보고서 에이전트의 Instruct 출력 JSON(탭 원형)을 요약 섹션 → 카드 → 항목(줄)에 앉힌다 (S-014 §9-1, 20261007 결정 1·3·5항). |
SummaryOutputSchemaBuilder.java이력97.1%5일 전 · #1969 | 클래스 | 골격 → Studio 요약 지시서의 출력 골격(JSON Schema)과 작성 지침 글 (S-014 §9). |
SummarySkeletonResolver.java이력100.0% | 클래스 | 보고서 한 건의 요약에 쓸 섹션 골격과 청구유형 스냅샷을 정한다 (S-014 §3). |
web/52GitHub
REST 컨트롤러 — HTTP 요청을 서비스로 넘기고 ApiResponse 로 감싼다.
빌드·리소스15GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력3일 전 · #2058 | 빌드 | 이 모듈의 의존성 선언 — base, investigation-shared 모듈 참조. |
agent-studio/document-type-schema-seed.json이력 | 리소스 | 설명 주석 없음 |
agent-studio/instruct-seed.json이력3일 전 · #2066 | 리소스 | 설명 주석 없음 |
application-forms/default-settings.json이력 | 리소스 | 설명 주석 없음 |
report-text-formats/README.md이력4일 전 · #2031 | 리소스 | 설명 주석 없음 |
report-text-formats/abl-life.json이력4일 전 · #2029 | 리소스 | 설명 주석 없음 |
report-text-formats/hanwha-insurance.json이력4일 전 · #2029 | 리소스 | 설명 주석 없음 |
report-text-formats/hanwha-life.json이력4일 전 · #2029 | 리소스 | 설명 주석 없음 |
report-text-formats/heungkuk-life.json이력4일 전 · #2029 | 리소스 | 설명 주석 없음 |
report-text-formats/lotte-insurance.json이력4일 전 · #2029 | 리소스 | 설명 주석 없음 |
report-text-formats/metlife.json이력4일 전 · #2029 | 리소스 | 설명 주석 없음 |
report-text-formats/mirae-asset-life.json이력4일 전 · #2029 | 리소스 | 설명 주석 없음 |
report-text-formats/nh-insurance.json이력4일 전 · #2029 | 리소스 | 설명 주석 없음 |
report-text-formats/shinhan-life.json이력4일 전 · #2031 | 리소스 | 설명 주석 없음 |
report-text-formats/tongyang-life.json이력4일 전 · #2029 | 리소스 | 설명 주석 없음 |
resources/db/migration/131GitHub
Flyway 마이그레이션 SQL — 파일명 V<YYYYMMDDhhmm>__설명. 앱 기동 시 모든 모듈의 것이 버전 순으로 합쳐 실행된다.
src/test/238GitHub
테스트 파일 — 펼쳐서 보기
src/test/238GitHubaccess/AssigneeActionRuleTest.java이력 | 테스트 | 쓰기(조치·실행) 권한의 담당 조사자 판정 한 곳(2026-10-02 야간 Q2) — 분류 조치·추출값 수정·착수·다시 분석·요약/초안 쓰기 다섯 자리가 같은 규칙을 각각 적어 두던 것을 AssigneeActionRule 로 모았다. |
access/InvestigationAccessGuardTest.java이력 | 테스트 | 조회 권한 판정 매트릭스(2026-09-18 NB04) — 본인/범위 안 남의 건/범위 밖 × 요약 완료 전후 × 포트 유무. |
chat/ReportTabJsonTest.java이력 | 테스트 | 탭 원형 JSON 에 검수 수정 항목을 덮어쓴다 — 시나리오 B2 (항목 키 = JSON 경로, SummaryOutputProjector). |
config/AgentStudioTestRunConfigTest.java이력3일 전 · #2058 | 테스트 | AgentStudioTestRunConfig 대상 테스트. |
config/AiPipelinePropertiesTest.java이력 | 테스트 | AiPipelineProperties 대상 테스트. |
config/ExtractionPropertiesTest.java이력 | 테스트 | 스텁 추출 표본 신뢰도(hwss.extraction.stub.*, 2026-09-03 야간 N03)의 기동 검증 — 표본 신뢰도가 임계값과 모순이면 표본이 뜻대로 나오지 않으므로 조용히 돌지 않고 기동을 거부한다 (분류 스텁 ClassificationProperties.Stub 과 같은 계약). |
config/ImageTransferStoragePropertiesTest.java이력 | 테스트 | ImageTransferStorageProperties 대상 테스트. |
config/InvestigationListPropertiesTest.java이력 | 테스트 | InvestigationListProperties 대상 테스트. |
config/InvestigationPipelineVersionTest.java이력 | 테스트 | v2 는 정의 버전 설정 하나로 켠다(결정 20261021-investigation-pipeline-v2-composition). |
config/ReportReviewPropertiesTest.java이력 | 테스트 | 요약·초안 쓰기의 담당자 판정(2026-09-18 NB02) — 분류 조치·추출값 수정과 같은 규칙이어야 한다: 담당자 본인, 담당자 없는 건은 누구나, 레벨 우회는 설정으로만(기본 비어 있음 = 아무도 우회 못 함). |
config/ScanPdfUploadPropertiesTest.java이력7일 전 · #1922 | 테스트 | ScanPdfUploadProperties 대상 테스트. |
config/StatisticsBackfillPropertiesTest.java이력 | 테스트 | StatisticsBackfillProperties 대상 테스트. |
config/StatisticsErrorIncidentPropertiesTest.java이력 | 테스트 | 오류/장애 현황 설정 — 장애 코드는 기본 비어 있다(기준 미정), 목록·읽기 상한의 범위. |
config/StatisticsExtractionQualityPropertiesTest.java이력 | 테스트 | 추출 완료율 조회 설정(NE02)의 기본값과 유효성. |
config/StatisticsLifecyclePropertiesTest.java이력 | 테스트 | StatisticsLifecycleProperties 대상 테스트. |
config/StatisticsLoadPropertiesTest.java이력 | 테스트 | StatisticsLoadProperties 대상 테스트. |
config/StatisticsProcessingTimePropertiesTest.java이력 | 테스트 | StatisticsProcessingTimeProperties 대상 테스트. |
config/StatisticsQueryPropertiesTest.java이력 | 테스트 | StatisticsQueryProperties 대상 테스트. |
config/StatisticsRollupPropertiesTest.java이력 | 테스트 | StatisticsRollupProperties 대상 테스트. |
config/StatisticsServiceStatusPropertiesTest.java이력 | 테스트 | StatisticsServiceStatusProperties 대상 테스트. |
config/StatisticsUnmappedPropertiesTest.java이력 | 테스트 | StatisticsUnmappedProperties 대상 테스트. |
entity/AgentStudioDeploymentEntityTest.java이력2일 전 · #2112 | 테스트 | AgentStudioDeploymentEntity 대상 테스트. |
entity/AgentStudioTestRunCorrectionEntityTest.java이력3일 전 · #2032 | 테스트 | AgentStudioTestRunCorrectionEntity 대상 테스트. |
entity/AgentStudioTestRunReportItemEntityTest.java이력3일 전 · #2032 | 테스트 | AgentStudioTestRunReportItemEntity 대상 테스트. |
entity/AiPipelineJobEntityTest.java이력7일 전 · #1900 | 테스트 | 작업 원장의 중복 방지 키 — 행마다 무작위이고, 컬럼이 생기기 전의 행은 예전 조립 규칙으로 돌아간다. |
entity/AiPipelineUploadEntityTest.java이력 | 테스트 | AiPipelineUploadEntity 대상 테스트. |
entity/ImageSystemOutboundRequestEntityTest.java이력 | 테스트 | ImageSystemOutboundRequestEntity 대상 테스트. |
entity/ImageTransferBackgroundJobEntityTest.java이력 | 테스트 | ImageTransferBackgroundJobEntity 대상 테스트. |
entity/ReportDisposalLogEntityTest.java이력 | 테스트 | ReportDisposalLogEntity 대상 테스트. |
entity/ReportPageEntityTest.java이력 | 테스트 | ReportPageEntity 대상 테스트. |
integration/AgentStudioInstructSeederTest.java이력6일 전 · #1958 | 테스트 | AgentStudioInstructSeeder — INSTRUCT 첫 버전을 기동 때 넣는 규칙을 고정한다 (docs/decisions/20261021-studio-instruct-db-storage.md 8항). |
integration/AiPipelineJobPollerTest.java이력 | 테스트 | 폴러가 단계를 섞지 않고, 한쪽의 실패로 다른 쪽을 멈추지 않는지를 본다 (2026-09-25 야간 Q1 — NX02 가 EXTRACT 를 더하며 생긴 성질이다). |
integration/AnalysisStepWorkPortImplTest.java이력 | 테스트 | ANALYZE 단계의 요약 포트 — 실연동 경로가 설 때는 플랫폼에 맡기고 외부 작업 대기로 돌아가고(2026-09-29), 그 밖에는 카드 한 장·항목 다섯 개 표본을 적재한다(2026-09-03 야간 N03). |
integration/ChatPromptLookupPortImplTest.java이력 | 테스트 | 지시문 판 조회 포트 — 관리자 API 와 같은 지금 문구를 이름·판 번호와 함께 준다(결정 20261023 지시문 DB). |
integration/ClassificationStepWorkPortImplTest.java이력 | 테스트 | CLASSIFY 단계의 스텁 분류 포트 (2026-09-03 야간 N02) — 엔진이 되물으면 결과 산출 한 번으로 끝나고, 상태 전이는 하지 않는다(그건 WorkflowStepCompletionPortImpl 몫). |
integration/DocumentTypeSchemaSeederTest.java이력 | 테스트 | DocumentTypeSchemaSeeder — 시드 파일(프론트 기본 설정 사본)이 읽히고 분류 버전이 없을 때만 넣는지, 실패가 기동을 막지 않는지. |
integration/ExtractionPreconditionPortImplTest.java이력어제 · #2151 | 테스트 | 추출 진입 게이트 판정 (W07 — W05 가 세운 골격의 구현체). |
integration/ExtractionStepWorkPortImplTest.java이력 | 테스트 | EXTRACT 단계의 추출 포트 — 실연동 경로가 설 때는 플랫폼에 맡기고 외부 작업 대기로 돌아가고 (2026-09-25 야간 NX02), 그 밖에는 최신 분류 결과의 문서종 묶음마다 표본 항목 세 개를 만든다 (2026-09-03 야간 N03). |
integration/ImageTransferExtractionResumeSweeperTest.java이력 | 테스트 | ImageTransferExtractionResumeSweeper 대상 테스트. |
integration/InvestigationChatContextPortImplTest.java이력 | 테스트 | 사고조사 챗봇 맥락 포트 — 시나리오 A(접근 판정)·B(보고서 내용)·C(사건 서류)·D(제목 재료). |
integration/WorkflowStepCompletionPortImplTest.java이력어제 · #2151 | 테스트 | 엔진 단계 성공 → 보고서 상태 반영 (2026-09-03 야간 N01). |
purge/JpaReportDisposalRecorderTest.java이력 | 테스트 | JpaReportDisposalRecorder 대상 테스트. |
purge/ReportPurgeCandidateFinderTest.java이력 | 테스트 | 후보 선정 — 기준 시각·오늘 계산, 상태·커서 조건, 스마트심사 일정의 경계, 다시 확인. |
purge/ReportPurgeSchedulerTest.java이력 | 테스트 | ReportPurgeScheduler 대상 테스트. |
purge/ReportPurgeServiceTest.java이력 | 테스트 | ReportPurgeService 대상 테스트. |
purge/ReportPurgeSettingsTest.java이력 | 테스트 | 파기 설정의 안전한 기본값, 파기 예정일 계산, 보고서 디렉터리 경로 검사. |
purge/ReportPurgeWorkerTest.java이력 | 테스트 | 한 건 처리 — 보류 판정, dry-run, 외부 → 챗봇 → 디렉터리 → DB 순서, 실패 시 DB 를 남기는지. |
realtime/ReportEventStreamRegistryTest.java이력5일 전 · #1976 | 테스트 | ReportEventStreamRegistry 대상 테스트. |
realtime/ReportEventStreamTimeoutWebTest.java이력6일 전 · #1966 | 테스트 | 5분 연결 제한에 닿은 SSE 구독이 500 으로 끝나지 않는다 — 타임아웃 뒤 Spring 이 비동기 타임아웃 예외를 오류 봉투(JSON)로 쓰려다 text/event-stream 응답이라 쓰지 못해 500 이 됐다(2026-11-07 실서류 E2E 회차 서버 로그 `/events` 5xx 22건). |
realtime/ReportEventStreamTomcatAccessLogTest.java이력5일 전 · #1979 | 테스트 | 최소 구성(내장 Tomcat + MVC + 예외 처리기)에서 SSE 구독이 접근 로그에 어떤 상태로 남는지 본다 — 연결 제한(타임아웃)이 500 으로 남지 않는 것이 이 테스트의 몫이다(#1966). |
repository/InvestigationReportsTest.java이력 | 테스트 | InvestigationReports 대상 테스트. |
service/AgentConfigPairGuardTest.java이력5일 전 · #1988 | 테스트 | 건에 고정한 지시서 짝 사전 감지 (docs/decisions/20261108-studio-config-pair-repin.md 1항). |
service/AgentStudioConfigVersionServiceTest.java이력오늘 · #2161 | 테스트 | AgentStudioConfigVersionService — 버전 선택 목록은 그 단계 Studio 에이전트의 지시서 목록이고, Studio 를 쓸 수 없으면 빈 목록과 available=false 다(docs/decisions/20261029-studio-config-version-list-f… |
service/AgentStudioDeploymentServiceTest.java이력오늘 · #2161 | 테스트 | AgentStudioDeploymentService 대상 테스트. |
service/AgentStudioDocumentTypeSyncTest.java이력오늘 · #2161 | 테스트 | AgentStudioDocumentTypeSync 대상 테스트. |
service/AgentStudioInstructServiceTest.java이력 | 테스트 | AgentStudioInstructService — INSTRUCT 저장 규칙을 고정한다 (docs/decisions/20261021-studio-instruct-db-storage.md). |
service/AgentStudioInstructValidatorTest.java이력6일 전 · #1958 | 테스트 | AgentStudioInstructValidator — 화면(프론트 instruct-prompt.ts)과 같은 INSTRUCT 규칙을 서버가 고정한다 (docs/decisions/20261021-studio-instruct-db-storage.md 7항). |
service/AgentStudioShapeAlignmentServiceTest.java이력어제 · #2132 | 테스트 | AgentStudioShapeAlignmentService 대상 테스트. |
service/AgentStudioSummaryConfigServiceTest.java이력어제 · #2132 | 테스트 | AgentStudioSummaryConfigService 대상 테스트. |
service/AgentStudioTestClassifyJudgementTest.java이력4일 전 · #2046 | 테스트 | AgentStudioTestClassifyJudgement 대상 테스트. |
service/AgentStudioTestClassifyPagesTest.java이력6일 전 · #1915 | 테스트 | AgentStudioTestClassifyPages 대상 테스트. |
service/AgentStudioTestExtractFieldsTest.java이력4일 전 · #1963 | 테스트 | AgentStudioTestExtractFields 대상 테스트. |
service/AgentStudioTestExtractServiceTest.java이력2일 전 · #2123 | 테스트 | AgentStudioTestExtractService 대상 테스트. |
service/AgentStudioTestReportServiceTest.java이력오늘 · #2184 | 테스트 | AgentStudioTestReportService 대상 테스트. |
service/AgentStudioTestRunServiceTest.java이력오늘 · #2149 | 테스트 | AgentStudioTestRunService 대상 테스트. |
service/AiAnalysisJobServiceTest.java이력2일 전 · #2128 | 테스트 | 요약 실연동 원장의 상태 진행을 본다 — 이어 실행 판단 → 맡김 → 작업 요청(지시문 포함) → 완료 확인 → 반영/실패/폐기 (2026-09-29). |
service/AiClassificationJobServiceTest.java이력2일 전 · #2128 | 테스트 | 분류 실연동 원장의 상태 진행을 본다 — 맡김 → 업로드·준비 → 작업 요청 → 완료 확인 → 반영/실패/폐기. |
service/AiExtractionJobServiceTest.java이력2일 전 · #2128 | 테스트 | 추출 실연동 원장의 상태 진행을 본다 — 이어 실행 판단 → 맡김 → 작업 요청 → 완료 확인 → 반영/실패/폐기 (2026-09-25 야간 NX02). |
service/AiPipelineResultSyncServiceTest.java이력 | 테스트 | 결과 왕복 준비 단계의 상태 진행을 본다 — 보정 유무 → 원장 생성 → 여섯 걸음 → 갱신 Job / 재사용 / 실패 정책 (docs/decisions/20260929-pipeline-correction-roundtrip.md). |
service/AiReportTabsJobServiceTest.java이력7일 전 · #1912 | 테스트 | 파이프라인 v2 「AI 보고서 생성」(GENERATE_REPORT_TABS) — 단계 시도 하나로 LLM 탭들을 묶어 기다렸다가, 모두 성공하면 탭 출력을 요약 결과로 옮기고 단계를 닫는다. |
service/AiSummaryGroupJobServiceTest.java이력2일 전 · #2128 | 테스트 | 요약 그룹 곁가지(파이프라인 v2)의 묶음 진행을 본다 — 추출 제출 → 묶음 → 계획(그룹별 문서 모으기) → 그룹마다 1회 요청 → 완료 확인 → 묶음 완료/실패, 분류가 바뀌면 새 묶음(앞 묶음 대체), 다음 묶음이 성공한 그룹을 다시 부르지 않는 것. |
service/AnalysisConcurrencyLimitServiceTest.java이력 | 테스트 | 1인 동시 AI 분석 요청 제한(WBS 29.12.3) — 무엇을 세고, 언제 막고, 한도 변경을 어떻게 남기는가. |
service/AnalysisInstructionBuilderTest.java이력6일 전 · #1941 | 테스트 | 분석 조건 → 요약 지시문. |
service/AnalysisRequestServiceTest.java이력6일 전 · #1941 | 테스트 | W09 분석 조건의 검증 규칙과 요약 단계 트리거. |
service/AnalysisSourceContextTest.java이력 | 테스트 | 분류 Job 을 잇는 요약의 소스·수정값 덧붙임(20261015 신규 에이전트 결정 D3). |
service/ApplicationFormSettingsServiceTest.java이력 | 테스트 | ApplicationFormSettingsService — 관리자 `청약서 폼 설정` 의 저장 규칙을 고정한다. |
service/ChatPromptServiceTest.java이력 | 테스트 | 지시문 판 보기·바꾸기 (docs/decisions/20261023-chat-prompt-db-versioning.md). |
service/ClaimHospitalCandidateServiceTest.java이력4일 전 · #2034 | 테스트 | 분석 조건 2번 청구병원 후보 — 결정 20261106-analysis-request-claim-hospitals 2·3항. |
service/ClaimTypeServiceTest.java이력 | 테스트 | 청구유형 마스터 — 결정(docs/decisions/20260918-claim-type-master.md)이 정한 규칙을 하나씩 고정한다. |
service/ClassificationDocumentGroupAssignTest.java이력 | 테스트 | 검수 수동 지정의 묶음 단위 반영(20261015 신규 에이전트 결정 D1). |
service/ClassificationQueueServiceTest.java이력 | 테스트 | 조사자별 분류 대기열 소비(결정 20261022-image-confirm-classification-queue) — 앞에서부터 자리만큼 시작하고, 앞 건이 자리 때문에 막히면 뒤 건을 먼저 들이지 않는다. |
service/ClassificationResultActionTest.java이력 | 테스트 | W07 분류 조치의 권한·상태 규칙. |
service/ClassificationResultServiceTest.java이력2일 전 · #2113 | 테스트 | 분류 결과 산출(스텁)과 조회 매핑·집계를 본다. |
service/DocumentBoxFolderResolverTest.java이력5일 전 · #1981 | 테스트 | DocumentBoxFolderResolver 대상 테스트. |
service/DocumentTypeSchemaServiceTest.java이력 | 테스트 | DocumentTypeSchemaService — 문서 분류·추출 스키마 저장 규칙을 고정한다. |
service/DocumentTypeStructuresTest.java이력5일 전 · #1971 | 테스트 | 분류체계 보관·페이지 순서 계산을 서비스 없이 확인한다. |
service/ExtractionResultCorrectionTest.java이력4일 전 · #2007 | 테스트 | 추출값 사용자 수정(S-012 §2 `추출 완료`, 야간 플랜 20260911 DP01)의 권한·상태·정책 규칙과 수정 이력 (DP02, extraction_field_corrections) 기록. |
service/ExtractionResultServiceTest.java이력4일 전 · #2007 | 테스트 | 정보추출 결과의 저장 정책 적용과 조회 매핑·집계. |
service/FinalTransferCompletionServiceTest.java이력 | 테스트 | 최종 전송 완료 적용 지점(ST02). |
service/HospitalFolderAllocatorTest.java이력2일 전 · #2113 | 테스트 | 라벨 → 회신 폴더 배정 — 결정 20261101-hospital-folder-bundle-overflow 1~2항. |
service/HospitalMatchServiceTest.java이력어제 · #2144 | 테스트 | HospitalMatchService 대상 테스트. |
service/ImageIntegrationIdempotencyServiceTest.java이력 | 테스트 | ImageIntegrationIdempotencyService 대상 테스트. |
service/ImageMasterSyncServiceTest.java이력 | 테스트 | API-06·API-07 의 계약 응답이 마스터 포트 결과로부터 그대로 만들어지는지 본다. |
service/ImageReceptionRepositoryFixture.java이력 | 클래스 | 이미지 전송 접수가 쓰는 4개 리포지토리의 인메모리 대역. |
service/ImageSnapshotValidatorTest.java이력5일 전 · #1971 | 테스트 | 접수 입력 규칙 검증기를 서비스 없이 확인한다. |
service/ImageSystemIntegrationClientTest.java이력 | 테스트 | ImageSystemIntegrationClient 대상 테스트. |
service/ImageSystemOutboundEventListenerTest.java이력 | 테스트 | 이미지시스템 운영 연동 리스너 — 커밋 후 호출을 요청 스레드가 아니라 실행기에 넘기고, 같은 보고서는 제출 순서대로 보내며, 호출 실패를 밖으로 내지 않는다. |
service/ImageSystemOutboundServiceTest.java이력4일 전 · #2048 | 테스트 | ImageSystemOutboundService 대상 테스트. |
service/ImageSystemRedistributionSynchronizerTest.java이력 | 테스트 | ImageSystemRedistributionSynchronizer 대상 테스트. |
service/ImageTransferFileCleanupServiceTest.java이력 | 테스트 | ImageTransferFileCleanupService 대상 테스트. |
service/ImageTransferFileStoreTest.java이력5일 전 · #1971 | 테스트 | 전송 파일 위치 계산을 서비스 없이 확인한다. |
service/ImageTransferIncomingSyncServiceTest.java이력 | 테스트 | ImageTransferIncomingSyncService 대상 테스트. |
service/ImageTransferReceptionServiceTest.java이력5일 전 · #1981 | 테스트 | 리포지토리는 ImageReceptionRepositoryFixture 의 인메모리 대역을 쓴다 — 이 테스트가 확인하는 것은 스냅샷 비교·상태 전이·워크플로우 연결 같은 서비스 로직이고, 실제 매핑/제약이 DB에서 성립하는지는 apps/hwss-api 의 영속화 통합 테스트가 맡는다 (docs/… |
service/ImageTransferTaskQueueServiceTest.java이력 | 테스트 | ImageTransferTaskQueueService 대상 테스트. |
service/ImageTransferTaskQueueWorkerTest.java이력 | 테스트 | ImageTransferTaskQueueWorker 대상 테스트. |
service/IncrementalClassificationScopeTest.java이력2일 전 · #2113 | 테스트 | 다시 분석 `증분` 의 대상 — 추가 인입뿐인가와 추가 낱장 고르기(결정 20261111-incremental-reanalysis-execution-unit). |
service/InstructTabByteLimitsTest.java이력2일 전 · #2130 | 테스트 | 조사건 보고서 탭의 byte 제한 — 건에 고정한 INSTRUCT 판에서 읽는다 (결정 20261102 5항). |
service/InsuredNameMatcherTest.java이력4일 전 · #1998 | 테스트 | InsuredNameMatcher 대상 테스트. |
service/InvestigationBusinessMetadataServiceTest.java이력 | 테스트 | InvestigationBusinessMetadataService 대상 테스트. |
service/InvestigationDeliveryChannelServiceTest.java이력 | 테스트 | InvestigationDeliveryChannelService — 보고서 기준으로 그 건 위탁사의 전송 방식을 읽고, 메일 발송 전에 검사한다 (결정 20260902-report-delivery-channel-selection 1·7항). |
service/InvestigationDisclosureLinkServiceTest.java이력 | 테스트 | InvestigationDisclosureLinkService — 보고서 기준으로 그 건 위탁사의 공시실 링크를 내려 준다 (2026-10-19 야간 NL01). |
service/InvestigationReceivedDateRangeTest.java이력 | 테스트 | 달력 날짜 → 절대 시각 구간 환산. |
service/InvestigationReportQueryServiceTest.java이력5일 전 · #1981 | 테스트 | 필터가 실제로 어떤 행을 걸러내는지는 Criteria 로 조립되어 DB 에서 평가되므로 여기서는 검증되지 않는다 — 그 부분은 InvestigationReportListApiTest(H2 PostgreSQL 모드)가 본다. |
service/InvestigationSettingsQueryServiceTest.java이력 | 테스트 | 조사자 화면이 그리는 설정은 그 건에 고정한 판이다(결정 20261028 4항). |
service/InvestigationSettingsServiceTest.java이력2일 전 · #2130 | 테스트 | 조사건 설정 스냅샷 — 인입 때 고정, 이전 건은 처음 읽을 때 고정 (docs/decisions/20261028-investigation-settings-snapshot-at-intake.md). |
service/InvestigationStartServiceTest.java이력 | 테스트 | 사용자 착수 두 지점(`AI 분류 시작`·`정보 추출 시작`)의 권한·상태 규칙 (2026-09-18 야간 NB05). |
service/InvestigatorStartLockTest.java이력 | 테스트 | InvestigatorStartLock 대상 테스트. |
service/KcdCodeTest.java이력6일 전 · #1941 | 테스트 | 청구병원 대표 상병의 KCD 정규화 — 결정 20261106-analysis-request-claim-hospitals 3항. |
service/LegacyStudioLabelsTest.java이력 | 테스트 | 옛 Studio 라벨 → 온톨로지 v2.0 문서종 전환표(docs/external/ontology/legacy-studio-label-mapping.csv)를 붙잡는다. |
service/PostgresReportTaskLockTest.java이력 | 테스트 | PostgresReportTaskLock 대상 테스트. |
service/PreviousTabVariablesTest.java이력6일 전 · #1958 | 테스트 | 앞 탭 결과 변수 — 옛 {{이전결과}} 는 바로 앞 탭의 변수로 읽는다 (결정 20261102-report-prompt-previous-tab-variables). |
service/ReanalysisServiceTest.java이력2일 전 · #2113 | 테스트 | `다시 분석` 의 범위 조회와 세 범위 실행 (S-012 §4·§5, 야간 20261002 NR01·NR02). |
service/ReanalysisWorkflowPropertyTest.java이력2일 전 · #2113 | 테스트 | 사고조사 워크플로우·`다시 분석` 규칙의 속성 기반 테스트 (S-004 §7 전이표 · S-012 §2·§4 · [20260921] 🟢 · [20261006] 🟢). |
service/ReanalysisWorkflowWorld.java이력2일 전 · #2113 | 클래스 | 속성 기반 테스트(ReanalysisWorkflowPropertyTest·ReportPageEditOrderPropertyTest)가 한 보고서를 무작위 행동으로 몰아갈 때 쓰는 메모리 세계. |
service/ReclassificationReservationServiceTest.java이력 | 테스트 | 재분류 예약 소비 판단 — 기다림·소비·폐기의 갈림을 본다(결정 20260910 1·2·3항, S-012 §3-1). |
service/ReportDeliveryLogQueryServiceTest.java이력 | 테스트 | 관리자 보고서 초안 전송 로그 조회. |
service/ReportDraftAiServiceTest.java이력 | 테스트 | 보고서 초안 AI 탭 작업의 상태 진행(결정 20261015 신규 에이전트 D4). |
service/ReportDraftLlmServiceTest.java이력6일 전 · #1958 | 테스트 | 보고서 초안 LLM 직접 호출의 탭 사슬·재시도·중복 방지(결정 20261020 「결정」 1~7항). |
service/ReportDraftServiceTest.java이력7일 전 · #1921 | 테스트 | W12 보고서 초안의 본문 조립 규칙. |
service/ReportEvidenceSourcesTest.java이력6일 전 · #1962 | 테스트 | 요약근거 → 낱장 출처 (결정 20261029 3항). |
service/ReportMailDispatchLogServiceTest.java이력 | 테스트 | 관리자 메일 발송 로그 조회 (야간 플랜 20261005 NM01). |
service/ReportMailServiceTest.java이력4일 전 · #2044 | 테스트 | W13 보고서 메일 발송 — 항목의 완료 조건이 "발송 포트 목 테스트(실제 SMTP 호출 없음)" 라 여기가 그 자리다. |
service/ReportOutputSchemaTest.java이력6일 전 · #1958 | 테스트 | 출력 골격 → JSON Schema 변환·검증·키 매칭 보정(결정 20261020 「실측 2」 2절, 「결정」 4~6항). |
service/ReportPageEditOrderPropertyTest.java이력 | 테스트 | 스캔 문서함 `편집 저장`(ReportPageEditService)과 조회 겹쳐 보기(ReportPageEditOverlay)의 속성 기반 테스트 (S-012 §4-0 「표시 순서 계약」, [20261007] 🟢 편집 저장 계약). |
service/ReportPageEditOverlayTest.java이력 | 테스트 | 저장된 낱장 편집을 문서함 목록에 겹쳐 보는 규칙 (야간 20261006 NP02). |
service/ReportPageEditServiceTest.java이력 | 테스트 | 스캔 문서함 낱장 편집 저장 (야간 20261006 NP01). |
service/ReportPageImageRendererTest.java이력 | 테스트 | 어떤 형식을 그대로 내고 어떤 형식을 바꾸는지, 바꾼 그림이 원본과 같은지를 본다 — 응답 헤더·오류 봉투는 ReportPageImageApiTest(apps/hwss-api) 몫이다. |
service/ReportPageImageServiceTest.java이력 | 테스트 | 파일 위치 결정과 방어 로직을 본다 — 세션 필터·실제 스트리밍·오류 봉투는 ReportPageImageApiTest(apps/hwss-api, H2) 몫이다. |
service/ReportPromptTemplatesTest.java이력 | 테스트 | 보고서 프롬프트 템플릿 조립(결정 20261020 「결정」 7항, 20261023-report-llm-studio-instruct-source). |
service/ReportPromptVariablesTest.java이력6일 전 · #1958 | 테스트 | 분석 요청 → 보고서 프롬프트 변수 값. |
service/ReportReflectionPromptTest.java이력 | 테스트 | 반영 요청 글·출력 스키마·응답 검증 — 시나리오 B2~B4, C2, C3, C5 (설계서 사고조사 4번·템플릿 5번). |
service/ReportReflectionServiceTest.java이력 | 테스트 | AI 보고서 반영 엔진 — 시나리오 A(막는 조건)·B(요청 조립)·C2~C4(변경 없음·검증 실패·플랫폼 실패)·D(원장). |
service/ReportSummaryGroupQueryServiceTest.java이력4일 전 · #2052 | 테스트 | 보고서 요약 탭 그룹 구획 조회 — 마지막(대체되지 않은) 묶음의 그룹 행을 구획으로. |
service/ReportSummaryGroupSectionsTest.java이력4일 전 · #2031 | 테스트 | 요약 그룹 결과 → 초안 「요약」 구역 (결정 20261106 「한화손사 회신」 2항). |
service/ReportTaskLockConnectionPoolTest.java이력 | 테스트 | ReportTaskLockConnectionPool 대상 테스트. |
service/ReportTaskSequencerTest.java이력 | 테스트 | ReportTaskSequencer 대상 테스트. |
service/ReportTemplateFixtures.java이력 | 클래스 | 테스트용 템플릿 출처 — 모델팀 신한(SHL)·롯데(LOT) 3탭 원문(10/15 수령본)을 테스트 리소스 report-prompt-fixtures/ 에서 읽는다. |
service/ReportTemplateServiceTest.java이력 | 테스트 | W15 보고서 양식 설정 — 항목의 완료 조건이 "버전·활성 규칙 유닛 테스트" 라 여기가 그 자리다. |
service/ReportTextFormatSamplesTest.java이력4일 전 · #2029 | 테스트 | 위탁사 양식 파일마다 시험 입력(report-text-format-samples//.json)을 찍어 기대 글(.txt)과 대조한다 (결정 20261106-report-text-format-by-insurer). |
service/ReportTextFormatServiceTest.java이력4일 전 · #2029 | 테스트 | 초안 구역 글을 위탁사·탭 양식으로 바꾸는 연결 (결정 20261106-report-text-format-by-insurer). |
service/ReportTransferPayloadComposerTest.java이력 | 테스트 | 전달 JSON 의 구조 (S-014 §8) — 본문·스냅샷·참조 전용·제외 섹션의 취급과 조사자 전용 항목의 null. |
service/ScanPdfFileLookupTest.java이력 | 테스트 | 원본을 지운 낱장의 플랫폼 파일 찾기(결정 20261013-scan-pdf-preupload). |
service/ScanPdfPreparationListenerTest.java이력 | 테스트 | ScanPdfPreparationListener 대상 테스트. |
service/ScanPdfPreparationServiceTest.java이력7일 전 · #1922 | 테스트 | ScanPdfPreparationService 대상 테스트. |
service/SheetNumbersTest.java이력 | 테스트 | SheetNumbers 대상 테스트. |
service/SmartReviewTransferPayloadComposerTest.java이력7일 전 · #1912 | 테스트 | 스마트심사 전달 JSON 조립 — 값은 전부 가상이다. |
service/SmartReviewTransferSamplesTest.java이력7일 전 · #1912 | 테스트 | 스마트심사 전달 JSON 의 위탁사별 샘플(S-015 docs/specs/smart-review-transfer/samples/, 모델팀 2026-11-06 골격)을 실제 투영기 → 조립기로 되만든다. |
service/SmartReviewTransferServiceTest.java이력4일 전 · #2044 | 테스트 | 보고서 스마트심사 전송 — 수신 API 포트를 목으로 두고 게이트·회차·기록·전이를 본다. |
service/StudioInstructTemplateSourceTest.java이력 | 테스트 | 에이전트 스튜디오 INSTRUCT 설정 → 보고서 템플릿 (결정 20261023-report-llm-studio-instruct-source). |
service/SummaryConfirmationTest.java이력3일 전 · #2055 | 테스트 | 요약 확정 전이 — 확정 → 검수(인라인 수정 + 반영 체크) → 초기화. |
service/SummaryGroupPromptRendererTest.java이력 | 테스트 | SummaryGroupPromptRenderer 대상 테스트. |
service/SummaryGroupServiceTest.java이력6일 전 · #1954 | 테스트 | 요약 그룹 저장 규칙(결정 20261019 4·5항) — 변경 반영과 저장을 막는 그룹 문제. |
service/SummaryHumanDraftTest.java이력3일 전 · #2055 | 테스트 | 조사자 판단(HUMAN) 항목이 AI 초안을 받은 뒤의 적재 결과 — 20261007 결정 6항 · S-014 §5. |
service/SummarySectionDraftBytesTest.java이력2일 전 · #2130 | 테스트 | 검수 단계 구역 byte 를 초안 구역 글 기준으로 센다 — 두 단계가 같은 숫자를 보인다. |
service/SummarySkeletonServiceTest.java이력 | 테스트 | 골격 저장소 — 범위별 활성 하나, 새 버전 저장, 위탁사 → 공통 폴백, 정의 검증. |
statistics/BackfillCommandTest.java이력 | 테스트 | 재적재 명령 본문의 검증·기본값·기간 환산(ST04). |
statistics/BackfillTargetsTest.java이력 | 테스트 | 재적재 대상 집합 계산(ST04) — 세 원천의 합집합·전송 시각 우선순위·정렬·원천 없는 보고서번호. |
statistics/BusinessStatisticsQueryServiceTest.java이력 | 테스트 | 업무 통계 조회(ST03-B) — 차원 해석(404)·기간 역전(400)·정규화된 조건 전달·순위·비율·표기 폴백·캐시(히트/만료/끔/상한). |
statistics/BusinessStatisticsQueryTest.java이력 | 테스트 | 조회 조건 정규화(ST03-B) — 같은 뜻의 요청이 같은 값(캐시 키)이 되고, 기본·상한·역전 규칙이 한 곳에 있다. |
statistics/ContentionRetryTest.java이력 | 테스트 | 경합 재시도 골격(DP08 — 세 호출부가 공유) — 일시 오류만 상한까지 다시 돌리고, 그 밖의 예외와 상한을 넘긴 경합은 그대로 올린다. |
statistics/ErrorIncidentQueryServiceTest.java이력 | 테스트 | 오류/장애 현황 — 서비스·유형·일자 묶음, 메일·빈 코드 처리, 안내 문구, 장애 설정, 목록 상한, 서울 달력 기간. |
statistics/ExtractionQualityStatisticsQueryServiceTest.java이력 | 테스트 | 추출 완료율 조회 서비스(NE02) — 합계 열에서 완료율로 가는 산식과 조건 정규화의 전달을 본다. |
statistics/ExtractionQualityStatisticsQueryTest.java이력 | 테스트 | 추출 완료율 조회 조건의 정규화(NE02) — 축 해석·기간 역전·위탁사/부서/검색어 정리·줄 수 기본과 상한. |
statistics/HospitalAddressRegionTest.java이력어제 · #2140 | 테스트 | HospitalAddressRegion 대상 테스트. |
statistics/HospitalAliasServiceTest.java이력3일 전 · #2082 | 테스트 | HospitalAliasService — 화면 기준선 `병원 명칭 매핑` 과 결정 20260910 §6 의 등재 규칙을 고정한다. |
statistics/HospitalMasterSyncServiceTest.java이력어제 · #2146 | 테스트 | HospitalMasterSyncService 대상 테스트. |
statistics/HospitalNameNormalizerTest.java이력 | 테스트 | HospitalNameNormalizer — 프로토타입 lib/hospital-matching.ts 의 정규화 규칙과 같은 판정이어야 한다. |
statistics/KcdDiseaseSearchServiceTest.java이력6일 전 · #1941 | 테스트 | 조사자용 상병(KCD) 검색 — 결정 20261106-analysis-request-claim-hospitals 4항. |
statistics/LifecycleBackfillServiceTest.java이력 | 테스트 | 생애주기 재적재 명령(결정 20261027) — 대기 실패 기록을 보고서별로 묶어 지점 순서로 다시 적재하고, 성공·이미 반영은 기록을 닫으며, 다시 실패하면 기록을 남기고 다음 지점으로 간다. |
statistics/LifecycleStatisticsQueryServiceTest.java이력 | 테스트 | 시스템 통계 조회(DP06) — 기간 역전(400)·정규화된 조건 전달·일별 행 그대로·기간 합계는 일별 벡터의 합에서 다시 계산(비율 평균이 아님)·빈 결과. |
statistics/LifecycleTotalsTest.java이력 | 테스트 | 합계 열 → 지표 산식(DP06) — 분모·반올림·분모 0·어긋난 롤업의 음수 방지·벡터 합. |
statistics/MainDiseaseCodeSelectorTest.java이력 | 테스트 | 메인 질병코드 판정(ST02) — 규칙 순서는 설정, 기본 "진단서 주진단 → 최다 빈도 → 최초 문서". |
statistics/ProcessingTimeStatisticsQueryServiceTest.java이력 | 테스트 | 처리시간 통계 조회 — 롤업 칸을 설정 경계(기본: 분포 5·10·15·20·30분, 매수 100·200·300쪽, 기준 10·12·15·20분)로 다시 묶는 계산. |
statistics/ReportLifecycleFactEntityTest.java이력 | 테스트 | ReportLifecycleFactEntity 대상 테스트. |
statistics/ReportLifecycleFactLoadListenerTest.java이력 | 테스트 | 생애주기 적재 진입점(DP04) — 세 이벤트를 순서 실행기(ReportTaskSequencer) 경유로 백그라운드에 넘기고, 일시 오류만 상한까지 다시 돌리며, 최종 실패는 로그와 실패 기록(결정 20261027)으로 남기고 예외를 밖으로 내지 않는다. |
statistics/ReportLifecycleFactLoaderTest.java이력6일 전 · #1949 | 테스트 | 생애주기 사실 적재(DP04)의 3지점 규칙 — 분류 시작(행 생성·재호출 무변경·재시작), 요약 완료(처리시간 규칙·페이지 수·품질 수치·재분석·근원), 전송 완료(시각·플래그), 앞 지점 실패의 자가 복구, 부서 스냅샷 승계, 포트 부재 동작. |
statistics/ReportStatFactEntityTest.java이력6일 전 · #1949 | 테스트 | ReportStatFactEntity 대상 테스트. |
statistics/ReportStatFactLoadListenerTest.java이력 | 테스트 | 전송 완료 후속 진입점(ST02) — 적재를 순서 실행기(ReportTaskSequencer) 경유로 백그라운드에 넘긴다. |
statistics/ReportStatFactLoaderTest.java이력6일 전 · #1949 | 테스트 | 통계 사실 적재(ST02)의 조립 규칙 — 추출 저장 항목 → 조합 행·메인 질병코드·미매핑 큐, 부서 스냅샷, 청구유형·증권번호, DELETE→INSERT 멱등과 버전 증가, 원천 스텁 표시 승계. |
statistics/ReportStatFactSourceReaderTest.java이력6일 전 · #1949 | 테스트 | 통계 적재의 원천 읽기(2026-09-04 Q2 — ReportStatFactLoader 에서 분리) — 문서함 순서 묶음·저장 정책·스텁 승계·청구유형· 페이지 수·부서 디렉터리. |
statistics/RetryingStatFactLoaderTest.java이력 | 테스트 | 적재 실행 골격(ST03-A 경합 재시도 → ST04 에서 분리) — 일시 오류만 상한까지 다시 돌리고, 최종 실패는 기록으로 남기며 예외를 밖으로 내지 않는다. |
statistics/ServiceStatusQueryServiceTest.java이력 | 테스트 | ServiceStatusQueryService 대상 테스트. |
statistics/StatDailyExtractionQualityContributionTest.java이력 | 테스트 | 추출 완료율 기여(NE01)의 계산 규칙 — 항목 하나가 두 축에 각각 한 번, 같은 문서종·같은 항목 이름은 한 행으로 합산(문서종이 달라도 항목 이름이 같으면 FIELD 축에서 한 행), 수정은 항목 단위 1, 항목이 없으면 행도 없다. |
statistics/StatDailyExtractionQualityQueryRepositoryTest.java이력 | 테스트 | 추출 완료율 롤업 조회 SQL 의 형태(NE02) — 테이블·축 필터·SUM 두 열·GROUP BY·모수 내림차순 정렬·줄 수 상한과 파라미터 순서를 고정한다. |
statistics/StatDailyExtractionQualityRollupServiceTest.java이력 | 테스트 | 추출 완료율 롤업 증분 갱신(NE01)의 두 면 — ① 기여를 어느 상태에서 세는가(지금 최신 / 직전 적재 시각 기준, 판정 전이면 빈 기여), ② SQL 경로(축 키마다 UPDATE 후 0행이면 INSERT, 차이 0 이면 아무것도 안 함, 키 이동은 옛 키 빼기·0 이면 삭제와 새 키 더하… |
statistics/StatDailyInvestigatorUsageRollupServiceTest.java이력 | 테스트 | 조사자별 이용량 롤업(2026-10-19) — 기여(사번 없으면 없음, 요청 1 · 요약 0/1)와 같은 칸의 차이만 더하는 경로. |
statistics/StatDailyLifecycleContributionTest.java이력 | 테스트 | 생애주기 롤업 기여 계산(DP05)의 규칙 — 요청 시각 축의 날짜 절단, 단계 도달 여부 0/1, 판정 전(NULL) 수치는 더하지 않음, 부서 공백은 NULL 축, 벡터 차이·부호 반전, 키 순서. |
statistics/StatDailyLifecycleQueryRepositoryTest.java이력 | 테스트 | 생애주기 롤업 조회 SQL 의 형태(DP06) — 테이블·SUM 열 열 개·필터 절·GROUP BY·정렬과 파라미터 순서·행 매핑을 고정한다. |
statistics/StatDailyLifecycleRollupServiceTest.java이력 | 테스트 | 생애주기 롤업 증분 갱신(DP05)의 SQL 경로 — 새 행은 UPDATE 후 0행이면 INSERT, 같은 키는 차이만 한 번의 UPDATE(차이 0 이면 아무것도 안 함), 키 이동은 옛 키 빼기(+0 이면 삭제)와 새 키 더하기를 키 순서로, 뺄 행이 없으면 경고만. |
statistics/StatDailyMeasureRollupStatementsTest.java이력 | 테스트 | 합계 열 증분형 롤업 SQL 조립 공통부 (2026-10-12 야간 Q2). |
statistics/StatDailyProcessingTimeRollupServiceTest.java이력 | 테스트 | 처리시간 구간 롤업(2026-10-19)의 세 면 — ① 칸 나누기(올림·상한 칸)가 마이그레이션 첫 적재 SQL 과 같은 규칙인지, ② 기여(판정 전이면 없음, 판정 뒤 한 칸), ③ SQL 경로(차이 0 이면 아무것도 안 함, 새 칸은 UPDATE 0행 뒤 INSERT, 칸 이동은 옛 칸 빼… |
statistics/StatDailyRollupAxisTest.java이력 | 테스트 | 일별 롤업 공통 축(DP08 — 7종·생애주기가 공유) — WHERE 절과 파라미터 순서·타입이 짝을 이룬다. |
statistics/StatDailyRollupContributionsTest.java이력6일 전 · #1949 | 테스트 | 롤업 기여 계산(ST03-A)의 규칙 — 날짜 절단(시간대 경계), 보고서 단위 DISTINCT, NULL 키 제외, 메인 질병코드 축. |
statistics/StatDailyRollupQueryRepositoryTest.java이력 | 테스트 | 롤업 조회 SQL 의 형태(ST03-B) — 차원별 테이블·GROUP BY 키·정렬·LIMIT·필터 절과 파라미터 순서를 고정한다. |
statistics/StatDailyRollupServiceTest.java이력 | 테스트 | 롤업 증분 갱신(ST03-A)의 SQL 경로 — 더하기는 UPDATE 후 0행이면 INSERT, 빼기는 UPDATE 후 0 행 삭제, 뺄 행이 없으면 경고만. |
statistics/StatDimensionKeyResolverTest.java이력 | 테스트 | 코드 변환(ST02) — 키 형식 → 마스터 → 별칭 → 정규화 대체 키 + 미매핑 사유 순서. |
statistics/StatDimensionLabelResolverTest.java이력 | 테스트 | 차원 키 → 대표 표기(ST03-B) — 마스터 3종은 키 집합 한 번에, 부서는 포트(없으면 건너뜀), 나머지는 찾지 않는다. |
statistics/StatDimensionMasterServiceTest.java이력4일 전 · #2036 | 테스트 | 차원 마스터 3종을 한 차원 enum 으로 다루는 층(ST05-A) — 존재 확인·등록·검색이 차원별 리포지토리로 갈리는지, 검색 패턴 이스케이프. |
statistics/StatFactLoadFailureEntityTest.java이력 | 테스트 | StatFactLoadFailureEntity 대상 테스트. |
statistics/StatTextTest.java이력 | 테스트 | 통계 패키지 공통 문자열 규칙(2026-09-04 Q2 통합) — 엔티티·키 변환기·처리 명령·적재기가 같은 결과를 받는지 고정한다. |
statistics/StatUnmappedQueueEntityTest.java이력 | 테스트 | StatUnmappedQueueEntity 대상 테스트. |
statistics/StatUnmappedQueueQueryServiceTest.java이력 | 테스트 | 미매핑 큐 목록(ST05-A) — 파라미터 정규화·묶음 → 행 조립·보고서번호 배치 채움·쪽 계산, 마스터 검색 위임. |
statistics/StatUnmappedResolveServiceTest.java이력 | 테스트 | 미매핑 큐 처리(ST05-A) — 동작 3종·예외 유형별·커밋 뒤 재적재 제출 순서. |
statistics/StatisticsBackfillServiceTest.java이력 | 테스트 | 재적재 명령(ST04)의 조립 — 대상 원천 조회·상한·순서 실행기 경유·결과 집계·롤업 재집계·누락 스캔. |
statistics/UsageStatisticsQueryServiceTest.java이력 | 테스트 | 이용 현황 조회 — 롤업 합계에 이름·팀·단·센터를 조회 시점 조직도로 붙이는 규칙(결정 20261019): 경로 [회사, 본부·실, 팀·단, 센터] 에서 셋째가 팀·단, 넷째가 센터. |
status/InvestigationStatusTransitionRetryTest.java이력 | 테스트 | InvestigationStatusTransitionRetry 대상 테스트. |
status/InvestigationStatusTransitionTest.java이력5일 전 · #1987 | 테스트 | S-004 §5·§7·§8 의 전이 규칙이 이 클래스 하나로 모여 있는지 확인한다. |
status/ReanalysisScopeResolverTest.java이력2일 전 · #2113 | 테스트 | `다시 분석` 범위 노출 규칙 (S-012 §4 · [20260921] 🟢, 야간 20261002 NR01). |
status/StepFailureMessagesTest.java이력어제 · #2137 | 테스트 | 단계 실패 코드 → 안내 문구. |
status/WorkflowStatusResolverTest.java이력4일 전 · #2007 | 테스트 | 화면 상태 파생 규칙(2026-09-18 결정, S-004 「화면 상태 파생 규칙」)의 매핑 테이블 — 11종 × 원천 조합, 허용 외 위험 조합 제거, 처리 실패 시 직전 단계 유지. |
storage/ImageTransferS3StoreTest.java이력 | 테스트 | ImageTransferS3Store 대상 테스트. |
summary/ReportTextRendererTest.java이력4일 전 · #2031 | 테스트 | 양식 노드·자리표시자 규칙 (결정 20261106-report-text-format-by-insurer, report-text-formats/README.md). |
summary/SummaryByteCountTest.java이력 | 테스트 | 위탁사 자료의 「영문+숫자 기준」 byte 셈 — ASCII 1, 그 밖 2 (프로토타입 koreanByteLength 와 같다). |
summary/SummaryComposerTest.java이력 | 테스트 | 기관 카드를 골격에 앉히는 규칙과 같은 기관 카드 병합 (S-014 §6·§9). |
summary/SummaryGroupPlannerTest.java이력 | 테스트 | 검수 구조를 요약 그룹별로 모으는 규칙(결정 20261019 「추가 2026-10-21」). |
summary/SummaryItemEvidenceTest.java이력7일 전 · #1912 | 테스트 | 항목별 요약근거 떼기·경로 모으기 (결정 20261029). |
summary/SummaryOutputConformanceTest.java이력 | 테스트 | 탭 응답 ↔ 출력 골격 형식 판정 (20261007 결정 10항). |
summary/SummaryOutputProjectorShapeCoverageTest.java이력7일 전 · #1912 | 테스트 | 출력 골격 깊이 상한(20261007 결정 11항)의 근거 — 최상위 객체·깊이 8 이하이면 어떤 모양이든 문자열 잎이 화면(기관명·소제목· 항목 라벨·내용) 어딘가에 나온다. |
summary/SummaryOutputProjectorTest.java이력6일 전 · #1958 | 테스트 | 탭 원형 JSON → 섹션·카드·줄 투영 (S-014 §9-1). |
summary/SummaryOutputSchemaBuilderTest.java이력 | 테스트 | 골격 → Studio 출력 골격(JSON Schema)·작성 지침 글 (S-014 §9). |
summary/SummarySkeletonMergerTest.java이력 | 테스트 | 청구유형 중복 선택 머지 규칙 (S-014 §3-1) — 골격 합집합, 지침 연결. |
summary/SummarySkeletonResolverTest.java이력 | 테스트 | 골격은 내장 기본값, 청구유형은 근거 분석 요청의 보고서 양식 코드 스냅샷 (S-014 §3). |
web/AdminSettingsControllerAuditTest.java이력 | 테스트 | 관리자 설정·마스터 데이터·통계 운영·로그 반출의 감사 기록 — docs/decisions/20261018-audit-event-scope-expansion.md. |
web/AgentStudioTestRunControllerTest.java이력3일 전 · #2091 | 테스트 | AgentStudioTestRunController 대상 테스트. |
web/HospitalMatchControllerTest.java이력3일 전 · #2082 | 테스트 | HospitalMatchController 대상 테스트. |
web/ReportDeliveryLogCsvColumnsTest.java이력 | 테스트 | ReportDeliveryLogCsvColumns 대상 테스트. |
web/ReportDisposalLogCsvColumnsTest.java이력 | 테스트 | ReportDisposalLogCsvColumns 대상 테스트. |
web/ReportMailDispatchLogCsvColumnsTest.java이력 | 테스트 | ReportMailDispatchLogCsvColumns 대상 테스트. |
modules/ · 도메인
modules/classification-core/GitHub
위탁사·분류 마스터 · 로직
위탁사·분류 마스터 · 로직 — 이미지시스템이 원천인 위탁사·폴더 분류 마스터를 보관하고, 폴더 ↔ 에이전트 분류 매핑을 관리한다. 외부 수신 표면은 investigation-core 가 갖고 이 모듈은 포트 구현으로 붙는다.
entity/6GitHub
JPA 엔티티 — 테이블 한 행을 매핑한다.
AgentDocumentTypeEntity.java이력90.5%오늘 · #2161 | 엔티티 | 에이전트(낱장) 분류 마스터 한 건 (S-007 §3-1 agent_document_types). |
CustomerCompanyEntity.java이력87.5%오늘 · #2161 | 엔티티 | 위탁사(고객사) 마스터 한 건 (S-007 §3-1 customer_companies). |
DisclosureLinkEntity.java이력86.7% | 엔티티 | 위탁사 한 곳의 공시실 링크 (위탁사 Workspace 4단계 `공시실 링크 설정`). |
DocumentTypeEntity.java이력93.8% | 엔티티 | 위탁사별 이미지시스템 폴더 분류 한 건 (S-007 §3-1 document_types). |
FolderClassificationMappingConfirmationEntity.java이력83.3% | 엔티티 | 위탁사 한 곳의 분류체계 매핑 확정 한 건 (folder_classification_mapping_confirmations, 2026-10-09 야간 NW01). |
FolderClassificationMappingEntity.java이력88.2%오늘 · #2161 | 엔티티 | 위탁사별 이미지시스템 폴더 ↔ 에이전트 분류 매핑 한 줄 (S-007 §3-1 folder_classification_mappings). |
exception/7GitHub
BusinessException 하위 도메인 예외 — 에러 코드와 HTTP 상태를 정한다.
AgentDocumentTypeNotFoundException.java이력100.0% | 예외 | 배정하려는 에이전트 분류가 마스터에 없거나 비활성일 때. |
ClassificationMappingRequiredException.java이력100.0% | 예외 | 배정이 한 건도 없는 상태로 최초 확정을 시도했을 때. |
CustomerCompanyNotFoundException.java이력100.0% | 예외 | 매핑 화면이 다루려는 위탁사가 마스터에 없을 때. |
DisclosureUrlRequiredException.java이력100.0% | 예외 | 공시실 URL 이 없는데 저장하거나 노출을 켜려 했을 때. |
DocumentTypeNotFoundException.java이력100.0% | 예외 | 배정 대상으로 지정한 폴더가 그 위탁사의 마스터에 없을 때. |
DuplicateAgentDocumentTypeAssignmentException.java이력100.0% | 예외 | 한 요청에 같은 (에이전트 분류, 폴더) 쌍이 두 번 이상 들어왔을 때. |
InactiveDocumentTypeAssignmentException.java이력100.0% | 예외 | 삭제된(비활성) 폴더로 새로 배정하려 할 때. |
integration/6GitHub
base 포트 구현체 — 다른 도메인·워크플로우 엔진이 이 모듈을 부르는 입구.
CustomerCompanyLookupPortImpl.java이력64.3% | 포트 구현 | CustomerCompanyLookupPort 의 실제 구현. |
DisclosureLinkLookupPortImpl.java이력100.0% | 포트 구현 | DisclosureLinkLookupPort 의 실제 구현 — 사용자 워크스페이스의 `공시실` 버튼이 읽는다. |
FolderPlacementLookupPortImpl.java이력28.6% | 포트 구현 | FolderPlacementLookupPort 의 실제 구현 — 관리자 매핑(folder_classification_mappings)과 폴더 묶음을 합친다. |
ImageMasterSyncPortImpl.java이력0.0% | 포트 구현 | ImageMasterSyncPort 의 실제 구현. |
ReportDeliveryChannelLookupPortImpl.java이력100.0% | 포트 구현 | ReportDeliveryChannelLookupPort 의 실제 구현 — 사용자 화면의 전송 버튼과 메일 발송 검사가 읽는다 (결정 20260902 7항). |
StudioDocumentTypeMasterPortImpl.java이력98.8%오늘 · #2161 | 포트 구현 | StudioDocumentTypeMasterPort 구현 — 에이전트 스튜디오 배포가 운영 문서종 마스터·분류체계 매핑을 맞춘다 (docs/decisions/20261112-studio-deploy-master-mapping-sync.md 2·5·6항). |
repository/7GitHub
Spring Data JPA 저장소 인터페이스.
CustomerCompanyCount.java이력100.0% | record | 위탁사 코드별 건수 — 위탁사 여러 곳의 행 수를 한 번의 GROUP BY 조회로 받을 때의 행. |
AgentDocumentTypeRepository.java이력오늘 · #2161 | 저장소 | 에이전트 분류 마스터 저장소. |
CustomerCompanyRepository.java이력오늘 · #2161 | 저장소 | 위탁사 마스터 저장소. |
DisclosureLinkRepository.java이력 | 저장소 | 공시실 링크 저장소. |
DocumentTypeRepository.java이력 | 저장소 | 위탁사별 문서분류 마스터 저장소. |
FolderClassificationMappingConfirmationRepository.java이력 | 저장소 | 분류체계 매핑 확정 이력 저장소. |
FolderClassificationMappingRepository.java이력오늘 · #2161 | 저장소 | 폴더 ↔ 에이전트 분류 매핑 저장소. |
service/7GitHub
비즈니스 로직과 트랜잭션 경계.
ClassificationMappingService.java이력99.5%오늘 · #2180 | 서비스 | ClassificationMappingService 의 JPA 구현. |
ClassificationMasterSyncService.java이력74.6% | 서비스 | ClassificationMasterSyncService 의 JPA 구현. |
CustomerCompanyQueryService.java이력100.0% | 서비스 | CustomerCompanyQueryService 의 JPA 구현. |
CustomerOnboardingService.java이력100.0%오늘 · #2161 | 서비스 | 위탁사 온보딩 상태 — 화면 기준선 `위탁사 워크스페이스` 의 4단계와 신규 위탁사 표시 (결정 20261017). |
DisclosureLinkService.java이력100.0% | 서비스 | 위탁사별 공시실 링크 마스터 (관리자 위탁사 Workspace 4단계 `공시실 링크 설정`). |
ReportDeliveryChannelService.java이력100.0% | 서비스 | 위탁사별 보고서 초안 전송 방식 저장 (결정 20260902-report-delivery-channel-selection 1·5~8항). |
FolderBundles.java이력100.0% | 클래스 | 위탁사 폴더의 번호 묶음 판정 — 저장된 묶음(folder_bundle_code·folder_bundle_ordinal)이 있으면 그것, 없으면 이름으로 짐작한다(결정 20261101-hospital-folder-bundle-overflow 2항). |
web/5GitHub
REST 컨트롤러 — HTTP 요청을 서비스로 넘기고 ApiResponse 로 감싼다.
ClassificationMappingController.java이력화면 /admin/classification-mappingsSwagger80.0% | API | 관리자 분류체계 매핑 API (야간 플랜 20260824 N02). |
CustomerCompanyController.java이력화면 미연결Swagger0.0% | API | 위탁사 마스터 조회 API (docs/rules/api.md 의 URL 패턴·표준 응답 구조). |
CustomerOnboardingController.java이력화면 미연결Swagger0.0% | API | 위탁사 온보딩 상태 조회 (결정 20261017-customer-onboarding-status-api). |
DisclosureLinkController.java이력화면 /admin/client-workspaceSwagger90.9% | API | 관리자 공시실 링크 API (화면 /admin/client-workspace 위탁사 Workspace 4단계 `공시실 링크 설정`). |
ReportDeliveryChannelController.java이력화면 미연결Swagger100.0% | API | 위탁사 보고서 초안 전송 방식 저장 API (화면 /admin/client-workspace 3단계, 결정 20260902 1·5~8항). |
빌드·리소스1GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력 | 빌드 | 이 모듈의 의존성 선언 — base, classification-shared 모듈 참조. |
resources/db/migration/21GitHub
Flyway 마이그레이션 SQL — 파일명 V<YYYYMMDDhhmm>__설명. 앱 기동 시 모든 모듈의 것이 버전 순으로 합쳐 실행된다.
src/test/14GitHub
테스트 파일 — 펼쳐서 보기
src/test/14GitHubmodules/ · 도메인
modules/collection-core/GitHub
지식컬렉션 · 로직
지식컬렉션 · 로직 — 개인/공용 컬렉션, 파일 업로드·검증·원본 저장(로컬, 설정 시 S3), 승인센터, 검색. 외부 AI 플랫폼은 base 의 Vector*Port 로만 부른다.
config/7GitHub
@ConfigurationProperties 설정 바인딩과 빈 구성 (application.yml hwss.* 블록).
CollectionBatchProperties.java이력100.0% | 설정 | 배치 색인 시간창과 서버별 작업자(docs/decisions/20261102-collection-batch-time-window.md). |
CollectionConfig.java이력50.0%2일 전 · #2093 | 설정 | 지식컬렉션 모듈 설정 활성화. |
CollectionIngestionProperties.java이력94.7% | 설정 | 지식컬렉션 적재 설정 — PDF 변환·500쪽 분할·배치 색인·개인 쪽 수 상한·원본 보관 (docs/decisions/20261013-file-ingestion-pdf-unification.md). |
CollectionOriginalStorageProperties.java이력100.0% | 설정 | 지식컬렉션 원본 파일 저장소 설정 (hwss.collection.original-storage). |
CollectionProperties.java이력90.9% | 설정 | 지식컬렉션 운영 설정 (야간 플랜 20260821 N04). |
CollectionStoreDescriptionProperties.java이력100.0% | 설정 | 공용 스토어 설명 생성 요청 값 — docs/decisions/20261016-collection-store-description-generate.md §3. |
CollectionStudioGroupProperties.java이력100.0%2일 전 · #2093 | 설정 | Studio 문서 파싱 구간에 맞춘 지식컬렉션 조각 크기(docs/decisions/20261110-collection-studio-group-size.md). |
entity/14GitHub
JPA 엔티티 — 테이블 한 행을 매핑한다.
CollectionFilePreviewStatus.java이력100.0% | enum | 컬렉션 파일 미리보기(앞 N쪽 PDF)의 상태 — collection_files.preview_status. |
VectorStoreScope.java이력100.0% | enum | 컬렉션의 플랫폼 Store(collections.vector_collection_id)를 누가 쓰는지. |
CollectionApprovalRequestEntity.java이력97.3% | 엔티티 | 승인센터가 처리하는 승인 요청 한 건 (collection_approval_requests). |
CollectionEntity.java이력92.2% | 엔티티 | 지식컬렉션 한 건 (collections). |
CollectionFileEntity.java이력96.2% | 엔티티 | 컬렉션에 등록된 파일 한 건 (collection_files). |
CollectionFilePartEntity.java이력90.0% | 엔티티 | 분할 단위(기본 500쪽)를 넘어 나눠 올린 컬렉션 파일의 조각 한 건 (collection_file_parts, docs/decisions/20261013-file-ingestion-pdf-unification.md §2-3). |
CollectionFileReferenceDefaultEntity.java이력77.8% | 엔티티 | 공용 지식컬렉션 위탁사별 참조 기본값 한 칸(collection_file_reference_defaults) — 켜진 (파일, 위탁사) 칸만 행이 있다 (docs/decisions/20261017-admin-knowledge-reference-defaults-tab.md §4). |
CollectionFolderEntity.java이력86.2% | 엔티티 | 지식컬렉션 폴더 한 건 (collection_folders) — docs/decisions/20261006-knowledge-collection-folder-structure.md. |
CollectionFolderVectorStoreEntity.java이력75.0% | 엔티티 | 공용 컬렉션 기준 폴더별 Vector Store (collection_folder_vector_stores) — 기준 폴더당 한 행. |
CollectionGuideEntity.java이력83.3% | 엔티티 | 지식컬렉션 등록 안내 (collection_guides) — 전역 한 벌이라 행이 하나(id = 1)뿐이다. |
CollectionOwnerVectorStoreEntity.java이력75.0% | 엔티티 | 사용자별 개인 컬렉션 Vector Store (collection_owner_vector_stores) — 사용자당 한 행. |
CollectionStoreDescriptionEntity.java이력95.3% | 엔티티 | 지식컬렉션 공용 스토어 하나의 설명(collection_store_descriptions) — docs/decisions/20261016-collection-store-description-generate.md, docs/decisions/20261016-collection-description… |
CollectionApprovalRequestFile.java이력91.7% | 클래스 | 전환 요청에 실린 파일 한 건 (collection_approval_request_files). |
CollectionFileIndexingFailureAuditor.java이력100.0% | 클래스 | 지식컬렉션 파일이 색인 실패로 바뀌면 감사 원장에 시스템 행위로 한 건 남긴다(AuditEventType#COLLECTION_FILE_INDEXING_FAILED). |
exception/28GitHub
BusinessException 하위 도메인 예외 — 에러 코드와 HTTP 상태를 정한다.
integration/3GitHub
base 포트 구현체 — 다른 도메인·워크플로우 엔진이 이 모듈을 부르는 입구.
CollectionDocumentCleanupScheduler.java이력100.0% | 클래스 | 색인 모드와 무관하게 두 AP 에서 DB 의 미완료 삭제를 이어받는다. |
CollectionIndexingPoller.java이력90.5% | 클래스 | 색인 진행 중인 지식컬렉션 파일의 상태를 주기적으로 되묻는 폴러 — 런타임 시작점이다(docs/rules/backend.md). |
KnowledgeScopePortImpl.java이력96.0% | 포트 구현 | KnowledgeScopePort 의 지식컬렉션 구현 — 채팅 본 답변의 file_search 범위와 의도 분류 후보를 우리 메타데이터로 정하고, 돌아온 출처를 우리 파일로 되돌린다 (docs/decisions/20261021-chat-two-stage-intent-file-search.md 3… |
repository/11GitHub
Spring Data JPA 저장소 인터페이스.
CollectionFileNameHit.java이력100.0% | DTO | 파일명 검색에서 걸린 파일 한 건 — 컬렉션·파일 식별자와 현재 파일명·색인 상태. |
CollectionFilePreviewSource.java이력100.0% | record | 미리보기를 만들 파일 한 건 — 원본 저장 키·파일명과 지금 미리보기 상태. |
CollectionIndexingTarget.java이력100.0% | record | 배치 색인 대상 파일 한 건 — 컬렉션과 파일 식별자. |
CollectionApprovalRequestRepository.java이력 | 저장소 | 승인 요청 저장소. |
CollectionFileReferenceDefaultRepository.java이력 | 저장소 | 공용 지식컬렉션 위탁사별 참조 기본값 — docs/decisions/20261017-admin-knowledge-reference-defaults-tab.md §4. |
CollectionFolderRepository.java이력 | 저장소 | 지식컬렉션 폴더 저장소. |
CollectionFolderVectorStoreRepository.java이력 | 저장소 | 공용 컬렉션 기준 폴더별 Vector Store 저장소 — 키는 기준 폴더 id 다. |
CollectionGuideRepository.java이력 | 저장소 | 등록 안내 저장소 — 행이 하나뿐이다(CollectionGuideEntity#SINGLETON_ID). |
CollectionOwnerVectorStoreRepository.java이력 | 저장소 | 사용자별 개인 컬렉션 Vector Store 저장소 — 키는 사번이다. |
CollectionRepository.java이력 | 저장소 | 지식컬렉션 저장소. |
CollectionStoreDescriptionRepository.java이력 | 저장소 | 공용 스토어 설명 — docs/decisions/20261016-collection-store-description-generate.md. |
service/30GitHub
비즈니스 로직과 트랜잭션 경계.
storage/4GitHub
업로드 파일 저장 — 로컬 디스크, 설정 시 S3.
DerivedFile.java이력100.0% | enum | 원본에서 만든 파생 파일 — 원본 저장 키 옆에 접미사를 붙여 둔다({저장 키}.preview.pdf). |
StoredCollectionFile.java이력100.0% | record | 로컬 저장소에 실제로 기록된 파일 한 건의 결과. |
CollectionFileStorage.java이력86.6% | 클래스 | 업로드된 컬렉션 파일을 로컬 디스크에 두는 저장소 (야간 플랜 20260821 N04). |
S3OriginalStore.java이력95.2% | 클래스 | 지식컬렉션 원본 파일의 S3 보관소. |
web/5GitHub
REST 컨트롤러 — HTTP 요청을 서비스로 넘기고 ApiResponse 로 감싼다.
CollectionApprovalController.java이력화면 /admin/approval-centerSwagger78.7% | API | 지식컬렉션 승인센터 API (야간 플랜 20260821 N05). |
CollectionController.java이력화면 미연결Swagger75.7%3일 전 · #2099 | API | 지식컬렉션 API (야간 플랜 20260821 N04). |
CollectionFolderController.java이력화면 미연결Swagger83.3% | API | 지식컬렉션 폴더 API (docs/decisions/20261006-knowledge-collection-folder-structure.md). |
CollectionGuideController.java이력화면 미연결Swagger77.8% | API | 지식컬렉션 등록 안내 API — 관리자 `등록 안내 설정` 과 사용자 파일 추가 모달의 `관리자 안내`. |
CollectionFilePreviewResponses.java이력0.0% | 클래스 | 미리보기 PDF 응답 — 지식컬렉션 화면과 승인센터가 같은 모양으로 내려준다. |
빌드·리소스1GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력 | 빌드 | 이 모듈의 의존성 선언 — base, collection-shared 모듈 참조. |
resources/db/migration/25GitHub
Flyway 마이그레이션 SQL — 파일명 V<YYYYMMDDhhmm>__설명. 앱 기동 시 모든 모듈의 것이 버전 순으로 합쳐 실행된다.
src/test/43GitHub
테스트 파일 — 펼쳐서 보기
src/test/43GitHubconfig/CollectionIngestionPropertiesTest.java이력 | 테스트 | CollectionIngestionProperties 대상 테스트. |
config/CollectionOriginalStorageConfigTest.java이력 | 테스트 | 원본 저장소 설정 — 종류 판정과 S3 보관소 빈 생성(접속 정보로 클라이언트를 만든다, 네트워크는 쓰지 않는다). |
config/CollectionPropertiesTest.java이력 | 테스트 | CollectionProperties 대상 테스트. |
entity/CollectionApprovalRequestEntityTest.java이력 | 테스트 | 승인 요청의 유형 분리와 처리 규칙 — 2026-08-19 리뷰 §4(반려 사유 필수·재요청 허용)와 2026-08-20 확정(공용 컬렉션 파일 추가는 전환과 별개 시나리오)을 코드로 고정한다. |
entity/CollectionEntityTest.java이력 | 테스트 | 컬렉션 루트의 상태 전이 규칙 — 2026-08-19 리뷰 §4(개인 즉시 사용 / 공용 승인 후 사용 / 관리자 콘솔 등록은 즉시 공용)와 2026-08-20 확정(전환은 승인 시점, 반려 시 개인으로 계속 사용)을 코드로 고정한다. |
entity/CollectionFileClaimPropertyTest.java이력 | 테스트 | CollectionFileClaimProperty 대상 테스트. |
entity/CollectionFileEntityTest.java이력 | 테스트 | 파일 인덱싱 상태 전이 — 특히 "실패 사유는 실패 상태에서만 남는다"는 불변을 고정한다. |
entity/CollectionFileIndexingFailureAuditorTest.java이력 | 테스트 | 색인 실패가 된 저장 뒤에 감사 원장에 시스템 행위·실패로 한 건 남긴다. |
integration/CollectionDocumentCleanupSchedulerTest.java이력 | 테스트 | CollectionDocumentCleanupScheduler 대상 테스트. |
integration/CollectionIndexingPollerTest.java이력 | 테스트 | 폴러는 고르고 하나씩 넘길 뿐이다 — 한 컬렉션의 예외가 나머지를 막지 않는지만 본다. |
integration/KnowledgeScopePortImplTest.java이력 | 테스트 | KnowledgeScopePortImpl 유닛 테스트 — 채팅 본 답변의 file_search 범위·의도 분류 후보·출처 되돌리기 (docs/decisions/20261021-chat-two-stage-intent-file-search.md 3·4·6항). |
service/CollectionAfterCommitTasksTest.java이력 | 테스트 | CollectionAfterCommitTasks 대상 테스트. |
service/CollectionApprovalServiceTest.java이력오늘 · #2188 | 테스트 | CollectionApprovalService 유닛 테스트 (야간 플랜 20260821 N05 완료 조건 — 상태 전이 승인/반려/재요청). |
service/CollectionBatchWindowTest.java이력 | 테스트 | 배치 시간창 판정 — 시작 포함·끝 제외, 자정 넘김, 시간대(docs/decisions/20261102-collection-batch-time-window.md). |
service/CollectionConversionDeferredAttachTest.java이력 | 테스트 | 개인 → 공용 통째 전환의 문서 붙이기를 승인 뒤 색인 주체로 미룬다 — docs/decisions/20261028-collection-conversion-deferred-attach.md. |
service/CollectionDocumentCleanupServiceTest.java이력 | 테스트 | CollectionDocumentCleanupService 대상 테스트. |
service/CollectionFileNameKeywordTest.java이력 | 테스트 | 파일명 검색어 정규화(CollectionService#fileNameKeyword). |
service/CollectionFilePreparerTest.java이력2일 전 · #2109 | 테스트 | CollectionFilePreparer — 변환에 쓴 원본 사본을 작업이 끝나면 돌려주는지(S3 보관이면 로컬에 원본을 남기지 않는다, docs/decisions/20261013-file-ingestion-pdf-unification.md §4). |
service/CollectionFilePreviewMakerTest.java이력 | 테스트 | CollectionFilePreviewMaker — 원본을 변환해 앞쪽만 잘라 원본 옆에 두고, 색인 대기 파일이면 변환본도 남긴다 (docs/decisions/20261014-collection-file-preview.md). |
service/CollectionFilePreviewServiceTest.java이력 | 테스트 | CollectionFilePreviewService — 저장해 둔 미리보기를 내주고, 없으면 원본에서 만들고, 그것도 안 되면 플랫폼 문서에서 자른다 (docs/decisions/20261014-collection-file-preview.md). |
service/CollectionFileRegistrarPageLimitTest.java이력 | 테스트 | 개인·공용 컬렉션 업로드는 쪽 수를 보지 않는다 — docs/decisions/20261013-file-ingestion-pdf-unification.md §5 개정(2026-10-16): 개인 컬렉션 쪽 수 상한(예전 1,000쪽)과 업로드 때 DocMate 쪽 수 검사를 없앴다. |
service/CollectionFileSummaryMappingTest.java이력 | 테스트 | 컬렉션 파일 행 → 화면 응답(CollectionFileSummary) 변환 유닛 테스트. |
service/CollectionFileUploadTest.java이력 | 테스트 | CollectionFileUpload 대상 테스트. |
service/CollectionFolderServiceTest.java이력 | 테스트 | CollectionFolderService 유닛 테스트 — 폴더 규칙(docs/decisions/20261006-knowledge-collection-folder-structure.md §3): 공용은 관리자만, 내 컬렉션은 소유자만, 파일이 적재된 폴더 아래 금지, 단계 상한, 형제 이름 중복… |
service/CollectionGuideServiceTest.java이력 | 테스트 | CollectionGuideService 대상 테스트. |
service/CollectionIndexingBatchServiceTest.java이력 | 테스트 | 파일 한 건 색인(CollectionIndexingBatchService#indexFile) — ① 선점을 먼저 커밋하고 ② 변환·업로드는 트랜잭션 밖에서, ③ 결과만 짧은 트랜잭션으로 쓴다(docs/decisions/20261016-collection-indexing-claim-commit.m… |
service/CollectionIndexingDispatcherTest.java이력 | 테스트 | CollectionIndexingDispatcher 대상 테스트. |
service/CollectionIndexingStatusServiceTest.java이력 | 테스트 | CollectionIndexingStatusService 유닛 테스트 — 진행 중 파일을 언제 되묻고 언제 닫는가. |
service/CollectionNamesTest.java이력 | 테스트 | 중복 판정 정규화 — 프로토타입 normalizeUploadFileName 과 같은 규칙(공백 제거·NFC·소문자). |
service/CollectionReferenceDefaultServiceTest.java이력오늘 · #2188 | 테스트 | 공용 지식컬렉션 위탁사별 참조 기본값 — 켜진 칸만 행, 보낸 위탁사만 통째로 교체, 완료 아닌 파일 409·지워진 파일 무시, 비활성 위탁사 400, 공용 컬렉션만, 감사 한 건(docs/decisions/20261017-admin-knowledge-reference-defaults-tab.m… |
service/CollectionSearchServiceTest.java이력 | 테스트 | CollectionSearchService 유닛 테스트 (docs/rules/testing.md). |
service/CollectionServiceTest.java이력3일 전 · #2099 | 테스트 | CollectionService 유닛 테스트 (docs/rules/testing.md — public 메서드마다 정상 1개 + 던질 수 있는 도메인 예외마다 1개). |
service/CollectionStoreDescriptionServiceTest.java이력 | 테스트 | 스토어 설명 — 스토어마다 한 행(공용: Studio 스토어, 개인: 사용자), 마지막 파일이 끝난 뒤 생성 API 한 번, 빈 스토어는 빈 설명, 실패만 남으면 유지, 429·실패 재시도, 사용자 수정 우선, 생성 대기 표시(docs/decisions/20261016-collection-sto… |
service/CollectionVectorGatewayIngestionTest.java이력2일 전 · #2093 | 테스트 | 색인 시점(즉시·배치)과 단위(PDF 변환·1,000쪽 겹침 분할) — docs/decisions/20261013-file-ingestion-pdf-unification.md §2·§4. |
service/CollectionVectorStoreCreationLockTest.java이력 | 테스트 | CollectionVectorStoreCreationLock 대상 테스트. |
service/SharedPlacementEvaluatorTest.java이력 | 테스트 | 공용 대상 평가 — 프로토타입 isValidSharedPlacement 와 같은 규칙. |
service/TestFilePreparers.java이력 | 클래스 | 서비스 유닛 테스트용 준비기 — 디스크를 건드리지 않는다. |
storage/CollectionFileStorageS3Test.java이력 | 테스트 | CollectionFileStorage 의 S3 보관 구성(docs/decisions/20261013-file-ingestion-pdf-unification.md §4) — 로컬 쓰기·복사·삭제가 S3 에도 같은 저장 키로 가는지, 로컬 사본이 없으면 S3 에서 채우는지, 다운로드는 S3 원본을 여는지. |
storage/CollectionFileStorageTest.java이력 | 테스트 | CollectionFileStorage — 실제 파일시스템에 쓰는 부분이라 임시 디렉터리로 검증한다. |
storage/S3OriginalStoreTest.java이력 | 테스트 | S3OriginalStore — 객체 키 규칙과 S3 요청 모양, 실패를 저장소 예외로 바꾸는지. |
web/CollectionApprovalDecisionAuditTest.java이력 | 테스트 | 승인·반려 실패는 거절까지 사유 코드로 남고, 성공은 서비스 몫이라 컨트롤러가 남기지 않는다(결정 20261103-confirm-approval-audit-failures). |
web/CollectionControllerAuditTest.java이력 | 테스트 | 지식컬렉션의 삭제·원본 반출·안내 변경 감사 기록 — docs/decisions/20261018-audit-event-scope-expansion.md. |
web/CollectionWorkAuditTest.java이력 | 테스트 | 지식컬렉션 작업(생성·파일 등록·이름 변경·설명 변경·승인 요청) 감사 기록 — docs/decisions/20261019-collection-work-audit-events.md. |
modules/ · 도메인
modules/organization-core/GitHub
조직·권한 · 로직
조직·권한 · 로직 — 조직도·사용자·레벨 5종 × 메뉴 권한, 그리고 인증 골격이 쓰는 세션·refresh 토큰·부수정보 저장 포트의 구현.
audit/1GitHub
감사 원장 적재 포트와 값 객체.
PermissionAuditRecorder.java이력100.0% | 클래스 | 권한·계정 부수정보 변경(사용자 레벨 교체·이메일 변경·메뉴 권한 저장)의 감사 원장 적재 — docs/specs/audit-event-catalog.md 「기록 중」. |
config/4GitHub
@ConfigurationProperties 설정 바인딩과 빈 구성 (application.yml hwss.* 블록).
OrganizationConfig.java이력0.0% | 설정 | 조직 모듈 설정 활성화. |
OrganizationDirectoryProperties.java이력100.0% | 설정 | 조직도 직원 표시 설정(hwss.organization.directory.*). |
OrganizationProperties.java이력100.0% | 설정 | 조직·사용자 도메인 운영 설정 (야간 플랜 20260828 N01). |
OrganizationScopeProperties.java이력100.0% | 설정 | 조회 범위 설정 (docs/decisions/20261020-level4-company-wide-scope.md). |
credential/8GitHub
인증 골격 포트 어댑터 — 세션, refresh 토큰, 사용자 부수정보.
AuthSessionEntity.java이력81.2% | 엔티티 | 세션 기록 1행 — V202610121623. |
RefreshTokenEntity.java이력66.7% | 엔티티 | refresh 토큰 원장 1행 — V202608260003. |
AuthSessionRepository.java이력 | 저장소 | 세션 기록 조회·갱신. |
RefreshTokenRepository.java이력 | 저장소 | refresh 토큰 원장 조회·폐기. |
OrganizationAuthSessionStoreAdapter.java이력100.0% | 포트 구현 | AuthSessionStorePort 의 JPA 구현 — 세션 기록(V202610121623). |
OrganizationRefreshTokenStoreAdapter.java이력93.1%5일 전 · #1970 | 포트 구현 | RefreshTokenStorePort 의 JPA 구현 — 회전·무효화 원장(V202608260003). |
OrganizationUserSupplementAdapter.java이력100.0% | 포트 구현 | UserSupplementLookupPort 의 JPA 구현 — 우리 DB 가 원장인 부수정보를 조합한다: 이메일은 user_supplements(사번당 1행), 권한은 user_roles(1:N) 의 대표 권한 (UserRoleSelector). |
OrganizationUserSupplementStoreAdapter.java이력100.0%오늘 · #2181 | 포트 구현 | UserSupplementStorePort 의 JPA 구현 — 온보딩이 부여하는 값을 두 테이블에 나눠 적는다: 이메일은 user_supplements(사번당 1행), 기본 권한은 user_roles(1:N 의 첫 행). |
entity/9GitHub
JPA 엔티티 — 테이블 한 행을 매핑한다.
DepartmentEntity.java이력100.0% | 엔티티 | 부서 한 개 (조직도 트리의 노드). |
OrganizationChangeTrackingEntity.java이력0.0% | 엔티티 | 조직 변경 사원 추적 설정 — 한 행(id = 1). |
RoleEntity.java이력72.7% | 엔티티 | 사용자 레벨 5종(IT 슈퍼관리자 · 본부장·실장 · 단장·팀장 · 센터장·파트장 · 일반사용자) 중 하나 — 순서·이름은 docs/decisions/20261014-role-level-order-and-names.md (단·팀이 센터보다 위). |
RoleMenuPermissionEntity.java이력94.4% | 엔티티 | 한 레벨이 특정 메뉴에 대해 가지는 사용 권한 (레벨 5종 × 메뉴 매트릭스의 셀 하나). |
UserChangeAcknowledgementEntity.java이력84.6% | 엔티티 | 사원별 조직 변경 확인 기록 — 관리자가 확인한 마지막 인사 변경일시. |
UserChangeHistoryEntity.java이력0.0% | 엔티티 | 로컬·CI 표본 — 사원별 최종 인사 변경일시. |
UserEntity.java이력93.3% | 엔티티 | 사용자(임직원) 한 명 — 라이브 디렉터리(스마트심사 뷰)가 대체할 값만 남긴 표본이다. |
UserRoleEntity.java이력66.7% | 엔티티 | 사용자 권한 레벨 한 건 — 사용자:권한 은 1:N 이다(2026-08-26 지시, V202608260002 분리). |
UserSupplementEntity.java이력80.0% | 엔티티 | 사용자 부가정보 1행 — 사번당 1행인 값(이메일)만 가진다. |
exception/15GitHub
BusinessException 하위 도메인 예외 — 에러 코드와 HTTP 상태를 정한다.
repository/9GitHub
Spring Data JPA 저장소 인터페이스.
DepartmentRepository.java이력 | 저장소 | 부서 조회. |
OrganizationChangeTrackingRepository.java이력 | 저장소 | 조직 변경 사원 추적 설정(한 행) 조회. |
RoleMenuPermissionRepository.java이력 | 저장소 | 레벨 × 메뉴 권한 조회. |
RoleRepository.java이력 | 저장소 | 사용자 레벨 조회. |
UserChangeAcknowledgementRepository.java이력 | 저장소 | 사원별 조직 변경 확인 기록 — 사번이 PK 라 기본 메서드로 충분하다. |
UserChangeHistoryRepository.java이력 | 저장소 | 로컬·CI 표본의 사원별 최종 인사 변경일시 — 스마트심사 미연결 환경의 폴백. |
UserRepository.java이력 | 저장소 | 사용자 조회. |
UserRoleRepository.java이력 | 저장소 | 사용자 권한 조회 — 역할은 LAZY 연관이라 UserRepository 와 같은 이유로 join fetch 로 한 번에 읽는다. |
UserSupplementRepository.java이력 | 저장소 | 사용자 부가정보 조회 — 사번이 PK 라 파생 쿼리 없이 기본 메서드로 충분하다. |
scope/3GitHub
OrganizationCollectionApprovalPolicyAdapter.java이력93.2% | 포트 구현 | CollectionApprovalPolicyPort 의 organization 쪽 구현 — 권한 매트릭스의 승인센터 행을 읽는다 (docs/decisions/20261006-collection-first-approval-level.md). |
OrganizationMenuPermissionLookupAdapter.java이력100.0% | 포트 구현 | MenuPermissionLookupPort 의 organization 쪽 구현 — API 인가 인터셉터가 매 요청 이 판정을 부른다 (docs/decisions/20261012-api-menu-authorization.md). |
OrganizationScopeAdapter.java이력93.6% | 포트 구현 | OrganizationScopePort 의 organization 쪽 구현 — 세션의 보유 레벨과 소속 부서를 부서 트리에 대조해 조회 범위(담당 조사자 사번 집합)를 만든다 (docs/decisions/20261020-level4-company-wide-scope.md 🟢 — 20260918… |
security/2GitHub
base 의 사용자 조회 포트 어댑터.
OrganizationUserAccountLookupAdapter.java이력100.0% | 포트 구현 | UserAccountLookupPort 의 organization 쪽 구현 — 인증이 알아낸 사번으로 세션에 담을 사용자 정보를 읽어준다. |
OrganizationUserEmailLookupAdapter.java이력100.0% | 포트 구현 | UserEmailLookupPort 의 organization 쪽 구현 — 사용자 이메일을 돌려준다. |
service/7GitHub
조직도·권한 조회와 레벨 부여·회수 로직.
MenuPermissionService.java이력99.5% | 서비스 | 레벨 × 메뉴 권한 조회·저장. |
OrganizationChangeService.java이력95.2% | 서비스 | 조직 변경 사원 — 소속·직책·직급이 바뀌어 관리자가 레벨을 다시 볼 사원을 고르고, 「변경 확인 완료」를 기록한다 (docs/decisions/20260827-orgchart-change-tracking.md 🟢). |
OrganizationService.java이력95.7% | 서비스 | 조직도·사용자 조회. |
UserEmailChangeService.java이력100.0% | 서비스 | 이메일(보고서 초안 수신 주소) 변경 — 본인 수정(내 정보)과 관리자 수정(조직도 직원 상세)이 같은 규칙을 쓴다 (docs/decisions/20261016-self-email-edit.md). |
UserProfileUpdateService.java이력100.0% | 서비스 | 관리자 조직도 상세 팝업에서 이메일과 사용자 레벨을 한 번에 저장한다. |
UserRoleAssignmentService.java이력98.6% | 서비스 | 사용자 레벨 마스터 조회 + 보유 레벨 부여·회수. |
UserRoleSelector.java이력66.7% | 클래스 | 보유 권한 정렬 규칙 — 사용자:권한 은 1:N 이고(V202608260002) 목록은 항상 level_order 가 앞선(상위) 레벨부터 정렬한다. |
web/5GitHub
REST 컨트롤러 — HTTP 요청을 서비스로 넘기고 ApiResponse 로 감싼다.
DepartmentController.java이력화면 /admin/dashboard/lifecycle화면 /admin/organizationSwagger0.0% | API | 조직도 조회 API (docs/rules/api.md 의 URL 패턴·표준 응답 구조). |
MenuPermissionController.java이력화면 /admin/permissionsSwagger0.0% | API | 사용자 레벨 × 메뉴 권한 API. |
OrganizationChangeController.java이력화면 /admin/organizationSwagger0.0% | API | 조직도의 조직 변경 사원 — 스마트심사 인사 변경(소속·직책·직급)으로 레벨을 다시 볼 사원 현황과 「변경 확인 완료」 (docs/decisions/20260827-orgchart-change-tracking.md 🟢). |
RoleController.java이력화면 /admin/organizationSwagger0.0% | API | 사용자 레벨 마스터 조회 API. |
UserController.java이력화면 /admin/organization화면 /user/profileSwagger0.0% | API | 사용자 조회 + 시스템 부수정보(이메일·보유 레벨) 편집 API. |
빌드·리소스1GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력 | 빌드 | 이 모듈의 의존성 선언 — base, organization-shared 모듈 참조. |
resources/db/migration/24GitHub
Flyway 마이그레이션 SQL — 파일명 V<YYYYMMDDhhmm>__설명. 앱 기동 시 모든 모듈의 것이 버전 순으로 합쳐 실행된다.
src/test/17GitHub
테스트 파일 — 펼쳐서 보기
src/test/17GitHubmodules/ · 도메인
modules/audit-core/GitHub
감사 원장 · 로직
감사 원장 · 로직 — 행위자·시각·이벤트·대상·결과를 담는 범용 원장. base 의 AuditTrailPort 구현으로만 붙는다.
config/2GitHub
@ConfigurationProperties 설정 바인딩과 빈 구성 (application.yml hwss.* 블록).
AuditViewConfig.java이력0.0% | 설정 | 감사 로그 화면 표시 설정 등록 — AuditViewProperties. |
AuditViewProperties.java이력100.0% | 설정 | 감사 로그 화면 표시 설정 — 어떤 이벤트 종류를 관리자 감사 로그 화면·CSV 에서 보이지 않게 둘지 (docs/decisions/20261023-business-action-audit-events.md). |
exception/1GitHub
BusinessException 하위 도메인 예외 — 에러 코드와 HTTP 상태를 정한다.
AuditLogSearchPeriodException.java이력100.0% | 예외 | 기간 필터의 시작이 끝보다 늦을 때. |
exchange/5GitHub
IntegrationExchangeService.java이력43.1% | 서비스 | 연동 교환 기록의 적재·조회·정리 (docs/decisions/20261023-integration-exchange-log.md). |
IntegrationExchangeEntity.java이력60.9% | 엔티티 | 연동 교환 기록 한 행 — 추가만 되고 바뀌지 않는다(보관 기간이 지나면 정리 작업이 통째로 지운다). |
IntegrationExchangeNotFoundException.java이력100.0% | 예외 | 없는 교환 기록 id (404). |
IntegrationExchangeSearchPeriodException.java이력100.0% | 예외 | 기간 시작이 끝보다 늦을 때 — 빈 결과와 구분하기 위해 400 으로 알린다(감사 원장과 같은 이유). |
IntegrationExchangeRepository.java이력 | 저장소 | 연동 교환 기록 리포지토리 — 조건이 전부 선택이라 Specification 으로 조립한다(감사 원장과 같은 판단). |
port/1GitHub
base 포트 구현체.
AuditTrailPortAdapter.java이력0.0% | 포트 구현 | AuditTrailPort 의 구현체 — 업무 도메인이 base 인터페이스로만 원장을 부르게 하는 자리 (docs/guides/backend-module-guide.md §5). |
service/2GitHub
비즈니스 로직과 트랜잭션 경계.
AuditTrailService.java이력89.2% | 서비스 | 감사 원장의 적재와 조회 (야간 플랜 20260824 N04). |
AuditLogSpecifications.java이력3.2% | 클래스 | 조회 조건 → JPA Criteria 조건. |
web/3GitHub
REST 컨트롤러 — HTTP 요청을 서비스로 넘기고 ApiResponse 로 감싼다.
AuditLogController.java이력화면 /admin/audit-logsSwagger68.4% | API | 관리자 감사 로그 조회 API (야간 플랜 20260824 N04). |
IntegrationExchangeController.java이력화면 /admin/audit-logsSwagger0.0% | API | 관리자 연동 교환 기록 조회 API (docs/decisions/20261023-integration-exchange-log.md). |
AuditLogCsvColumns.java이력100.0% | 클래스 | 감사 로그 CSV 열 — AuditLogView 의 필드와 순서·범위가 1:1 이다(목록 API 가 내리는 값 그대로, 더하지도 빼지도 않는다). |
빌드·리소스1GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력 | 빌드 | 이 모듈의 의존성 선언 — base, audit-shared 모듈 참조. |
resources/db/migration/5GitHub
Flyway 마이그레이션 SQL — 파일명 V<YYYYMMDDhhmm>__설명. 앱 기동 시 모든 모듈의 것이 버전 순으로 합쳐 실행된다.
V202608240001__create_audit_log.sql이력 | 마이그레이션 | 감사 원장 (야간 플랜 20260824 N04) — 관리자 "전체 로그" 메뉴의 저장소. |
V202609160001__comment_audit_schema.sql이력 | 마이그레이션 | 감사 원장의 테이블·컬럼 설명을 DB 메타데이터(COMMENT)로 옮긴다. |
V202610071900__unify_mail_account_audit_event.sql이력 | 마이그레이션 | 발송 계정 설정 감사 이벤트 통합 (2026-10-07 사용자 확정). |
V202610231800__create_integration_exchanges.sql이력 | 마이그레이션 | 연동 교환 기록 (docs/decisions/20261023-integration-exchange-log.md) — 이미지시스템·Studio 와 오간 요청·응답 본문의 저장소. |
V202611032000__add_audit_logs_request_id.sql이력 | 마이그레이션 | 감사 로그 요청 ID — 결정 docs/decisions/20261103-audit-log-screen.md. |
src/test/5GitHub
테스트 파일 — 펼쳐서 보기
src/test/5GitHubexchange/IntegrationExchangeServiceTest.java이력 | 테스트 | IntegrationExchangeService 대상 테스트. |
service/AuditEventClassificationTest.java이력 | 테스트 | AuditEventClassification 대상 테스트. |
service/AuditTrailServiceTest.java이력 | 테스트 | AuditTrailService 의 적재·조회 유닛 테스트 (야간 플랜 20260824 N04). |
web/AuditLogControllerExportAuditTest.java이력 | 테스트 | 감사 로그 CSV 반출의 감사 기록(LOG_EXPORTED) — 검색 조건 값은 남기지 않는다. |
web/AuditLogCsvColumnsTest.java이력 | 테스트 | AuditLogCsvColumns 대상 테스트. |
modules/ · 도메인
modules/workflow-core/GitHub
워크플로우 엔진 · 로직
워크플로우 엔진 · 로직 — 업무 도메인을 모르는 범용 엔진. 단계 정의를 DB 데이터로 두고 해석·실행하며, 실제 업무는 base 의 WorkflowStepWorkPort 구현체에 위임한다.
config/2GitHub
@ConfigurationProperties 설정 바인딩과 빈 구성 (application.yml hwss.* 블록).
WorkflowConfig.java이력100.0% | 설정 | 워크플로우 모듈 설정 바인딩. |
WorkflowDefinitionProperties.java이력100.0% | 설정 | 워크플로우 정의 선택 설정 (hwss.workflow.*). |
definition/1GitHub
WorkflowDefinitionSelector.java이력85.7% | 클래스 | 새 실행이 쓸 워크플로우 정의를 고른다. |
engine/2GitHub
워크플로우 엔진 본체.
WorkflowEngine.java이력 | 인터페이스 | DB 정의 기반 파이프라인 엔진 (docs/decisions/20260804-workflow-engine-db-pipeline.md). |
WorkflowEngineImpl.java이력95.5%6일 전 · #1936 | 클래스 | WorkflowEngine 구현 — DB 단계 정의를 해석해 핸들러 실행·게이트 판정·실행 이력 기록. |
entity/4GitHub
JPA 엔티티 — 테이블 한 행을 매핑한다.
WorkflowDefinitionEntity.java이력77.8% | 엔티티 | 워크플로우 정의(버전 단위). |
WorkflowExecutionEntity.java이력94.5%6일 전 · #1936 | 엔티티 | 보고서별 실행 인스턴스. |
WorkflowStepEntity.java이력83.9% | 엔티티 | 단계 정의. |
WorkflowStepExecutionEntity.java이력87.5% | 엔티티 | 단계 실행 1회(attempt)의 이력. |
exception/5GitHub
BusinessException 하위 도메인 예외 — 에러 코드와 HTTP 상태를 정한다.
AmbiguousWorkflowDefinitionException.java이력100.0% | 예외 | 같은 정의 코드에 활성 버전이 2개 이상일 때. |
WorkflowDefinitionNotFoundException.java이력100.0% | 예외 | 실행하려는 정의 코드에 활성(active) 버전이 하나도 없을 때. |
WorkflowExecutionAlreadyRunningException.java이력100.0% | 예외 | 보고서에 이미 진행 중(RUNNING/WAITING_USER) 실행이 있는데 새 실행을 시작하려 할 때 (S-007 §4-2 원칙 5 — 보고서 단위 진행 중 실행은 1개). |
WorkflowExecutionNotFoundException.java이력100.0% | 예외 | 진행 중인 실행이 없는 보고서에 대해 다음 단계 진행을 요청했을 때. |
WorkflowStepHandlerNotFoundException.java이력100.0% | 예외 | 단계 정의의 handler_bean 이 가리키는 핸들러 bean 이 이 앱 조합에 없을 때. |
gate/3GitHub
단계 진입 전 선행 조건 판정.
GateDecision.java이력100.0% | record | 게이트 판정. |
WorkflowStepGate.java이력 | 인터페이스 | 단계 공통 선행 조건(pre-step gate). |
PortBackedStepGate.java이력100.0% | 클래스 | WorkflowStepGate 의 유일한 구현체. |
handler/6GitHub
단계 핸들러 계약과 레지스트리.
StepContext.java이력100.0% | record | 단계 핸들러에 넘기는 실행 컨텍스트. |
StepResult.java이력75.0% | record | 단계 핸들러의 실행 결과. |
WorkflowStepHandlerRegistry.java이력100.0% | 클래스 | workflow_steps.handler_bean 문자열을 실제 핸들러 bean 으로 바꿔주는 레지스트리. |
NoopStepHandler.java이력0.0% | 핸들러 | 아무 일도 하지 않고 성공만 돌려주는 스텁 핸들러. |
PortBackedStepHandler.java이력100.0% | 핸들러 | 단계의 실제 업무를 업무 도메인이 등록한 WorkflowStepWorkPort 에 되묻는 범용 핸들러. |
WorkflowStepHandler.java이력 | 핸들러 | 단계 하나가 실제로 하는 일. |
integration/2GitHub
base 포트 구현체 — 다른 도메인·워크플로우 엔진이 이 모듈을 부르는 입구.
WorkflowLauncherPortImpl.java이력100.0% | 포트 구현 | WorkflowLauncherPort 의 실제 구현. |
WorkflowProgressPortImpl.java이력98.7% | 포트 구현 | WorkflowProgressPort 의 실제 구현. |
repository/2GitHub
Spring Data JPA 저장소 인터페이스.
WorkflowDefinitionRepository.java이력 | 저장소 | 단계(WorkflowStepEntity)는 별도 Repository 를 두지 않는다 — 애그리게이트 루트인 정의를 통해서만 접근한다 (docs/guides/backend-module-guide.md §3-2). |
WorkflowExecutionRepository.java이력 | 저장소 | WorkflowExecutionEntity 저장소 (Spring Data JPA 인터페이스). |
빌드·리소스1GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력 | 빌드 | 이 모듈의 의존성 선언 — base, workflow-shared 모듈 참조. |
resources/db/migration/3GitHub
Flyway 마이그레이션 SQL — 파일명 V<YYYYMMDDhhmm>__설명. 앱 기동 시 모든 모듈의 것이 버전 순으로 합쳐 실행된다.
V202608190003__create_workflow.sql이력 | 마이그레이션 | S-007 §3-3 워크플로우 엔진 도메인. |
V202609160003__comment_workflow_schema.sql이력 | 마이그레이션 | 워크플로우 엔진 테이블·컬럼 설명 (근거: docs/decisions/20260916-db-schema-doc-generation.md). |
V202609160013__comment_workflow_timestamps.sql이력 | 마이그레이션 | 워크플로우 실행 시각 컬럼 설명 (V202609160003 에서 빠진 것). |
src/test/7GitHub
테스트 파일 — 펼쳐서 보기
src/test/7GitHubdefinition/WorkflowDefinitionSelectorTest.java이력 | 테스트 | 새 실행이 쓸 정의 고르기 — 버전을 고정하지 않으면 활성 버전, 고정하면 활성 표시와 무관하게 그 버전. |
engine/InvestigationMainPipelineTest.java이력 | 테스트 | W05. |
engine/WorkflowEngineImplTest.java이력6일 전 · #1936 | 테스트 | 엔진 유닛 테스트. |
gate/PortBackedStepGateTest.java이력 | 테스트 | 게이트가 업무 도메인 포트에 되묻는지 — 판정 자체는 포트가 한다. |
handler/PortBackedStepHandlerTest.java이력 | 테스트 | 범용 핸들러가 단계 코드로 업무 포트를 찾아 위임하는지 — 2026-09-03 N02 의 배치 결정(도메인 핸들러는 base 포트로 붙는다)을 엔진 쪽에서 고정한다. |
integration/WorkflowLauncherPortImplTest.java이력 | 테스트 | 업무 도메인이 쓰는 WorkflowLauncherPort 구현체. |
integration/WorkflowProgressPortImplTest.java이력 | 테스트 | 읽기 포트 유닛 테스트. |
modules/ · 도메인
modules/chat-core/GitHub
챗봇 · 로직
챗봇 · 로직 — 에이전트·사고조사 챗봇의 대화, 첨부, 근거, 보관 파기.
config/6GitHub
@ConfigurationProperties 설정 바인딩과 빈 구성 (application.yml hwss.* 블록).
ChatAttachmentProperties.java이력94.7% | 설정 | 챗봇 첨부파일 사전 검사의 운영 제한값. |
ChatConfig.java이력50.0% | 설정 | 에이전트 채팅 설정 바인딩. |
ChatContextProperties.java이력100.0% | 설정 | 범용 대화 용량(docs/decisions/20261102-agent-chat-context-capacity.md) — 직전 답변의 사용량을 한도에 견줘 안내하고 잠근다. |
ChatRetentionProperties.java이력100.0% | 설정 | 범용 채팅 원문·직접 첨부 보관 배치 설정. |
ChatSourceProperties.java이력100.0% | 설정 | 답변 근거 칩을 고르는 기준(hwss.chat.sources.*) — 결정 docs/decisions/20261021-chat-two-stage-intent-file-search.md 6항 「근거 칩 고르는 기준」. |
ChatStatisticsProperties.java이력100.0% | 설정 | 챗봇 이용 통계(S-007 §3-4 「챗봇 이용 통계」 — 시스템 통계 「챗봇 질의 건수」·「질의 답변 응답 속도」)의 설정 (hwss.statistics.chat.*). |
entity/11GitHub
JPA 엔티티 — 테이블 한 행을 매핑한다.
ChatAttachmentStatus.java이력100.0% | enum | 챗봇 첨부파일의 외부 파일 저장소 준비 상태. |
ChatSessionKind.java이력100.0% | enum | 대화 종류 — 범용 에이전트 채팅과 사고조사 챗봇이 같은 저장소를 쓰고 이 값으로 가른다 (docs/decisions/20261023-investigation-chat-session-structure.md 1항). |
ChatSourceDraft.java이력100.0% | record | 답변 줄에 붙일 근거 하나 — Studio 출처를 우리 식별자로 되돌린 값(ChatService). |
ChatAttachmentEntity.java이력86.4% | 엔티티 | 채팅 메시지에 아직 연결하지 않은 첨부파일 준비 이력. |
ChatAttachmentSetEntity.java이력93.3% | 엔티티 | 멀티턴 채팅이 다음 질문에서도 재사용할 첨부 묶음 한 판. |
ChatAttachmentSetItemEntity.java이력83.3% | 엔티티 | 첨부 묶음 안의 파일 한 건. |
ChatMessageEntity.java이력95.2% | 엔티티 | 대화 한 줄 — 질문이거나 답변이다. |
ChatMessageSourceEntity.java이력84.8% | 엔티티 | 답변 근거 하나. |
ChatSessionCollectionEntity.java이력72.7% | 엔티티 | 대화가 배경지식으로 쓰는 컬렉션 하나. |
ChatSessionEntity.java이력98.6%4일 전 · #2040 | 엔티티 | 대화 세션 하나 — 애그리게이트 루트. |
ChatSessionFileEntity.java이력72.7% | 엔티티 | 대화가 배경지식으로 좁혀 쓰는 문서 하나. |
exception/18GitHub
BusinessException 하위 도메인 예외 — 에러 코드와 HTTP 상태를 정한다.
investigation/5GitHub
InvestigationCitation.java이력100.0% | record | 사고조사 챗봇 답변 한 턴의 Studio 출처 하나 — 플랫폼 식별자 그대로다(우리 파일로 되돌리는 것은 호출자 몫). |
InvestigationSourceBlock.java이력100.0%5일 전 · #1970 | record | 사고조사 챗봇 답변 한 턴의 근거 블록과 AI 보고서 반영 버튼 여부 (결정 20261021 4항, 통합 설계 v0.5 사고조사 3번). |
InvestigationTurnSources.java이력100.0% | record | 사고조사 챗봇 답변 한 턴을 화면 모양으로 — 섞여 온 보고서 참조 줄을 지운 본문과 근거 블록. |
InvestigationTurnPrompt.java이력100.0% | 클래스 | 사고조사 챗봇 질문 한 턴을 공통 채팅 포트 입력(ChatPrompt)으로 조립한다 — 통합 설계 v0.3 사고조사 3·4번, 지시문 순서는 v0.5 프롬프트 템플릿 2번. |
ReportReferenceLine.java이력100.0% | 클래스 | 사고조사 챗봇 답변에 섞여 온 보고서 참조 줄()을 지운다 — 출처로 세지 않는다. |
repository/6GitHub
Spring Data JPA 저장소 인터페이스.
ChatSessionSummaryRow.java이력100.0% | DTO | 사용 내역 한 행의 투영 — 줄 수와 마지막 시각을 집계로 받는다. |
InvestigationUsageRow.java이력100.0% | DTO | 사용 내역의 사고조사 한 건 — 보고서번호와 마지막 줄 시각만 읽는다. |
ChatRetentionCandidate.java이력100.0% | record | 보관 기간을 지난 채팅 세션 후보. |
ChatAttachmentRepository.java이력 | 저장소 | ChatAttachmentEntity 저장소 (Spring Data JPA 인터페이스). |
ChatAttachmentSetRepository.java이력 | 저장소 | ChatAttachmentSetEntity 저장소 (Spring Data JPA 인터페이스). |
ChatSessionRepository.java이력4일 전 · #2040 | 저장소 | 대화 저장소 — 범용 에이전트 채팅과 사고조사 챗봇이 함께 쓴다(결정 20261023 1항). |
service/29GitHub
비즈니스 로직과 트랜잭션 경계.
statistics/3GitHub
통계 star schema — 사실 적재, 일별 롤업, 조회, 미매핑 큐, 재적재.
ChatStatisticsQueryService.java이력100.0% | 서비스 | 챗봇 이용 통계 조회 (S-007 §3-4 「챗봇 이용 통계」) — 시스템 통계 「챗봇 질의 건수」·「질의 답변 응답 속도」. |
ChatStatisticsRollupService.java이력100.0%5일 전 · #1970 | 서비스 | 챗봇 이용 통계의 일별 롤업 두 개(V202610201000)를 질문·답변 저장과 같은 트랜잭션에서 하나씩 더한다 (S-007 §3-4 「챗봇 이용 통계」). |
ChatStatisticsQueryRepository.java이력6.7% | 저장소 | 챗봇 이용 통계 롤업 두 개의 기간 조회 (S-007 §3-4 「챗봇 이용 통계」). |
web/4GitHub
REST 컨트롤러 — HTTP 요청을 서비스로 넘기고 ApiResponse 로 감싼다.
ChatController.java이력화면 /user/agentSwagger40.6% | API | 에이전트 채팅 API (야간 20260930 NX01). |
ChatStatisticsController.java이력화면 /adminSwagger0.0% | API | 관리자 시스템 통계 — 챗봇 이용 통계 조회 API (S-007 §3-4 「챗봇 이용 통계」). |
InvestigationChatController.java이력화면 미연결Swagger0.0% | API | 사고조사 챗봇 — 보고서 아래 경로(docs/decisions/20261023-investigation-chat-session-structure.md 4항). |
ChatAnswerStreamer.java이력96.4% | 클래스 | 답변 스트림 한 건을 돌린다(docs/decisions/20261102-agent-chat-answer-streaming.md). |
resources/db/migration/18GitHub
Flyway 마이그레이션 SQL — 파일명 V<YYYYMMDDhhmm>__설명. 앱 기동 시 모든 모듈의 것이 버전 순으로 합쳐 실행된다.
src/test/45GitHub
테스트 파일 — 펼쳐서 보기
src/test/45GitHubconfig/ChatConfigTest.java이력 | 테스트 | ChatConfig 대상 테스트. |
config/ChatContextPropertiesTest.java이력 | 테스트 | ChatContextProperties — 범용 대화 용량(결정 20261102). |
config/ChatSourcePropertiesTest.java이력 | 테스트 | ChatSourceProperties — 근거 칩 고르는 기준(결정 20261021 6항). |
config/ChatStatisticsPropertiesTest.java이력 | 테스트 | 챗봇 이용 통계 설정 — 기본 구간은 시트 30행(10·30·60초), 경계는 1~3600 오름차순, 시간대 기본 서울. |
entity/ChatAnswerOriginTestSupport.java이력 | 클래스 | 다른 패키지 테스트가 근거 행(패키지 생성자)을 만들어 위치 저장·읽기를 보게 하는 도우미. |
entity/ChatMessageTurnRecordTest.java이력 | 테스트 | 답변 줄의 턴 기록 — 쓴 지시문 판 묶음과 사고조사 반영 근거 조건(결정 20261023 지시문 DB 7항). |
entity/ChatSessionGeneratedTitleTest.java이력 | 테스트 | 플랫폼이 만든 제목 반영(통합 설계 v0.4 범용 7번) — 부탁한 맥락·플랫폼 대화일 때만 바꾸고, 빈 제목은 버린다. |
entity/ChatSessionKindTest.java이력 | 테스트 | 대화 종류·보고서번호와 첨부의 대화 묶기 (결정 20261023 1·8항). |
entity/ChatSessionKnowledgeTest.java이력4일 전 · #2040 | 테스트 | 대화의 검색 범위 교체(사고조사·범용) — 남는 줄은 그대로 두고 순서만 고친다(유니크 충돌 방지). |
investigation/InvestigationCitationTest.java이력 | 테스트 | InvestigationCitation 대상 테스트. |
investigation/InvestigationSourceBlockTest.java이력 | 테스트 | 근거 묶기·반영 버튼 — 시나리오 B (결정 20261021 4항, 통합 설계 v0.5 사고조사 3번 — 보고서는 출처에서 뺐다, S3~S5). |
investigation/InvestigationTurnPromptTest.java이력 | 테스트 | 사고조사 턴 조립 — 시나리오 A4~A9 (통합 설계 v0.3 사고조사 3·4번, 결정 20261021 8항), 지시문 순서 B1~B4 (v0.5 템플릿 2번). |
investigation/InvestigationTurnSourcesSaasReplayTest.java이력 | 테스트 | SaaS 실측 재생 — 2026-10-21 사고조사 ② 전문(solar-pro4, 합성 보고서, 마스킹 접수) 20턴에서 모델이 실제로 낸 참조 줄과 출처 수를 그대로 넣어 본다. |
investigation/ReportReferenceLineTest.java이력 | 테스트 | 섞여 온 보고서 참조 줄 지우기 — 시나리오 S1·S2 (통합 설계 v0.5 「참조 줄 폐기」, 결정 20261021 3항 2026-11-05 개정). |
service/ChatAnswerStreamingTest.java이력 | 테스트 | 답변 스트림(docs/decisions/20261102-agent-chat-answer-streaming.md) — 조각을 넘기고, 저장은 완성본으로 끝난 뒤 한 번이다. |
service/ChatAttachmentContentServiceTest.java이력 | 테스트 | ChatAttachmentContentService 대상 테스트. |
service/ChatAttachmentInspectionServiceTest.java이력 | 테스트 | ChatAttachmentInspectionService 대상 테스트. |
service/ChatAttachmentPreparationServiceTest.java이력 | 테스트 | ChatAttachmentPreparationService 대상 테스트. |
service/ChatAttachmentSelectionServiceTest.java이력 | 테스트 | ChatAttachmentSelectionService 대상 테스트. |
service/ChatBusyMarkerTest.java이력 | 테스트 | 답변 대기 중 표시 — 찍은 시각으로만 지운다(docs/decisions/20261030-chat-conversation-delete.md 4항). |
service/ChatContextCapacityTest.java이력 | 테스트 | 범용 대화 용량과 구분선(docs/decisions/20261102-agent-chat-context-capacity.md) — 직전 답변의 사용량이 잠금 비율에 이르면 Studio 를 부르지 않고 거절하고, 구분선 뒤에는 새 플랫폼 대화·빈 이력으로 다시 시작한다. |
service/ChatDeletionEntityTest.java이력 | 테스트 | 삭제가 쓰는 대화·줄 상태 — 마지막 쌍 떼기·비우기·진행 중 판정·반영 칸(docs/decisions/20261030-chat-conversation-delete.md). |
service/ChatDeletionServiceTest.java이력 | 테스트 | 대화 전체 삭제·마지막 질문 삭제 — 순서·남기는 것·거절(docs/decisions/20261030-chat-conversation-delete.md). |
service/ChatExchangeAppenderSessionBindingTest.java이력 | 테스트 | 저장 단계의 첨부 재확인 — 다른 대화에 묶인 첨부는 없는 첨부와 같다(결정 20261023 8항). |
service/ChatHistoryRetentionSchedulerTest.java이력 | 테스트 | ChatHistoryRetentionScheduler 대상 테스트. |
service/ChatHistoryRetentionServiceTest.java이력 | 테스트 | ChatHistoryRetentionService 대상 테스트. |
service/ChatHistoryRetentionWorkerTest.java이력 | 테스트 | ChatHistoryRetentionWorker 대상 테스트. |
service/ChatKnowledgeChangeTest.java이력 | 테스트 | 진행 중 범용 대화의 검색 범위 변경(docs/decisions/20261019-agent-knowledge-picker-file-unit.md 「개정 2026-10-28」) — 본인 범용 대화만, 턴 한도에 이른 대화와 볼 수 없는 범위는 저장하지 않고 거절하며, 바꾼 범위는 다음 질문의 검색… |
service/ChatServiceTest.java이력 | 테스트 | ChatService 유닛 테스트 (docs/rules/testing.md). |
service/ChatSourceRegionsTest.java이력 | 테스트 | 근거 위치 — 플랫폼 위치 옮기기, 같은 쪽 위치 합치기, 검색 근거 위치 끄기(저장 단계). |
service/ChatStatisticsWiringTest.java이력 | 테스트 | 챗봇 이용 통계의 원천 연결 — 질문한 때의 부서를 조직 범위 포트로 찾아 두 줄에 남기고, 저장과 같은 트랜잭션에서 롤업을 더한다. |
service/ChatTitleGeneratorTest.java이력 | 테스트 | ChatTitleGenerator 유닛 테스트 — 언제 제목을 부탁하는지(범용·맥락의 첫 턴·플랫폼 대화가 있을 때만), 실패·빈 제목·늦게 온 제목에서 지금 제목을 지키는지. |
service/ChatTurnScopesTest.java이력 | 테스트 | 턴 범위 스냅샷 — 저장 글자 왕복·읽을 수 없는 값·질문 줄 한정·응답 싣기 (시나리오 S4·S5). |
service/ChatUsageServiceTest.java이력 | 테스트 | 사용 내역의 사고조사 건 — 제목 조합·검색·없어진 보고서·정렬 (시나리오 U3·U5·U9·U10). |
service/InvestigationChatAskTest.java이력 | 테스트 | 사고조사 챗봇 질문 — 판정·첫 질문 때 대화 만들기·턴 위임 (시나리오 Q1~Q5, Q11·Q12 의 반영 버튼). |
service/InvestigationChatAttachmentServiceTest.java이력 | 테스트 | 사고조사 챗봇 첨부 — 판정·대화 만든 뒤 묶어 올리기·출처 PDF (시나리오 T1~T4, T8). |
service/InvestigationChatKnowledgeTest.java이력 | 테스트 | 사고조사 챗봇 대화 중 검색 범위 변경 — 판정·검증·대화 만들기·교체 (시나리오 K1~K8). |
service/InvestigationChatPurgeServiceTest.java이력 | 테스트 | 보고서 삭제 연동 — 순서·실패 시 DB 보존·없는 포트 (시나리오 P1·P2·P4~P6). |
service/InvestigationChatReflectionServiceTest.java이력 | 테스트 | 사고조사 챗봇 AI 보고서 반영 — 판정·재료 모으기·결과 옮기기 (시나리오 R1~R9). |
service/InvestigationChatServiceTest.java이력 | 테스트 | 사고조사 챗봇 패널 열기 — 시나리오 C1~C9 (docs/decisions/20261023-investigation-chat-session-structure.md 4항). |
service/InvestigationTurnTest.java이력 | 테스트 | 사고조사 턴 — 답변 재료(사건 Store 싣기)와 출처 → 근거 행(시나리오 Q6~Q10, Q13). |
statistics/ChatStatisticsQueryServiceTest.java이력 | 테스트 | 챗봇 이용 통계 조회 — 구간 경계(이하는 아래 구간), 비율, 사람 × 부서 묶음과 조직 이름, 기간·부서 조건. |
statistics/ChatStatisticsRollupServiceTest.java이력 | 테스트 | 챗봇 롤업 증분 — 0 건 행을 먼저 세우고(충돌이면 아무것도 안 함) 더한다, 일자는 설정 시간대의 달력, 응답 소요시간이 없으면 응답 롤업은 건드리지 않는다, 소요시간은 초 단위 올림. |
web/ChatAnswerStreamerTest.java이력 | 테스트 | 답변 스트림 한 건 — 이벤트 순서, 오류 이벤트, 끊긴 연결(docs/decisions/20261102-agent-chat-answer-streaming.md). |
web/ChatControllerTest.java이력 | 테스트 | ChatController 대상 테스트. |
modules/ · 인프라 어댑터
modules/aiplatform-core/GitHub
외부 AI 플랫폼 어댑터
외부 AI 플랫폼 어댑터 — Studio·DocMate 어댑터(shared 없음) — base 의 벡터 스토어, 채팅, 문서 분류·추출·요약·보고서, 문서 변환 포트를 구현한다. provider none 은 in-memory.
(루트)3GitHub
provider 선택과 어댑터 빈 구성.
AiPlatformProvider.java이력100.0% | enum | 어느 AI 플랫폼 구현을 붙일지 고르는 값 (hwss.ai-platform.provider). |
AiPlatformConfig.java이력83.3% | 설정 | AI 플랫폼 어댑터 빈 구성. |
AiPlatformProperties.java이력100.0% | 설정 | AI 플랫폼 연동 설정 (hwss.ai-platform.*). |
docmate/3GitHub
DocMate 문서 변환 어댑터.
DocMateConfig.java이력100.0% | 설정 | DocMate 변환 어댑터 빈 구성 — hwss.document-conversion.provider=docmate 일 때만 활성화된다. |
DocMateProperties.java이력90.0% | 설정 | DocMate 접속·변환 설정 — hwss.document-conversion.provider=docmate 일 때만 읽는다 (docs/decisions/20261013-file-ingestion-pdf-unification.md §1-2). |
DocMateDocumentConverter.java이력92.8% | 클래스 | DocMate 로 DocumentConversionPort 를 구현한다 (docs/decisions/20261013-file-ingestion-pdf-unification.md §1-2). |
inmemory/2GitHub
외부 호출 없는 in-memory 벡터 저장소.
InMemoryVectorStoreAdapter.java이력97.2% | 포트 구현 | 외부 호출 없는 in-memory 벡터 저장소 (hwss.ai-platform.provider=none). |
StubChatModelAdapter.java이력100.0% | 포트 구현 | ChatModelPort 의 스텁 — 플랫폼 채팅을 켜지 않았을 때(기본)의 어댑터. |
studio/35GitHub
업스테이지 Studio(v2) 연동 어댑터.
StudioChatPrompts.java이력100.0%4일 전 · #2030 | record | 에이전트 대화에 싣는 설정 값 — ① 의도 게이트의 모델·툴 이름과 범용 ③ 본 답변 문구(통합 설계 v0.5 「프롬프트 템플릿」 1번의 {{변수}} 자리). |
StudioConfig.java이력69.5%어제 · #2132 | 설정 | Studio 어댑터 빈 구성 — hwss.ai-platform.provider=studio 일 때만 활성화된다. |
StudioProperties.java이력96.4% | 설정 | 업스테이지 Studio(v2) 접속 설정 (hwss.ai-platform.studio.*). |
StudioReportLlmProperties.java이력100.0% | 설정 | Studio 보고서 초안 LLM 직접 호출 설정 (docs/decisions/20261020-report-generation-llm-input-job.md 「결정」 3항). |
StudioReportProperties.java이력100.0% | 설정 | Studio 보고서 생성 에이전트 설정 (docs/decisions/20261015-studio-saas-v2-agents-adoption.md D4). |
StudioSummaryGroupProperties.java이력100.0%5일 전 · #1994 | 설정 | Studio 요약(Agent D) — 요약 그룹마다 1회 부르는 경로의 설정 (docs/decisions/20261019-studio-summary-tab-doc-groups.md 「추가 2026-10-21」, 통합 설계 v0.3 「Agent D 요약」). |
StudioAgentConfigCompatibility.java이력93.3%5일 전 · #1988 | 클래스 | Studio 지시서 짝의 이어 실행 가능 여부 — 뒤 단계 Import 가 고른 형태에 앞 단계 지시서의 결과가 있는지 (docs/decisions/20261108-studio-config-pair-repin.md). |
StudioAgentConfigContent.java이력99.0% | 클래스 | Studio 지시서(Config) 응답에서 관리자 스키마 화면에 채울 값만 읽는다(docs/decisions/20261102-studio-config-sync-fill-screen.md). |
StudioAgentConfigVersions.java이력90.3% | 클래스 | Studio 에이전트의 지시서(Config) 목록 — GET /agents/{agent_id}/configs?order=desc 를 끝까지 받는다 (Studio 규약 v1.6.5 「Configs」, docs/decisions/20261029-studio-config-version-list-fro… |
StudioAgentConfigs.java이력97.5%5일 전 · #1994 | 클래스 | 지금 설정된 Studio 에이전트·지시서 — 조사건 인입 때 건에 고정할 값(docs/decisions/20261028-investigation-settings-snapshot-at-intake.md 2항). |
StudioAgentDefaultConfigs.java이력96.9% | 클래스 | Studio Agent 의 지금 기본 Config — GET /agents/{agent} 의 default_config_id (docs/decisions/20261028-investigation-settings-snapshot-at-intake.md 「배포 판 고정」). |
StudioAnalysisOutputParser.java이력94.3% | 클래스 | 완료된 Studio Job 응답에서 요약(Instruct) 결과를 꺼낸다. |
StudioChatActive.java이력50.0% | 클래스 | Studio 채팅 어댑터가 등록되는 구성 — provider=studio 이고 studio.chat.enabled=true 일 때다. |
StudioClassificationOutputParser.java이력95.3%6일 전 · #1952 | 클래스 | 완료된 Studio Job 응답에서 분류 결과를 꺼낸다 (계약 회신 2026-09-23 — docs/notes/20260923-studio-classify-response-shape.md). |
StudioCollectionResolver.java이력93.3% | 클래스 | 지시서(Config)의 Export Collection(scol_…)을 Studio 에서 해석한다 — 검수 보정 결과 왕복의 저장소를 운영자가 설정으로 넣지 않아도 되게(docs/decisions/20260929-pipeline-correction-roundtrip.md §3). |
StudioDocumentErrors.java이력98.6%5일 전 · #1988 | 클래스 | Studio 호출 실패를 DocumentAiException 으로 접는다 — 문서 분류 어댑터 공통. |
StudioExtractionOutputParser.java이력97.3%5일 전 · #1992 | 클래스 | 완료된 Studio Job 응답에서 추출 결과를 꺼낸다. |
StudioImportShapes.java이력85.4%어제 · #2132 | 클래스 | 뒤 단계 지시서의 Import 형태 맞춤 — Studio 구현(docs/decisions/20261111-studio-import-shape-regeneration.md). |
StudioIndexingStatusMapper.java이력85.7% | 클래스 | 플랫폼 인덱싱 상태 문자열 → VectorIndexingStatus 접기. |
StudioJobPoll.java이력93.2%어제 · #2137 | 클래스 | Studio(v2) background Job 상태 조회 공통 — 분류·추출·요약 어댑터의 poll 이 쓴다. |
StudioJobReviewRoundtrip.java이력89.2% | 클래스 | Studio(v2) Job 검수 JSON(collection-results/11) 으로 검수 보정을 되돌려 놓는 왕복 — StudioResultCorrectionAdapter 가 Collection 이 이 방식을 지원할 때 위임한다 (docs/decisions/20261006-collection… |
StudioPipelineV2Active.java이력81.8% | 클래스 | 사고조사 파이프라인 v2 를 쓰는 환경인가 — hwss.workflow.definition-versions[INVESTIGATION_MAIN]=2 (AI_PLATFORM_STUDIO_PIPELINE_VERSION=2, docs/decisions/20261021-investigation-pipel… |
StudioSourceFiles.java이력100.0% | 클래스 | Step 결과 additional_values.source_files — 여러 파일을 한 Job 에 넣었을 때 병합 문서 기준 page_ranges 를 원본 파일 기준으로 환산한 값(Studio v1.6.4, 문서 responses.md 「통합 입력의 페이지 좌표」). |
StudioTargetEnvironmentPostProcessor.java이력96.6% | 클래스 | Studio 접속 대상을 이름 하나로 갈아 끼우는 장치 (AI_PLATFORM_STUDIO_TARGET). |
StudioAnalysisAdapter.java이력90.8% | 포트 구현 | Studio(v2) Responses 로 DocumentAnalysisPort 를 구현한다 — 앞선 추출 Job 을 이어받아 요약(Instruct) background Job 을 맡기고 폴링한다. |
StudioCaseDocumentStoreAdapter.java이력100.0% | 포트 구현 | 공통 분류 에이전트의 Store 를 사건 서류 Store 로 준다 — GET /agents/{분류 에이전트} 의 vector_store_id (docs/decisions/20261021-investigation-chat-references-and-reflection.md 8항). |
StudioChatAdapter.java이력98.9%7일 전 · #1914 | 포트 구현 | Studio 채팅 어댑터 — 질문 하나에 ① 의도 게이트 → ② 컬렉션 라우팅 → ③ 본 답변 세 호출 (docs/decisions/20261021-chat-two-stage-intent-file-search.md 10항, 통합 설계 v0.4 범용 챗봇 1번). |
StudioClassificationAdapter.java이력92.2% | 포트 구현 | Studio(v2) Responses 로 DocumentClassificationPort 를 구현한다 — 분류 에이전트에 background Job 을 맡기고 폴링한다. |
StudioDocumentFileAdapter.java이력93.7% | 포트 구현 | Studio(v2) Files 로 DocumentFilePort 를 구현한다. |
StudioExtractionAdapter.java이력94.5%2일 전 · #2113 | 포트 구현 | Studio(v2) Responses 로 DocumentExtractionPort 를 구현한다 — 앞선 분류 Job 을 이어받아 추출 background Job 을 맡기고 폴링한다. |
StudioGroupSummaryAdapter.java이력88.3%2일 전 · #2113 | 포트 구현 | Studio(v2) 로 DocumentGroupSummaryPort 를 구현한다 — 요약 그룹마다 분류 Job 의 문서를 골라 요약(Agent D) Job 하나를 맡긴다(통합 설계 v0.3 「Agent D 요약」, 규약 v1.6.5 「문서·파일 선택 이어 실행」). |
StudioReportAdapter.java이력94.9% | 포트 구현 | 업스테이지 Studio 보고서 생성 에이전트 어댑터 (docs/decisions/20261015-studio-saas-v2-agents-adoption.md D4, 2026-10-15 실측). |
StudioReportLlmAdapter.java이력91.9%5일 전 · #1970 | 포트 구현 | 업스테이지 Studio 보고서 초안 LLM 직접 호출 어댑터 (docs/decisions/20261020-report-generation-llm-input-job.md 「결정」 3·6항, 2026-10-20 SaaS 실측 「실측」·「실측 2」). |
StudioResultCorrectionAdapter.java이력81.7%5일 전 · #1992 | 포트 구현 | Studio(v2) Collection 결과 왕복으로 DocumentResultCorrectionPort 를 구현한다 — 검수 보정을 Export Collection 의 우리 Job 결과에 되돌려 놓고 이어 실행에 쓸 Job 을 돌려준다. |
StudioVectorStoreAdapter.java이력86.3% | 포트 구현 | 업스테이지 Studio(v2) Vector Stores 어댑터 (hwss.ai-platform.provider=studio) — 지식컬렉션 1개 = standalone vector store 1개. |
studio/dto/14GitHub
Studio Vector Stores 요청·응답 DTO 초안.
VectorStoreCreateRequest.java이력100.0% | DTO | POST /v2/vector_stores 요청 (studio-api-v260922 api/vector-stores.md 「Store 만들기와 관리」). |
VectorStoreDeleteResponse.java이력100.0% | DTO | 삭제 응답 {"id":…,"object":"vector_store.deleted","deleted":true} (실측 2026-09-28). |
VectorStoreDescriptionGenerateRequest.java이력100.0% | DTO | POST /v2/vector_stores/{vector_store_id}/description/generate 요청 — 업스테이지가 2026-10-16 연 설명 생성 API (docs/decisions/20261016-collection-store-description-generate.md 「실측」). |
VectorStoreFileBatchCreateRequest.java이력100.0% | DTO | POST /v2/vector_stores/{vector_store_id}/file_batches 요청 (studio-api-v260922 api/vector-stores.md 「File Batch」). |
VectorStoreFileBatchResponse.java이력100.0% | DTO | 파일 배치 한 건의 응답 표현 (studio-api-v260922 api/vector-stores.md 「File Batch」). |
VectorStoreFileCreateRequest.java이력100.0% | DTO | POST /v2/vector_stores/{vector_store_id}/files 요청 (studio-api-v260922 api/vector-stores.md 「File 색인」). |
VectorStoreFileResponse.java이력100.0% | DTO | 벡터 스토어 file membership 한 건의 응답 표현 (studio-api-v260922 api/vector-stores.md — 2026-09-28 실측 확인). |
VectorStoreFileUpdateRequest.java이력100.0% | DTO | POST /vector_stores/{id}/files/{file_id} 본문 — 색인된 파일의 속성만 교체한다(재임베딩 없음). |
VectorStoreModifyRequest.java이력100.0% | DTO | POST /v2/vector_stores/{vector_store_id} 수정 요청 (studio-api-v260922 api/vector-stores.md). |
VectorStoreResponse.java이력100.0% | DTO | 벡터 스토어 한 개의 응답 표현 (studio-api-v260922 api/vector-stores.md — 2026-09-28 실측 확인). |
VectorStoreSearchRequest.java이력100.0% | DTO | POST /v2/vector_stores/{vector_store_id}/search 요청 (studio-api-v260922 api/vector-stores.md 「검색」). |
VectorStoreSearchResponse.java이력100.0% | DTO | 검색 응답 (studio-api-v260922 api/vector-stores.md 「검색」 — 2026-09-28 실측 확인). |
package-info.java이력 | 패키지 주석 | 업스테이지 Studio(v2) Vector Stores·Files 표면의 요청·응답 DTO. |
VectorStoreSearchFilter.java이력100.0% | 필터 | 검색 filters 트리 한 노드 (studio-api-v260922 api/vector-stores.md 「검색」). |
빌드·리소스2GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력 | 빌드 | 이 모듈의 의존성 선언 — base 모듈 참조. |
META-INF/spring.factories이력 | 리소스 | 설명 주석 없음 |
src/test/40GitHub
테스트 파일 — 펼쳐서 보기
src/test/40GitHubAiPlatformConfigTest.java이력 | 테스트 | AiPlatformConfig 대상 테스트. |
docmate/DocMateConfigTest.java이력 | 테스트 | DocMateConfig 대상 테스트. |
docmate/DocMateDocumentConverterTest.java이력 | 테스트 | DocMate 어댑터 — WireMock 이 2026-10-14 실측한 응답 모양(/file/info·/convert/pdf·오류 본문)을 내주고, 운영과 같은 DocMateConfig#docMateRestClientBuilder 구성으로 부른다. |
inmemory/InMemoryVectorStoreAdapterTest.java이력 | 테스트 | InMemoryVectorStoreAdapter 대상 테스트. |
inmemory/StubChatModelAdapterTest.java이력 | 테스트 | StubChatModelAdapter 유닛 테스트. |
studio/AnalysisStudioContractTest.java이력 | 테스트 | 요약(Instruct) 녹화 계약 — 추출 Job 을 이어받는 요약 Job 을 지시문과 함께 제출하고, 판마다 다른 완료 응답을 실제 어댑터 HTTP 코드로 읽는다. |
studio/ClassificationStudioContractTest.java이력 | 테스트 | 분류 녹화 계약 — 파일 올리기 → 분류 Job 제출 → 진행 중 → 완료 응답을 실제 어댑터 HTTP 코드로 WireMock 에 대고 돌려, 판마다 기록해 둔 응답 모양을 포트 결과(ClassificationJobStatus)로 읽는지 본다. |
studio/ErrorShapesStudioContractTest.java이력 | 테스트 | 알려진 오류·예외 응답 모양의 녹화 계약 — 플랫폼이 실제로 돌려준(또는 문서가 정한) 오류 본문·지연을 WireMock 으로 재현하고, 실제 RestClient 구성(타임아웃·버퍼링)을 거쳐 StudioDocumentErrors 가 설계대로 접는지 본다. |
studio/ExtractionStudioContractTest.java이력 | 테스트 | 추출 녹화 계약 — 분류 Job 을 이어받는 추출 Job 을 제출하고 진행 중 → 완료 응답을 실제 어댑터 HTTP 코드로 읽는다. |
studio/StudioAgentConfigCompatibilityTest.java이력5일 전 · #1988 | 테스트 | 지시서 짝 판정의 요청 형태·판정 규칙을 고정한다. |
studio/StudioAgentConfigContentTest.java이력 | 테스트 | 지시서(Config)에서 화면에 채울 값을 읽는 규칙을 고정한다 — 모양은 2026-11-02 실측한 분류·추출 지시서와 같다 (docs/decisions/20261102-studio-config-sync-fill-screen.md). |
studio/StudioAgentConfigVersionsTest.java이력 | 테스트 | Studio 에이전트 지시서(Config) 목록 — 요청 모양(최신순·쪽 크기·커서), 응답 읽기(external_id·created_at·is_default), 쪽 넘김 멈춤, 실패 변환을 고정한다(Studio 규약 v1.6.5 「Configs」, docs/decisions/20261029-s… |
studio/StudioAgentConfigsTest.java이력5일 전 · #1994 | 테스트 | 조사건 인입 때 건에 고정할 Studio 에이전트·지시서 (결정 20261028 2항). |
studio/StudioAnalysisAdapterTest.java이력 | 테스트 | Studio 요약 어댑터의 요청 형태와 응답 접기를 고정한다 — 실제 플랫폼은 부르지 않는다 (MockRestServiceServer). |
studio/StudioAnalysisOutputParserTest.java이력 | 테스트 | 요약(Instruct) 응답 읽기 — 지시서의 response_format 이 고정한 카드 형식을 읽고, 형식을 따르지 않은 자유 서술도 버리지 않는다. |
studio/StudioCaseDocumentStoreAdapterTest.java이력 | 테스트 | 사건 서류 Store 조회 — 시나리오 S1~S6. |
studio/StudioChatAdapterFailureLoggingTest.java이력 | 테스트 | Studio 채팅 호출이 실패했을 때 원인이 로그에 남는지와 재시도 판정을 지킨다. |
studio/StudioChatAdapterTest.java이력 | 테스트 | StudioChatAdapter 대상 테스트. |
studio/StudioClassificationOutputParserLoggingTest.java이력 | 테스트 | 파싱이 실패했을 때 로그에 플랫폼 응답 원문이 실리지 않는지를 지킨다 — StudioExtractionOutputParserLoggingTest 의 분류 짝이다 (2026-09-25 야간 Q1). |
studio/StudioClassificationOutputParserTest.java이력6일 전 · #1952 | 테스트 | 2026-09-23 계약 회신의 실제 응답 형태를 픽스처로 고정한다 — docs/notes/20260923-studio-classify-response-shape.md. |
studio/StudioCollectionResolverTest.java이력 | 테스트 | 지시서 → Export Collection 해석의 요청 형태·고르기 규칙·캐시를 고정한다. |
studio/StudioConfigTest.java이력어제 · #2132 | 테스트 | provider 별 빈 등록이 실제로 배타적인지 — 두 구성을 함께 올려서 확인한다. |
studio/StudioContractFixtures.java이력 | 클래스 | Studio 녹화 계약 테스트(*StudioContractTest) 공용 도구 — 판마다 녹화해 둔 픽스처를 읽어 WireMock 응답으로 내주고, 어댑터를 운영과 같은 구성(StudioConfig#studioRestClientBuilder)으로 WireMock 에 붙인다. |
studio/StudioDocumentAdaptersTest.java이력어제 · #2137 | 테스트 | Studio 문서 분류 어댑터(파일·분류)의 요청 형태와 응답 접기를 고정한다 — 실제 플랫폼은 부르지 않는다(MockRestServiceServer). |
studio/StudioDocumentErrorsTest.java이력5일 전 · #1987 | 테스트 | StudioDocumentErrors#from 의 재시도 판단을 고정한다 — 작업 폴러가 이 값으로 "잠시 뒤 다시"와 "영구 실패"를 가르므로, 일시 장애를 비재시도로 접으면 Studio 쪽 Job 이 살아 있어도 우리 작업이 닫힌다. |
studio/StudioExtractionAdapterTest.java이력어제 · #2137 | 테스트 | Studio 추출 어댑터의 요청 형태와 응답 접기를 고정한다 — 실제 플랫폼은 부르지 않는다 (MockRestServiceServer). |
studio/StudioExtractionOutputParserLoggingTest.java이력 | 테스트 | 파싱이 실패했을 때 로그에 추출 원문이 실리지 않는지를 지킨다. |
studio/StudioExtractionOutputParserTest.java이력5일 전 · #1992 | 테스트 | 추출 결과 파싱 규칙을 고정한다 — content[].text 가 JSON 문자열이라는 점, 중첩·표를 펴는 방식, 그리고 깨진 값 하나가 결과 전체를 버리지 않는다는 원칙이다. |
studio/StudioGroupSummaryAdapterTest.java이력2일 전 · #2113 | 테스트 | 요약 그룹 어댑터의 요청 형태와 응답 접기를 고정한다 — 실제 플랫폼은 부르지 않는다(MockRestServiceServer). |
studio/StudioImportShapesTest.java이력어제 · #2132 | 테스트 | Import 형태 맞춤의 요청 형태를 고정한다. |
studio/StudioLargeResponseTest.java이력 | 테스트 | 큰 사건의 include=all 응답 — Parse 결과가 Jackson 기본 문자열 한도(2천만 자)를 넘어도 읽어야 한다. |
studio/StudioPipelineV2ActiveTest.java이력 | 테스트 | v2 스위치 하나로 요약 그룹·보고서 LLM 어댑터 조건이 함께 켜진다(결정 20261021-investigation-pipeline-v2-composition). |
studio/StudioReportAdapterTest.java이력 | 테스트 | Studio 보고서 생성 어댑터의 요청 형태와 응답 접기(결정 20261015 신규 에이전트 D4, 2026-10-15 실측). |
studio/StudioReportLlmAdapterTest.java이력 | 테스트 | Studio 보고서 초안 LLM 직접 호출 어댑터의 요청 모양과 SSE·실패 해석(결정 20261020 「결정」 3·6항, 10/20 SaaS 실측). |
studio/StudioResultCorrectionAdapterTest.java이력5일 전 · #1992 | 테스트 | Studio 결과 왕복 어댑터의 요청 형태와 응답 접기를 고정한다 — 실제 플랫폼은 부르지 않는다 (MockRestServiceServer 둘: API 용·서명된 URL 다운로드용). |
studio/StudioTargetEnvironmentPostProcessorTest.java이력 | 테스트 | 접속 대상 고르기 — 고른 대상의 AI_PLATFORM_STUDIO__… 값이 application.yml 이 읽는 AI_PLATFORM_STUDIO_… 이름으로 보이는지, 고르지 않으면 아무것도 바뀌지 않는지 확인한다. |
studio/StudioUploadFilenameTest.java이력 | 테스트 | Studio 업로드 파일명 — 한글을 UTF-8 평문 filename="…" 그대로(NFC) 싣는다. |
studio/StudioUploadPdfXmpTest.java이력 | 테스트 | Studio 업로드 전 PDF XMP 제거 — docs/decisions/20261028-studio-upload-strip-pdf-xmp.md. |
studio/StudioVectorStoreAdapterTest.java이력 | 테스트 | Studio 벡터 스토어 어댑터의 요청 형태와 응답 접기를 고정한다 — 실제 플랫폼은 부르지 않는다 (MockRestServiceServer). |
studio/dto/StudioVectorStoreDtoTest.java이력 | 테스트 | 어댑터가 아직 부르지 않는 DTO(배치·청킹)와 검색 필터 트리의 JSON 형태를 고정한다. |
modules/ · 인프라 어댑터
modules/mail-core/GitHub
SMTP 발송 어댑터
SMTP 발송 어댑터 — 사내 Postfix 발송(MailDeliveryPort 구현)과 관리자 메일 계정 비밀번호 재설정.
(루트)6GitHub
SMTP 발송 어댑터 본체 — 설정·자격 증명·sender 공급.
SmtpMailConfig.java이력50.0% | 설정 | SMTP 발송 빈 구성. |
SmtpMailProperties.java이력88.9% | 설정 | 사내 SMTP 접속 설정 (hwss.mail.*). |
SmtpSenderSupplier.java이력 | 인터페이스 | 발송 1회분 sender 를 공급한다. |
SmtpCredentialProvider.java이력66.7% | 클래스 | 지금 발송에 쓸 SMTP 비밀번호를 결정한다 — DB 에 저장된 값이 우선, 없으면 설정값. |
SmtpMailSenderFactory.java이력100.0% | 클래스 | 주어진 비밀번호로 발송 1회분 sender 를 만든다. |
SmtpMailDeliveryAdapter.java이력100.0% | 포트 구현 | MailDeliveryPort 의 SMTP 구현. |
password/13GitHub
SMTP 대표 계정 비밀번호 암호화 저장·변경 이력.
service/1GitHub
비즈니스 로직과 트랜잭션 경계.
MailAccountService.java이력96.0% | 서비스 | 관리자 "메일 발송 계정" 화면의 조회·재설정 (결정문 §2·§3, 화면은 N03). |
web/5GitHub
관리자 메일 계정 API와 SMTP 접속 점검 엔드포인트.
MailAccountController.java이력화면 /admin/mail-accountSwagger0.0% | API | 관리자 메일 발송 계정 API (화면 /admin/mail-account, 결정문 docs/decisions/20260827-smtp-password-admin-reset.md). |
MailAccountPasswordResetRequest.java이력100.0% | DTO | SMTP 대표 계정 비밀번호 재설정 요청 (결정문 §2). |
MailAccountSettingsRequest.java이력50.0% | DTO | 설명 주석 없음 |
MailAccountView.java이력100.0% | DTO | 관리자 "메일 발송 계정" 화면이 읽는 상태 전체 (결정문 §1·§3, 화면은 N03). |
MailAccountPasswordChange.java이력100.0% | record | 비밀번호 변경 이력 한 줄 — 언제 누가 만 담는다. |
resources/db/migration/3GitHub
Flyway 마이그레이션 SQL — 파일명 V<YYYYMMDDhhmm>__설명. 앱 기동 시 모든 모듈의 것이 버전 순으로 합쳐 실행된다.
V202608270002__create_mail_account_password.sql이력 | 마이그레이션 | SMTP 대표 계정 비밀번호 저장소 + 변경 이력 (docs/decisions/20260827-smtp-password-admin-reset.md 🟢 §1). |
V202609160006__comment_mail_schema.sql이력 | 마이그레이션 | 메일 계정 암호 테이블의 컬럼 설명 (테이블 설명은 V202608270002 에 이미 있다). |
V202610081525__extend_mail_account_password_settings.sql이력 | 마이그레이션 | 설명 주석 없음 |
src/test/8GitHub
테스트 파일 — 펼쳐서 보기
src/test/8GitHubSmtpCredentialProviderTest.java이력 | 테스트 | SmtpCredentialProvider 대상 테스트. |
SmtpMailConfigTest.java이력 | 테스트 | 활성화 조건과 JavaMail 프로퍼티 매핑(STARTTLS 강제·타임아웃·ssl.trust)이 설정대로 구성되는지 검증한다. |
SmtpMailDeliveryAdapterTest.java이력 | 테스트 | SmtpMailDeliveryAdapter 대상 테스트. |
SmtpMailPropertiesTest.java이력 | 테스트 | SmtpMailProperties 대상 테스트. |
password/MailAccountPasswordStartupCheckTest.java이력 | 테스트 | 기동 점검의 네 경우. |
password/MailAccountPasswordStoreTest.java이력 | 테스트 | MailAccountPasswordStore 대상 테스트. |
password/MailSecretCipherTest.java이력 | 테스트 | MailSecretCipher 대상 테스트. |
service/MailAccountServiceTest.java이력 | 테스트 | 관리자 메일 발송 계정 서비스의 세 책임 — 인가, 기존 비밀번호 확인 정책, 변경 주기 계산. |
modules/ · 인프라 어댑터
modules/smartreview-core/GitHub
스마트심사 오라클 조회 어댑터
스마트심사 오라클 조회 어댑터 — 스마트심사 뷰(사용자·조직, 조사 건 메타, 조직 변경 이력, 보고서 파기 일정)를 두 번째 DataSource 로 라이브 조회한다(기본 비활성).
(루트)14GitHub
오라클 커넥션 풀과 사용자·조직 디렉터리, 조사 건 메타·조직 변경 이력·보고서 파기 일정 어댑터.
SmartReviewConfig.java이력0.0%4일 전 · #2006 | 설정 | 스마트심사 오라클 라이브 조회 구성. |
SmartReviewProperties.java이력0.0% | 설정 | 스마트심사 오라클 접속 설정(hwss.smartreview.*) — 값은 전부 환경변수로 주입한다. |
SmartReviewTransferConfig.java이력100.0% | 설정 | 스마트심사 보고서 전송 구성. |
SmartReviewTransferProperties.java이력90.9% | 설정 | 스마트심사 보고서 수신 API 설정(hwss.smartreview.transfer.*) — 값은 환경변수로 주입한다. |
CachingOrganizationDirectory.java이력100.0% | 클래스 | 스마트심사 디렉터리를 일정 시간 메모리에 두는 OrganizationDirectoryPort — 운영 빈은 이것이다 (docs/decisions/20261012-user-org-affiliation-basis.md 🟢 결정 10). |
OrganizationAffiliation.java이력100.0% | 클래스 | 사용자의 소속 조직을 고르는 규칙 한 곳 — 사용 중인 조직 목록 하나로 만들어 여러 사용자에게 쓴다 (docs/decisions/20261012-user-org-affiliation-basis.md 🟢 결정 1·7). |
SmartReviewConnectionPool.java이력0.0% | 클래스 | 스마트심사 오라클 커넥션 풀 홀더. |
SmartReviewHospitalMasterAdapter.java이력60.0%어제 · #2140 | 포트 구현 | 스마트심사 병원정보 뷰(SMART.VW_AI_HOSPINFO) 전체 조회 — 하루 한 번 적재 배치의 원천이다. |
SmartReviewInvestigationMetadataAdapter.java이력100.0% | 포트 구현 | 스마트심사 조사정보 View를 보고서번호로 라이브 조회한다. |
SmartReviewOrganizationChangeHistoryAdapter.java이력100.0% | 포트 구현 | 스마트심사 사용자이력정보 뷰(SMART.VW_AI_UVORG002_HIS) 라이브 조회 — 사원별 최종 인사 변경일시 (docs/decisions/20260827-orgchart-change-tracking.md 🟢). |
SmartReviewOrganizationDirectoryAdapter.java이력86.9% | 포트 구현 | 조직·사용자 디렉터리의 스마트심사 뷰 구현 — 조직도(VW_AI_UVORG001)·사용자 (VW_AI_UVORG002)를 라이브로 읽고, 직급/직책 코드는 공통코드 뷰 (VW_AI_UVCDT001)로 해석한다. |
SmartReviewReportDisposalScheduleAdapter.java이력100.0% | 포트 구현 | 스마트심사 파기 뷰(대내·대외)를 보고서번호로 라이브 조회한다 — 결정 20260909-report-disposal-policy. |
SmartReviewReportTransferAdapter.java이력97.8% | 포트 구현 | 스마트심사 보고서 수신 API(POST /api/v1/reports/{partnerCode}) 호출 — 명세서 v1.0(2026-11-02). |
SmartReviewUserDirectoryAdapter.java이력100.0% | 포트 구현 | 스마트심사 사용자 뷰(SMART.VW_AI_UVORG002) 라이브 조회 — 로그인·세션 재발급마다 오라클에서 그 사번 한 명을 새로 읽는다(캐시하지 않는다 — 퇴직 처리·신규 입사가 바로 반영돼야 한다). |
빌드·리소스2GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력 | 빌드 | 이 모듈의 의존성 선언 — base 모듈 참조. |
smartreview/views.json이력어제 · #2140 | 리소스 | 설명 주석 없음 |
src/test/13GitHub
테스트 파일 — 펼쳐서 보기
src/test/13GitHubCachingOrganizationDirectoryTest.java이력 | 테스트 | 디렉터리 캐시 — 시간 안에는 오라클을 다시 부르지 않고, 지나면 다시 읽는다(결정 20261012 §10). |
OrganizationAffiliationTest.java이력 | 테스트 | 소속 조직 규칙(docs/decisions/20261012-user-org-affiliation-basis.md 🟢 결정 1·7)을 실측 사례의 모양으로 고정한다. |
SmartReviewConfigTest.java이력 | 테스트 | 기본 비활성 검증 — 접속 정보 없는 환경(로컬·CI)에서 오라클 풀이 절대 뜨지 않아야 한다. |
SmartReviewDirectoryMetricsTest.java이력 | 테스트 | 스마트심사 오라클 조회의 계측을 고정한다 (docs/decisions/20260828-observability-stack.md §2 "외부 연동 장애 분석"). |
SmartReviewHospitalMasterAdapterTest.java이력어제 · #2140 | 테스트 | SmartReviewHospitalMasterAdapter 대상 테스트. |
SmartReviewInvestigationMetadataAdapterTest.java이력 | 테스트 | SmartReviewInvestigationMetadataAdapter 대상 테스트. |
SmartReviewOrganizationChangeHistoryAdapterTest.java이력 | 테스트 | 사용자이력정보 뷰 — 행 해석, 디렉터리와 같은 주기의 캐시, 오라클 호출 계측(결정 20260827). |
SmartReviewOrganizationDirectoryAdapterTest.java이력 | 테스트 | SmartReviewOrganizationDirectoryAdapter 대상 테스트. |
SmartReviewReportDisposalScheduleAdapterTest.java이력 | 테스트 | SmartReviewReportDisposalScheduleAdapter 대상 테스트. |
SmartReviewReportTransferAdapterTest.java이력 | 테스트 | 스마트심사 보고서 수신 API 호출 — 명세서 v1.0 의 요청 머리글·응답·결과 코드를 붙잡는다. |
SmartReviewTransferHttpTest.java이력 | 테스트 | 목 요청 팩토리가 아닌 운영 구성과 실제 HTTP 소켓으로 오류 본문 보존을 확인한다. |
SmartReviewUserDirectoryAdapterTest.java이력 | 테스트 | SmartReviewUserDirectoryAdapter 대상 테스트. |
SmartReviewViewContractTest.java이력 | 테스트 | 어댑터가 읽는 스마트심사 뷰·컬럼이 실제로 제공되는 것인지 검증한다. |
apps/
apps/hwss-verify/GitHub
점검 실행기
점검 실행기 — Studio 실연동 점검·분류 벤치마크 실행기.
(루트)17GitHub
모듈 루트 패키지
BenchmarkMetrics.java이력100.0% | DTO | 판정 결과 → 정확도·라벨별 점수·혼동표·저신뢰율. |
BenchmarkReport.java이력100.0% | record | hwss-benchmark/1 결과 파일 — 팀 문서 사이트(/quality/)가 그대로 파싱한다(형식은 2차 계약). |
ProbeReport.java이력100.0% | record | hwss-probe/1 결과 파일 — 팀 문서 사이트(/quality/)가 그대로 파싱한다(형식은 2차 계약). |
StudioTarget.java이력96.7% | record | 점검할 Studio 인스턴스 하나의 접속 설정. |
StudioCallException.java이력85.7% | 예외 | 실행기 쪽에서 직접 부른 Studio 호출의 실패. |
Env.java이력68.2% | 인터페이스 | 실행기가 읽는 환경변수 창구. |
ClassificationBenchmark.java이력84.1%4일 전 · #2046 | 클래스 | 분류 정확도 벤치마크 실행기 (./gradlew :hwss-verify:classificationBenchmark). |
ClassifySchema.java이력96.3% | 클래스 | 분류 지시서(Config)에서 라벨 목록을 꺼낸다. |
Dataset.java이력93.8% | 클래스 | 벤치마크 데이터 폴더 읽기와 표본 고르기. |
LabelMapping.java이력94.7% | 클래스 | 파일 이름 → 기대 라벨(정답) 대응표 (BENCHMARK_LABELS, 기본 benchmark-labels.default.json). |
LiveClassifier.java이력0.0% | 클래스 | 실제 Studio 로 벤치마크 묶음을 돌린다 — 묶음마다 업로드 → 분류 작업 → 완료 대기 → 결과를 입력 순번으로 되짚기 (ResultMapper, 운영과 같은 규칙) → 작업·파일 삭제. |
LiveProbe.java이력18.1% | 클래스 | 실제 Studio 를 부르는 점검 묶음. |
ResultMapper.java이력100.0% | 클래스 | 분류 결과를 입력 파일 순번으로 되짚는다. |
StudioProbe.java이력89.8% | 클래스 | Studio 실연동 점검 실행기 (./gradlew :hwss-verify:studioProbe). |
StudioSession.java이력8.0% | 클래스 | Studio 대상 하나에 붙은 실행기 세션 — 운영 어댑터를 Spring 컨텍스트 없이 조립해 쓴다. |
VerifyGuard.java이력100.0% | 클래스 | 외부를 부르기 전의 대상 가드 — 2차 계약 「운영 분리 원칙」 3항. |
VerifyJson.java이력84.6% | 클래스 | 결과 파일(hwss-probe/1·hwss-benchmark/1) 쓰기. |
빌드·리소스3GitHub
모듈 빌드 스크립트와 src/main/resources.
build.gradle이력 | 빌드 | 이 모듈의 의존성 선언 — base, aiplatform-core 모듈 참조. |
logback.xml이력 | 리소스 | 설명 주석 없음 |
probe/synthetic-diagnosis.png이력 | 리소스 | 설명 주석 없음 |
src/test/8GitHub
테스트 파일 — 펼쳐서 보기
src/test/8GitHubVerifyGuardTest.java이력 | 테스트 | VerifyGuard 대상 테스트. |
BenchmarkMetricsTest.java이력 | 테스트 | BenchmarkMetrics 대상 테스트. |
ClassificationBenchmarkTest.java이력 | 테스트 | 실행기 흐름과 결과 파일 형태(hwss-benchmark/1) — Studio 는 가짜 분류기로 바꿔 끼운다. |
DatasetTest.java이력 | 테스트 | Dataset 대상 테스트. |
LabelMappingTest.java이력 | 테스트 | LabelMapping 대상 테스트. |
LiveProbeJudgeTest.java이력 | 테스트 | 분류 1건 점검의 판정 — "스키마 안의 라벨이면 통과"(정확도는 벤치마크 몫). |
StudioProbeTest.java이력 | 테스트 | 네트워크 없이 가드·설정 누락·결과 파일 형태를 본다. |
StudioParsingTest.java이력 | 테스트 | StudioParsing 대상 테스트. |
검증·계약·배포 보조
http/GitHub
API 호출 시나리오
API 수동·자동 검증 시나리오 — httpyac/IntelliJ HTTP Client 로 로컬 서버에 직접 요청을 보내는 파일. 일부는 apps/hwss-api 테스트가 파일을 그대로 재생해 기대값을 검증한다.
admin-agent-studio-instruct.http이력6일 전 · #1958 | HTTP 시나리오 | 에이전트 스튜디오 3단계 INSTRUCT(AI 보고서) 설정 관리자 API (2026-10-21, docs/decisions/20261021-studio-instruct-db-storage.md). |
admin-agent-studio-test-runs.http이력오늘 · #2149 | HTTP 시나리오 | 에이전트 스튜디오 실행 테스트 — 1단계 분류·2단계 추출 실연동 관리자 API (2026-11-06·11-07, |
admin-analysis-concurrency-limit.http이력 | HTTP 시나리오 | 1인 동시 AI 분석 요청 한도 — 관리자 통계 대시보드 「동시 요청 제한」 (WBS 29.12.3) |
admin-application-form.http이력 | HTTP 시나리오 | 청약서 폼 설정 관리자 API (2026-10-06, docs/decisions/20261006-application-form-settings-versioned-master.md). |
admin-chat-prompts.http이력 | HTTP 시나리오 | 챗봇·AI 보고서 반영 지시문 관리자 API (2026-10-23, docs/decisions/20261023-chat-prompt-db-versioning.md). |
admin-claim-type.http이력 | HTTP 시나리오 | 청구유형 마스터 관리자 API (NT01, docs/decisions/20260918-claim-type-master.md). |
admin-customer-onboarding.http이력오늘 · #2161 | HTTP 시나리오 | 위탁사 온보딩 상태 조회 API (결정 20261017-customer-onboarding-status-api). |
admin-disclosure-link.http이력6일 전 · #1935 | HTTP 시나리오 | 공시실 링크 관리자 API (ND01 → 결정 20261023 개정, 위탁사 Workspace 4단계 `공시실 링크 설정`). |
admin-hospital-alias.http이력3일 전 · #2082 | HTTP 시나리오 | 병원 명칭 매핑 관리자 API (화면 기준선 `병원 명칭 매핑`, 결정 20260910-hospital-master-matching §6). |
admin-integration-exchanges.http이력 | HTTP 시나리오 | 관리자 연동 교환 기록 조회 (docs/decisions/20261023-integration-exchange-log.md) |
admin-mail-account.http이력 | HTTP 시나리오 | 관리자 메일 발송 계정 — 최초 배포 조회 → 첫 재설정 → 확인 강제 → 인가 (야간 플랜 20260827 N02) |
admin-report-deliveries.http이력 | HTTP 시나리오 | 관리자 보고서 초안 전송 로그 조회 API — investigation-core |
admin-report-delivery-channel.http이력 | HTTP 시나리오 | 위탁사 보고서 초안 전송 방식 (WBS 12.1.4, 결정 20260902-report-delivery-channel-selection 1·5~10항). |
admin-report-disposal-logs.http이력 | HTTP 시나리오 | 보고서 파기 로그 목록 (관리자 로그인 쿠키 필요) |
admin-report-mail-dispatches.http이력 | HTTP 시나리오 | 관리자 메일 발송 로그 조회 API — investigation-core (야간 플랜 20261005 NM01) |
admin-report-template.http이력 | HTTP 시나리오 | 관리자 보고서 양식 설정 — 등록 → 수정(버전 증가) → 복제 → 버전 전환 → 삭제 (주말 플랜 20260822 W15) |
admin-statistics-backfill.http이력 | HTTP 시나리오 | 관리자 통계 사실 재적재(backfill) 명령 — investigation-core statistics (야간 플랜 20260904 ST04, S-007 §3-4 「재적재 명령」) |
admin-statistics-business.http이력 | HTTP 시나리오 | 관리자 업무 통계 조회 API — investigation-core statistics (야간 플랜 20260904 ST03-B, S-007 §3-4 「조회 API」) |
admin-statistics-chat.http이력 | HTTP 시나리오 | 관리자 챗봇 이용 통계 조회 API — chat-core statistics (S-007 §3-4 「챗봇 이용 통계」, 시트 29·30행) |
admin-statistics-error-incidents.http이력 | HTTP 시나리오 | 관리자 오류/장애 현황 조회 API — investigation-core statistics (S-007 §3-4 「오류/장애 현황 조회 API」, 시트 33행) |
admin-statistics-extraction-quality.http이력 | HTTP 시나리오 | 관리자 추출 완료율 조회 API — investigation-core statistics (야간 플랜 20261012 NE02, S-007 §3-4 「추출 완료율 조회 API」) |
admin-statistics-lifecycle-backfill.http이력 | HTTP 시나리오 | 관리자 생애주기 통계 사실 재적재 명령 — investigation-core statistics (결정 20261027-lifecycle-fact-load-failure-backfill) |
admin-statistics-lifecycle.http이력 | HTTP 시나리오 | 관리자 시스템 통계 조회 API — investigation-core statistics (야간 플랜 20260911 DP06, S-007 §3-4 「생애주기 조회 API」) |
admin-statistics-processing-time.http이력 | HTTP 시나리오 | 관리자 처리시간 통계 조회 API — investigation-core statistics (2026-10-19, S-007 §3-4 「처리시간 통계 조회 API」) |
admin-statistics-service-status.http이력 | HTTP 시나리오 | 관리자 시스템 통계 — 서비스 상태 조회 (S-007 §3-4 「서비스 상태 조회 API」, 2026-10-28) |
admin-statistics-unmapped.http이력 | HTTP 시나리오 | 관리자 미매핑 큐·차원 마스터 API — investigation-core statistics (야간 플랜 20260904 ST05-A, S-007 §3-4 「미매핑 큐 API」) |
admin-statistics-usage.http이력 | HTTP 시나리오 | 관리자 이용 현황 조회 API — investigation-core statistics (2026-10-19, S-007 §3-4 「이용 현황 조회 API」) |
after-deploy.txt이력 | HTTP 시나리오 | 배포 뒤 시나리오 실행(http-scenarios.yml)이 재생하는 `.http` 파일 — 빈 DB·local 로그인·스텁 엔진에서 위에서 아래로 도는 것만. |
agent-chat.http이력 | HTTP 시나리오 | 에이전트 채팅 API (NX01, docs/plans/night/20260930.md). |
audit-log.http이력 | HTTP 시나리오 | 감사 로그 조회 API — audit-core (야간 플랜 20260824 N04) |
auth-onboarding.http이력오늘 · #2181 | HTTP 시나리오 | 최초 로그인 이메일 등록(온보딩) — POST /api/v1/auth/onboarding (화면 onboarding) |
auth-session.http이력 | HTTP 시나리오 | 세션 정책 — 서버 유휴 판정(60분)·세션 타이머 (base/security) |
auth-sso.http이력 | HTTP 시나리오 | SSO(사이트마인더) 자체 연동 — base/security/sso 사양: docs/specs/investigation-agent-sso-login-spec.md 2-2 (흐름), 4장 (login.fcc·헤더) |
chat-attachments.http이력 | HTTP 시나리오 | 챗봇 첨부 검증·PDF 변환·Studio 업로드 |
classification-mapping.http이력 | HTTP 시나리오 | 분류체계 매핑 API (야간 플랜 20260824 N02) — classification-core |
classification-stub-e2e.http이력 | HTTP 시나리오 | 스텁 분류 결과 E2E — 사용자 확정(`AI 분류 시작`) → `미분류검출` → W07 조치 → `정보 추출 시작` → `추출완료` |
collections.http이력3일 전 · #2099 | HTTP 시나리오 | 지식컬렉션 세로조각 — 폴더 체계 (docs/decisions/20261006-knowledge-collection-folder-structure.md) |
customer-company.http이력 | HTTP 시나리오 | 위탁사 마스터 조회 API (N03) — classification-core |
document-type-schemas.http이력어제 · #2132 | HTTP 시나리오 | 에이전트 스튜디오 문서 분류·정보 추출 체계 — 관리자 저장 API (/admin/agent-studio/schema 1단계 CLASSIFY·2단계 추출 스키마). |
image-integration.http이력 | HTTP 시나리오 | 이미지 시스템 연동 API-01~07 스모크 (S-003) 위에서 아래로 한 번에 실행하는 순서 있는 시나리오다. 정상 경로와, 컨트롤러가 실제로 돌려주는 |
image-reception-e2e.http이력 | HTTP 시나리오 | 이미지시스템 수신 E2E — 접수 세로조각의 상태 전이 (P1-3, S-003 API-01~03 + S-004 §8) |
investigation-chat.http이력 | HTTP 시나리오 | 사고조사 챗봇 패널 API (docs/decisions/20261023-investigation-chat-session-structure.md 4항). |
investigation-claim-hospitals.http이력6일 전 · #1941 | HTTP 시나리오 | 분석 조건 2번 「청구병원 및 대표 상병」 (결정 20261106-analysis-request-claim-hospitals) |
investigation-disclosure-link.http이력 | HTTP 시나리오 | 워크스페이스 `공시실` 버튼의 링크 조회 — 사용자 경로 (2026-10-19 야간 NL01). |
investigation-hospital-matches.http이력4일 전 · #2007 | HTTP 시나리오 | 분석 요청 전 병원 지정 (결정 20260910 병원 마스터 §4) 실행 전 준비: http/investigation-workspace.http 로 같은 @reportNo 건을 `추출 완료` 까지 만든다. |
investigation-knowledge-defaults.http이력 | HTTP 시나리오 | 사고조사 건 위탁사의 참조 지식컬렉션 기본값 조회 (결정 20261030 3항) |
investigation-page-edits.http이력 | HTTP 시나리오 | 스캔 문서함 낱장 편집 저장 — `편집 저장` (S-012 §4-0, [20260921] 🟢 0항, 야간 20261006 NP01) |
investigation-reanalysis.http이력 | HTTP 시나리오 | `다시 분석` — 가능 범위 조회 + 세 범위 실행 (S-012 §4, 야간 20261002 NR01·NR02) |
investigation-workspace.http이력3일 전 · #2055 | HTTP 시나리오 | P1-2 워크스페이스 세로조각 — 전송 수신 → 분류 → 추출 → 분석 → 요약·확정 → 초안 → 메일 → 진행상태(W06~W14) |
menu-permission.http이력 | HTTP 시나리오 | 메뉴 권한 매트릭스 API — organization-core (야간 N03) |
organization-changes.http이력 | HTTP 시나리오 | 조직 변경 사원 — GET /api/v1/organization-changes · POST /api/v1/organization-changes/acknowledgements |
pipeline-seed.http이력 | HTTP 시나리오 | 전 단계 보고서 세트 시드 — 목록·워크스페이스 화면을 실제 데이터로 돌려보기 위한 시나리오 (2026-09-03 야간 N03) |
prepare-image-zip.sh이력 | 스크립트 | !/usr/bin/env bash image-integration.http 의 API-02(전송 완료 통지) 스모크를 돌리기 전에 실행한다. |
report-page-image.http이력 | HTTP 시나리오 | 페이지 원본 이미지 서빙 — 문서 뷰어(N05)가 <img src> 로 여는 경로 (2026-09-03 야간 N04) |
smart-review-transfer.http이력 | HTTP 시나리오 | 보고서 스마트심사 전송 (결정 20261103-smart-review-report-receiver-api, WBS 4.2.10.2) |
studio-correction-roundtrip.sh이력 | 스크립트 | !/usr/bin/env bash Studio(v2) 결과 왕복 실측 — docs/decisions/20260929-pipeline-correction-roundtrip.md §7 (P0) |
studio-investigation-chat-probe.py이력 | HTTP 시나리오 | !/usr/bin/env python3 |
studio-report-llm-probe.sh이력 | 스크립트 | !/usr/bin/env bash Studio 보고서 생성 LLM 방식 실측 — docs/decisions/20261020-report-generation-llm-input-job.md 「실측」·「실측 2」 |
studio-review-roundtrip.sh이력 | 스크립트 | !/usr/bin/env bash Studio(v2) Job 검수 JSON(collection-results/11) 왕복 실측 — docs/decisions/20261006-collection-review-json-roundtrip.md |
summary-groups.http이력 | HTTP 시나리오 | 요약 그룹 — 관리자 마스터 API 와 보고서 `요약` 탭 구획 조회 (파이프라인 v2). |
summary-skeletons.http이력 | HTTP 시나리오 | 요약 섹션 골격 관리자 API (S-014 §3, 2026-09-29 ③) — 위탁사별 골격 조회·저장. |
user-me.http이력 | HTTP 시나리오 | 내 정보 조회 — GET /api/v1/users/me (WBS 1.1.2, 화면 profile) |
user-roles.http이력 | HTTP 시나리오 | 사용자 레벨 마스터 조회 + 보유 레벨 부여·회수 (야간 플랜 20260828 N01) |
검증·계약·배포 보조
openapi/GitHub
API 계약 스냅샷
프론트 타입 생성의 원천이 되는 API 계약 스냅샷.
openapi.json이력오늘 · #2181 | 계약 | springdoc /v3/api-docs 의 커밋 스냅샷 — 손으로 고치지 않고 ./gradlew :hwss-api:exportOpenApiSpec 으로 갱신. 프론트 lib/api/schema.d.ts·MSW 핸들러가 여기서 생성된다. |
README.md이력 | 문서 | 스냅샷 갱신 절차와 드리프트 검사(OpenApiSnapshotTest, 프론트 check:openapi) 설명. |
검증·계약·배포 보조
certs/GitHub
사내 인증서
Docker 이미지 빌드 때 JVM 신뢰 저장소에 자동 등록되는 공개 인증서.
postfix-internal.crt이력 | 인증서 | 사내 메일 서버(Postfix) 자가서명 인증서 — SMTP TLS 신뢰 검증용. |
README.md이력 | 문서 | 인증서 목록·출처·등록 방식. |
검증·계약·배포 보조
로컬 전용 (Git 미추적)
build · runtime
.gitignore 대상이라 저장소에는 없고 로컬에서만 생기는 폴더입니다.
build/ (각 모듈) | 산출물 | Gradle 빌드 산출물 — jar, 테스트·JaCoCo 리포트. |
runtime/ | 로컬 데이터 | 이미지 수신·압축 해제·컬렉션 업로드 파일이 쌓이는 로컬 경로 (application.yml 의 *_ROOT 기본값). |
파일 목록·역할 문장·변경 표시는 dev 에 머지될 때마다 코드와 git 이력에서 다시 뽑습니다. 설명 주석이 없는 파일은 이름 규칙으로 채웠으니, 새 파일에는 Javadoc 첫 문장을 한 줄로 써 주세요.