diff --git a/docs/CURRENT/AEG-VS-05-01_FUNDAMENTALS_DECISION_APPROVAL.md b/docs/CURRENT/AEG-VS-05-01_FUNDAMENTALS_DECISION_APPROVAL.md new file mode 100644 index 00000000..f728203c --- /dev/null +++ b/docs/CURRENT/AEG-VS-05-01_FUNDAMENTALS_DECISION_APPROVAL.md @@ -0,0 +1,128 @@ +# AEG-VS-05-01: 펀더멘털 PIT 계약 승인 요청 + +**WBS Item:** AEG-VS-05-01 +**Status:** ⏳ BLOCKED → DECISION_REQUIRED +**Decision Owner:** PM/Architect/Compliance +**Blocks:** IngestFundamentalsPIT Slice (VS-05), Gate G1 approval, Financial analysis +**Impact:** 기본 데이터 수집 구현 불가능, 평가 베이스라인 미정 + +--- + +## 근본 원인 + +**WBS 정의와 실제 문서의 충돌** + +| 항목 | WBS 정의 | 기존 문서 | 해결 필요 | +|------|---------|---------|---------| +| **VS-05 범위** | IngestFundamentalsPIT (요구사항: REQ-FND-001) | Risk Metrics (unrelated 개념) | ✅ 명확화 필요 | +| **데이터 소스** | 미정 | 미정 | ✅ 승인 필요 | +| **계약** | 시간-기반 PIT 모델 | 미정 | ✅ 설계 필요 | + +--- + +## 필요한 3가지 결정 + +### 1️⃣ 펀더멘털 데이터 범위 명확화 + +**결정:** VS-05는 "펀더멘털"을 무엇으로 정의하는가? + +**옵션:** +- **A)** 재무제표 기본: 매출, 이익, 현금흐름, 자산, 부채 (주요) +- **B)** A + 밸류에이션: PER, PBR, ROE, 부채비율 (파생) +- **C)** A + B + 거시경제: GDP, 금리, 환율 (외생) +- **D)** 커스텀: [정의 필요] + +**선택:** +``` +✅ 펀더멘털 데이터 정의: [ ] +✅ 데이터 범위 (A/B/C/D): [ ] +✅ 업데이트 주기: [ ] (quarterly/annual/custom) +``` + +### 2️⃣ 데이터 소스 및 라이선싱 승인 + +**결정:** 공식 데이터 소스 지정 및 라이선스 + +| 데이터 범주 | 제안 소스 | 라이선스 | 승인 필요 | +|-----------|---------|--------|---------| +| **재무제표** | OpenDart (한국기업) | 공개 | ✅ | +| **밸류에이션** | 계산 파생 또는 제3자 API | TBD | ✅ | +| **거시경제** | 한국은행/OECD | 공개 | ✅ | + +**선택:** +``` +✅ 재무제표 소스: [ ] +✅ 밸류에이션 소스: [ ] +✅ 거시경제 소스: [ ] +✅ 라이선스 확인 완료: [Yes/No] +``` + +### 3️⃣ PIT 시간 모델 및 정정 정책 + +**결정:** Point-in-Time 데이터 모델과 정정 처리 + +``` +Questions: +- published_at: 데이터 공포 시점 (e.g., 2026-05-31 재무공시일) +- effective_at: 데이터 적용 시점 (e.g., 2026-03-31 분기 말) +- correction_reason: 정정 이유 (data error, restatement, revised forecast) + +Policy needed: +- 정정 데이터 처리: 덮어쓰기? 새 행 추가? +- 소급 적용 가능? (이전 평가 재계산) +- GDPR 보존 정책: 정정 이력 유지 기간? + +Linked Items: +- MIG-FND-001 (마이그레이션 0040+) +- Append-only 불변성 원칙 +- GDPR 데이터 보존 정책 +``` + +**선택:** +``` +✅ PIT 시간 정의: [ ] +✅ 정정 정책: [ ] (overwrite/append/versioning) +✅ 소급 적용: [ ] (Yes/No) +✅ 보존 기간: [ ] (years) +``` + +--- + +## 제출 형식 + +**승인자는 다음 정보 제공:** + +1. **범위** + ``` + ✅ 펀더멘털 정의: [option A/B/C/D + 커스텀] + ✅ 업데이트 주기: [frequency] + ``` + +2. **소스** + ``` + ✅ 각 데이터 범주별 공식 소스 + ✅ 라이선스 확인 증명 + ✅ API/데이터 계약 링크 + ``` + +3. **PIT 모델** + ``` + ✅ published_at 정의 + ✅ effective_at 정의 + ✅ 정정 정책 (overwrite/append) + ✅ 보존 정책 + ``` + +--- + +## 의존성 + +- **Blocks:** VS-05 구현, Gate G1 Financial Data approval +- **Related:** OpenDart 통합 (AEG-X-009 기존), Cost Basis (DEBT-X), Valuation models +- **Prerequisite:** 소스 데이터 접근 확인 (라이선스 검증) + +--- + +**제출 기한:** 2026-08-21 (1주) +**승인자:** PM Lead, Architect, Compliance/Legal +**Escalation:** Chief Investment Officer diff --git a/docs/CURRENT/AEG-X-038_DECISION_APPROVAL.md b/docs/CURRENT/AEG-X-038_DECISION_APPROVAL.md new file mode 100644 index 00000000..beed91ec --- /dev/null +++ b/docs/CURRENT/AEG-X-038_DECISION_APPROVAL.md @@ -0,0 +1,142 @@ +# AEG-X-038: 수수료/세금/FX 유효시간 일정 승인 요청 + +**WBS Item:** AEG-X-038 +**Status:** ⏳ DECISION_REQUIRED → APPROVAL PENDING +**Decision Owner:** Ops/Tax/Compliance/Owner +**Blocks:** MaintainFeeTaxFxSchedule Slice (VS-06-01), Cost Basis Calculation, Portfolio Rebalancing +**Impact:** 금융 기능 완성 불가능, 정정 메커니즘 미정 + +--- + +## 필요한 5가지 결정 + +### 1️⃣ 소스 권한 (Source Authority) + +**결정:** 각 일정 유형별 승인된 데이터 소스 지정 + +| 일정 유형 | 현재 상태 | 승인 필요 | 비고 | +|---------|---------|---------|------| +| **수수료 (Fee)** | 미정 | ✅ 필요 | Commission 스키마에 ledger_id 추가됨, 소스 미정 | +| **세금 (Tax)** | 미정 | ✅ 필요 | 세율 테이블 미정, 업데이트 주기 미정 | +| **환율 (FX)** | 미정 | ✅ 필요 | 공식 환율 제공사 미정 | + +### 2️⃣ 시간 의미 (Temporal Semantics) + +**결정:** Effective 날짜와 Published 날짜의 의미 명확화 + +``` +effective_at: 일정이 실제로 적용되는 시점 + 예: "2026-08-15부터의 수수료 변경" + +published_at: 변경이 공포/승인되는 시점 + 예: "2026-08-14에 변경 사항 공포됨" + +Question: +- effective_at <= published_at인가? (사후 고시) +- 동시 가능한가? (사전 고시) +- 과거 적용 가능한가? (소급 적용) +``` + +### 3️⃣ 우선순위 및 범위 (Precedence & Scope) + +**결정:** 계좌 → 거래소 → 종목 → 관할권 계층 승인 + +``` +Precedence Order (highest to lowest): +1. 계좌별 (account_id) — 특정 계좌 특별 수수료 +2. 거래소별 (exchange_id) — 거래소 기본 수수료 +3. 종목별 (instrument_id) — 종목 기본 수수료 +4. 관할권별 (jurisdiction) — 국가/지역 기본값 + +Question: +- 계층별 Override 허용? +- 동시 적용 시 합산? 선택? +``` + +### 4️⃣ FX 범위 (FX Scope Boundary) + +**결정:** 환율 적용 경계 명확화 + +``` +Current uncertainty: +- 거래 통화 쌍 환율만? (e.g., KRW→USD) +- 중간 환율 (mid-rate) 사용? +- Bid/Ask 스프레드 포함? +- 수표/이체별 구분? + +Approval needed: +- FX 데이터 공식 소스 +- 환율 결정 시각 (execution time vs quote time) +- 소수 자릿수 정확도 +``` + +### 5️⃣ 운영 제어 (Operational Control) + +**결정:** Job 4C (Maintain Fee/Tax/FX) 실행 정책 + +``` +Questions: +- Job 4C 실행 주기? (daily/hourly/on-demand) +- 변경 검토 프로세스? (자동 vs 승인 필수) +- Rollback 절차? (변경 취소 가능?) +- 긴급 대응 프로토콜? (시스템 장애 시) + +Linked Items: +- J04C Job 실행 일정 +- DQ (Data Quality) 검증 규칙 +- Rollback 및 재처리 프로세스 +``` + +--- + +## 제출 형식 + +**승인자는 다음 정보 제공:** + +1. **소스 권한** + ``` + ✅ 수수료 소스: [지정] + ✅ 세율 소스: [지정] + ✅ 환율 소스: [지정] + ``` + +2. **시간 의미** + ``` + ✅ effective_at의 정의: [명확화] + ✅ published_at의 정의: [명확화] + ✅ 과거 적용 허용: [Yes/No] + ``` + +3. **우선순위** + ``` + ✅ 계층별 Override 규칙: [문서 링크] + ✅ 동시 적용 정책: [합산/선택] + ``` + +4. **FX 범위** + ``` + ✅ 환율 데이터 공식 제공사: [지정] + ✅ 환율 결정 시각: [execution/quote] + ✅ 정확도: [소수 자릿수] + ``` + +5. **운영 제어** + ``` + ✅ Job 4C 주기: [frequency] + ✅ 변경 검토: [자동/승인] + ✅ Rollback 절차: [문서 링크] + ``` + +--- + +## 의존성 + +- **Blocks:** VS-06-01 (MaintainFeeTaxFxSchedule 구현) +- **Related:** DEBT-X-COST (Cost Basis), Portfolio Reconciliation, Rebalancing +- **Timeline:** 승인 후 2주 이내 구현 가능 + +--- + +**제출 기한:** 2026-08-21 (1주) +**승인자:** Ops Lead, Tax Compliance, Owner +**Escalation:** Chief Financial Officer (필요시) diff --git a/docs/CURRENT/V13-FE-038_PERFORMANCE_DECISION_APPROVAL.md b/docs/CURRENT/V13-FE-038_PERFORMANCE_DECISION_APPROVAL.md new file mode 100644 index 00000000..96828c5c --- /dev/null +++ b/docs/CURRENT/V13-FE-038_PERFORMANCE_DECISION_APPROVAL.md @@ -0,0 +1,188 @@ +# V13-FE-038: 그리드 성능 기준 승인 요청 + +**WBS Item:** V13-FE-038 +**Status:** ⏳ IN_PROGRESS → DECISION_REQUIRED +**Decision Owner:** FE Lead/SRE/QA +**Blocks:** DataGrid production validation, 10k/100k fixture deployment, Performance SLO claim +**Impact:** 성능 예산 미정, 브라우저 환경 보장 불가, 규모 검증 불가 + +--- + +## 현재 상태 + +**문제:** +- AG Grid 번들 크기: 1,027,848 → 588,718 bytes (44% 감소) +- Vite 경고: >500 kB 청크 여전히 존재 +- 성능 예산: **미정** +- 브라우저 매트릭스: **미정** + +**구현 완료:** +- ✅ ClientSideRowModelModule 전환 (AllCommunityModule 제거) +- ✅ 청크 최적화 2회 시도 (추가 감소 없음) +- ✅ 로컬 빌드 검증 + +**검증 필요:** +- ⏳ 10k 행 × 100개 열 성능 정의 +- ⏳ 브라우저 호환성 행렬 +- ⏳ P95/P99 응답 시간 목표 + +--- + +## 필요한 3가지 결정 + +### 1️⃣ 성능 예산 (Performance Budget) + +**결정:** 그리드 성능의 정량적 기준 정의 + +``` +현재 상태: +✅ 개발 서버: 즉시 렌더링 (10k 행) +⏳ 프로덕션 빌드: >500kB 청크 경고 (최적화 여지 있음?) +⏳ 네트워크: P95 load time (필요 명시) +⏳ CPU: Long task 예산 (필요 명시) + +Required decisions: +✅ 초기 로드 시간: [ ] ms (P95) +✅ Scroll 응답성: [ ] ms (첫 픽셀까지) +✅ 필터/정렬: [ ] ms (사용자 액션 → 결과) +✅ Long task 예산: [ ] ms (메인 스레드 블로킹) +✅ 메모리 한계: [ ] MB (모바일 고려) +``` + +### 2️⃣ 브라우저 매트릭스 (Browser Matrix) + +**결정:** 지원 브라우저 및 버전 정의 + +``` +Current matrix (추정): +- Chrome 120+ +- Firefox 121+ +- Safari 17+ +- Edge 120+ + +Questions: +✅ 모바일 우선? (iOS Safari 버전) +✅ IE/Legacy 지원? (No로 가정) +✅ 태블릿 밀도: [ ] (compact/comfortable/touch) +✅ 네트워크 환경: [ ] (4G/5G/LTE) +✅ 디바이스 범주: [ ] (desktop/tablet/mobile) + +Associated metrics: +- 각 브라우저별 Long task 제한 +- 모바일 장치 성능 분류 (기본/중급/고급) +- 폴백 UI (성능 저하 시) +``` + +### 3️⃣ 10k/100k 테스트 환경 (Fixture Definition) + +**결정:** 성능 검증을 위한 테스트 데이터 및 서버 자원 + +``` +10k rows × 100 columns fixture: +✅ 데이터 구조: [스키마 정의] +✅ 컬럼 타입: [숫자/문자열/날짜 혼합] +✅ 행 크기: [ ] KB (직렬화) +✅ 정렬 전략: [ ] (쿼리 기반/클라이언트 기반) +✅ 필터 전략: [ ] (서버 사이드/클라이언트) + +100k rows fixture: +✅ 데이터 소스: [ ] (synthetic/production shadow) +✅ 서버 인프라: [ ] (t3.large? c5.xlarge?) +✅ 실행 반복: [ ] (single/multiple/stress) +✅ 네트워크 시뮬레이션: [ ] (none/throttle/WAN) + +Checksum & versioning: +✅ 기준선 애티팩트 SHA-256: [ ] +✅ 변경 추적: [ ] (git lfs? S3?) +✅ 재현성: [ ] (고정 seed, 리소스 고정) +``` + +--- + +## 제출 형식 + +**승인자는 다음 정보 제공:** + +### 1. Performance Budget Definition +```yaml +Initial Load: + P95 ms: [ ] + Devices: [ ] + Network: [ ] + +Interactivity: + First Paint: [ ] ms + First Contentful Paint: [ ] ms + +Scrolling: + Long Task Budget: [ ] ms + Frame Budget: 16ms (60fps) + +Memory: + Max Heap (Mobile): [ ] MB + Max Heap (Desktop): [ ] MB +``` + +### 2. Browser Support Matrix +```csv +Browser,Min Version,Mobile,Tablet +Chrome,120,, +Firefox,121,, +Safari,17,, +Edge,120,, +``` + +### 3. Test Fixture Spec +``` +10k Fixture: +- Schema: [link] +- Row size: [ ] KB +- Sorting: [ ] +- Filtering: [ ] + +100k Fixture: +- Source: [ ] +- Server size: [ ] +- Runs: [ ] +- Checksum: [ ] +``` + +--- + +## 의존성 + +- **Blocks:** V13-FE-004/023 (AG Grid 완성), 프로덕션 배포 +- **Related:** V13-FE-038 (이 항목), 성능 모니터링, RUM (Real User Monitoring) +- **Prerequisite:** AG Grid 라이선스 검증, 서버 자원 예약 + +--- + +## 현재 번들 상태 + +``` +Before: 1,027,848 bytes +After: 588,718 bytes +Saved: 439,130 bytes (42.7%) + +Gzip compression: +Before: 285.75 kB +After: 163.66 kB +Saved: 122.09 kB (42.7%) + +Vite warning still present: >500 kB chunk detected + Action needed: Further investigation or explicit acceptance +``` + +--- + +**제출 기한:** 2026-08-21 (1주) +**승인자:** FE Lead, SRE Lead, QA Lead +**Escalation:** Engineering Director (성능 SLO 최종 결정) + +--- + +## 참고 + +- AEG-X-002: Frontend build optimization (completed, established baseline) +- V13-FE-023: AG Grid server-side contract (in progress) +- Vite >500kB warning: 선택적 무시 또는 추가 청크 분할 필요