# 06. Admin Data Model

## DB 테이블

MVP JSON 저장소와 추후 DB 전환용 schema는 다음 모델을 사용한다.

- User
- ExamProject
- ExamDocument
- ExamPage
- ExamRegion
- LocalBackendProfile
- LocalBackendConnectionLog
- RecognitionResult
- UnreadableArea
- TeacherTranscription
- ReasoningCandidate
- AnnotationCandidate
- Annotation
- HandwritingRender
- ExportedPdf
- AnalysisJob
- PageArtifact
- ProblemGrid
- ProblemCell
- OcrToken
- EvidencePackage
- DiagnosisResult
- TeacherReviewLog
- ModelRun
- FineTuningDataset
- AdapterRegistry
- AuditLog
- AdminViewLog
- SystemErrorLog

## 관리자 조회 항목

관리자는 전체 프로젝트, 업로드 파일, 페이지, 영역, 인식 결과, 인식불가영역, 교사 전사, 추론 후보, 첨삭 후보, 승인/거절 이력, 출력 이력, AnalysisJob, PageArtifact, EvidencePackage, DiagnosisResult, ModelRun, Local Backend 연결 이력, AuditLog, 오류 로그를 조회한다.

## AnalysisJob 산출물 정렬

`PageArtifact.metadata.display_order`는 홈페이지 연구내용의 시험지 이미지 순서와 일치해야 한다. 관리자 화면과 API export는 `original_exam`부터 `approved_overlay_preview`까지 1~8 순서로 정렬한다.

## AuditLog 구조

```text
id
projectId
actorId
action
targetType
targetId
beforeJson
afterJson
ipAddress
userAgent
createdAt
```

## Data export

관리자 데이터 페이지는 JSON export와 CSV export를 제공한다. 저작권 신청용 파일 목록은 `docs/07_COPYRIGHT_ASSET_LIST.md`를 기준으로 표시한다.

## LocalBackendProfile providerKey

Local Backend 설정은 모델 라우팅 구분을 위해 `providerKey`를 저장한다.

- `deepseek-api`: 외부 API provider, MVP 기본 차단
- `hyperclova-think-local`: HyperCLOVA X Think local vLLM
- `hyperclova-vision-local`: HyperCLOVA X Vision local vLLM
- `ollama-compatible`: Ollama, LM Studio, llama.cpp OpenAI-compatible endpoint

관리자 페이지에서는 providerKey, 모델 Base URL, 모델명, 마지막 health check 결과를 함께 조회한다. Agent Token은 평문으로 표시하지 않고 마스킹한다.
