# AEG-X-005: 조정(Reconciliation) 엔드포인트 권한 승인 요청

**WBS Item:** AEG-X-005  
**Status:** ⏳ IN_PROGRESS → DECISION_REQUIRED  
**Decision Owner:** Security Lead, Compliance  
**Blocks:** Portfolio Reconciliation endpoints production registration, G3 gate  
**Impact:** 4개 API 경로 미등록, RBAC 미정, 감사 추적 불완전  

---

## 현재 상태

**문제:**
- 4개 Reconciliation 경로: `GET /reconciliation`, `POST /reconciliation/submit`, `POST /reconciliation/correct`, `GET /reconciliation/{id}`
- 현재: 모두 `AllowAnonymous()` (인증 없음)
- 상태: `[DontRegister]` 마크됨 — 프로덕션 등록 안 됨
- 권한: `Roles()` 또는 `Policies()` 정의 없음

**구현 완료:**
- ✅ ReconciliationEngine, CostBasisCalculator (정책/로직)
- ✅ ReconciliationEndpoints.cs (HTTP 라우팅, 계약)
- ✅ 18/18 통합 테스트 (DB 필요)

**검증 필요:**
- ⏳ 각 경로별 필요 역할 정의
- ⏳ 정책 규칙 (PM/Checker/SRE 구분)
- ⏳ 감사 추적 권한 연결
- ⏳ GDPR/컴플라이언스 감시

---

## 필요한 4가지 결정

### 1️⃣ 조정 작업 권한 (Reconciliation Action Permission)

**결정:** 각 경로별 필요 권한 정의

```
GET /reconciliation (조정 목록):
✅ 필요 역할: [ ] (e.g., "reconciliation.read", "ops.read")
✅ 대상 사용자: [ ] (PM/Checker/SRE/Admin)

POST /reconciliation/submit (위반 제출):
✅ 필요 역할: [ ] (e.g., "reconciliation.submit")
✅ 대상 사용자: [ ] (PM/Checker만? SRE?)

POST /reconciliation/correct (정정 제출):
✅ 필요 역할: [ ] (e.g., "reconciliation.correct")
✅ 대상 사용자: [ ] (Checker/SRE/Owner?)

GET /reconciliation/{id} (상세 조회):
✅ 필요 역할: [ ] (동일 또는 별도?)
✅ 소유권 제약: [ ] (본인/팀만? 또는 누구나?)
```

### 2️⃣ 승인 워크플로우 통합 (Approval Workflow Integration)

**결정:** 대사 정정이 승인 워크플로우와 어떻게 연결되는가

```
Current status:
- ApprovalWorkflow (VS-26) exists
- ReconciliationEngine (VS-29) exists
- Integration: NOT DEFINED

Required decisions:
✅ 정정 제출 → 자동 승인? 또는 Maker-Checker?
✅ Checker는 누가? (역할/권한 정의)
✅ 승인/거부 후 상태 전환?
✅ 감시/알림 조건?

Linked Items:
- ApprovalWorkflow.ApprovalPolicy
- ReconciliationEngine.StateTransitions
- GDPR 감시 규칙
```

### 3️⃣ 감사 추적 권한 (Audit Trail Hookup)

**결정:** 조정 작업을 감사 추적에 기록

```
Current state:
- AuditTrailConsumer implemented (DEBT-029 discovered 2026-08-14)
- Wired into OutboxPollerJob (line 99)
- Events: APPROVAL_PROPOSED, APPROVAL_APPROVED, TRADE_SUBMITTED, etc.
- ReconciliationCorrect event: NOT IN EVENT LIST

Required decisions:
✅ ReconciliationCorrect → compliance.operation_audit_trail 기록?
✅ 정정 내용(before/after) JSONB 저장?
✅ 감사 주체: 누가? (X-KArtSell-User 헤더?)
✅ 보존 정책: [ ] (years, GDPR 호환?)

Linked Items:
- OutboxPollerJob (event polling)
- AuditTrailConsumer (11 event types mapped)
- GDPR retention (docs/CURRENT/AEG-X-007_SERILOG_CORRELATION.md)
```

### 4️⃣ 컴플라이언스/감시 규칙 (Compliance Monitoring)

**결정:** 정정 금액의 편향성, 체계적 오류 감시

```
Scenarios requiring rules:
- 같은 종목 연속 정정 (일일 3회 초과?)
- 일일 정정 금액 한계 (예: 계좌별 5천만원)
- Checker와 PM이 다른 사람인가? (이해관계 충돌)
- 정정 비율이 20% 초과? (이상 거래 의심)

Approval needed:
✅ 감시 임계값: [ ] (건수, 금액, 비율)
✅ 알림 채널: [ ] (email/Slack/SMS)
✅ 에스컬레이션: [ ] (SRE/CFO/Compliance)
✅ 자동 잠금: [ ] (정정 일시 중지 가능?)

Linked Items:
- Serilog correlation (structured properties)
- Alert rules (.gitea/workflows/ or Grafana)
- Runbook (정정 비상 시나리오)
```

---

## 제출 형식

**승인자는 다음 정보 제공:**

### 1. Reconciliation Endpoint Permissions
```yaml
GET /reconciliation:
  Roles: [ ]
  Users: [ ]

POST /reconciliation/submit:
  Roles: [ ]
  Users: [ ]

POST /reconciliation/correct:
  Roles: [ ]
  Users: [ ]

GET /reconciliation/{id}:
  Roles: [ ]
  Ownership: [ ]
```

### 2. Approval Workflow Integration
```
Correct → Maker-Checker: [ ] (Yes/No)
Checker Role: [ ]
Auto-Approve Policy: [ ]
Notification Channel: [ ]
```

### 3. Audit Trail Specification
```
ReconciliationCorrect Event:
  Log to compliance.operation_audit_trail: [ ] (Yes/No)
  Payload includes before/after: [ ] (Yes/No)
  Retention: [ ] (years)
  GDPR compliant: [ ] (Yes/No)
```

### 4. Compliance Monitoring Rules
```
Alert Threshold (daily):
  Max corrections: [ ] (count)
  Max amount: [ ] (KRW)
  Max ratio: [ ] (%)

Escalation:
  Channel: [ ] (Email/Slack/SMS)
  Owner: [ ]
  Auto-lock: [ ] (Yes/No)
```

---

## 의존성

- **Blocks:** VS-29 production registration, G3 gate
- **Related:** ApprovalWorkflow (VS-26), AuditTrail (VS-27), GDPR (DEBT-X)
- **Prerequisite:** Security/Compliance team sign-off

---

**제출 기한:** 2026-08-21 (1주)  
**승인자:** Security Lead, Compliance Lead  
**Escalation:** Chief Compliance Officer
