Files
KArtSell.Aegis/docs/WEEK1_EXECUTION_CHECKLIST.md
kjh2064 bc93b7df3c docs: Week 1 실행 계획 (전략적 로드맵, 19가지 원칙, 일일 체크리스트)
## 요약
- STRATEGIC_ROADMAP_2026_08_18.md: 4주 병렬화 계획
- EXECUTION_STRATEGY_19PRINCIPLES.md: 19가지 원칙 실행 전략
- WEEK1_EXECUTION_CHECKLIST.md: Day-by-day 실행 체크리스트

## 내용
- 현황 분석: COMPLETED 40+, IN_PROGRESS 25, BLOCKED 9
- 목표: 의존성 제거 3개, FE 병렬 8개 시작, 현장감 검증
- 일정: 2026-08-18 ~ 08-25 (8일)

## 19가지 원칙 매핑
 SOLID, 정규화, 패턴화, 표준화, 구조화, 재현성, 정공법
 코드리팩토링, 데이터정합, 과유불급, 역정규화, 프로세스
 바이브코딩, 홀루시네이션방지, 현장감, 이력성, 안정성, 고도화, 컴포넌트화, 기술부채

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-18 12:58:04 +09:00

14 KiB

Week 1 실행 체크리스트 (2026-08-18 ~ 08-25)

상태: 🟢 ACTIVE
목표: 의존성 제거 + 현장감 검증 + FE 병렬 시작
소유자: 전체 팀
기한: 2026-08-25 (8일)


🎯 Week 1 목표 (3개)

  1. PostgreSQL 연결 복구 (차단 제거)
  2. 현장감 검증 (Host/DB/API 실제 동작)
  3. FE 병렬 작업 시작 (8개 컴포넌트 typecheck green)

📋 Daily Action Items

Day 1 (2026-08-18, Monday)

Task 1: PostgreSQL 재설정 (1시간)

# 터미널 1: SSH 터널 (계속 열어두기)
ssh -L 5432:127.0.0.1:5432 kjh2064@178.104.200.7

# 로그인 성공 신호:
# Last login: ...
# (아무 프롬프트도 표시되지 않음 = 정상)

# 터미널 2: 연결 확인
psql -h localhost -U kartsell -d kartsell -c "SELECT version();"

# 예상 결과:
# version
# PostgreSQL 15.x on x86_64-pc-linux-gnu, ...

증거 기록:

  • SSH 터널 확인 (ps aux | grep ssh)
  • psql 버전 출력 캡처
  • 파일: evidence/WEEK1/postgresql-connection.log

Task 2: 의존성 분석 (2시간)

# 현재 BLOCKED 항목 확인
grep "^AEG-" docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv | grep "BLOCKED" | cut -d, -f1,4

# 예상 결과:
# AEG-VS-05-01,IngestFundamentalsPIT
# AEG-VS-06-01,MaintainFeeTaxFxSchedule
# AEG-X-038,Reconfirm Fee/Tax/FX valid-time schedule decisions
# AEG-X-011,Golden vector 고도화
# AEG-VS-09-01,BuildEvidenceSnapshot
# AEG-VS-19-01,RunFrozenBacktest
# AEG-V16-015,Adapter rollback runbook
# AEG-V16-016,Vendor boundary fitness
# AEG-V16-017,FieldShell 표준

의사결정 필요한 것 (PM에 전달):

# PM 의사결정 요청 (48시간 내 답변 필요)

## 1️⃣ AEG-VS-05/06 정책 결정

현재:
- AEG-VS-05: IngestFundamentalsPIT (공시/재무/컨센서스)
- AEG-VS-06: MaintainFeeTaxFxSchedule (수수료/세금/FX)

질문: Phase 2에 포함할까, Phase 3에서?
- Phase 2 포함 → 9월 15일 완료 필요
- Phase 3 포함 → 11월 1일 이후 시작

영향:
- Phase 2 포함: FE 15개 + BE 2개 추가 (2주)
- Phase 3 포함: 현재 일정 유지 (Phase 2 45일만 필요)

추천: Phase 3 포함 (현재 병렬화 유지)

증거 기록:

  • 파일: docs/CURRENT/WEEK1_BLOCKER_DECISIONS.md 생성
  • PM 메신저/이메일 전송
  • 답변 대기 중 표시

Task 3: Host 로컬 실행 테스트 (1시간)

# Terminal 3: Host 시작 (DEVELOPMENT 모드)
cd src/KArtSell.Host

# 환경 변수 설정 (test keys, 실제 KIS/KRX 안 호출)
export KRX_OPENAPI="test-key-xxx"
export OPENDART_API="test-key-yyy"
export KIS_APP_KEY="test-key-zzz"

# Host 시작
dotnet run -c Debug --no-build

# 예상 출력:
# info: Microsoft.Hosting.Lifetime[14]
#       Now listening on: http://127.0.0.1:5002
# info: Microsoft.Hosting.Lifetime[0]
#       Application started. Press Ctrl+C to shut down.

증거 기록:

  • Host 시작 로그 캡처: evidence/WEEK1/host-startup.log
  • 시간 기록: 시작 시간

Task 4: Shadow Run API 호출 테스트 (30분)

# Terminal 4: API 호출 (Host 실행 중일 때)

# 테스트 요청 만들기
cat > /tmp/shadow-run-request.json << 'EOF'
{
  "modelId": "00000000-0000-0000-0000-000000000001",
  "windowStart": "2024-01-02",
  "windowEnd": "2024-09-10",
  "phaseFilter": "All"
}
EOF

# API 호출
curl -X POST http://127.0.0.1:5002/api/shadow-runs \
  -H "X-KArtSell-User: test-user" \
  -H "X-KArtSell-Role: Admin" \
  -H "Content-Type: application/json" \
  -d @/tmp/shadow-run-request.json \
  -v

# 예상 결과:
# HTTP/1.1 202 Accepted
# Location: /api/shadow-runs/87d0fdf3-30ca-4097-822d-1119a3ebdb87

증거 기록:

  • 응답 코드: 202 확인
  • Location 헤더에 RunId 있음
  • 파일: evidence/WEEK1/api-202-accepted.txt

Task 5: DB 상태 확인 (30분)

# PostgreSQL 연결 (Terminal 1의 터널 사용)
psql -h localhost -U kartsell -d kartsell

-- 1. Shadow Run 기록 확인
SELECT run_id, model_id, status, created_at 
FROM model_operations.shadow_runs 
ORDER BY created_at DESC LIMIT 5;

-- 2. 메트릭 저장 확인
SELECT model_id, metric_name, value, published_at
FROM model_operations.shadow_run_metrics
WHERE run_id = '<위의 run_id>'
LIMIT 5;

-- 3. 감사 추적 확인
SELECT actor_id, action, resource_id, published_at
FROM compliance.audit_events
WHERE published_at > NOW() - INTERVAL '1 hour'
LIMIT 5;

증상태 기록:

  • shadow_runs 테이블에 새 행 1개 이상
  • shadow_run_metrics 데이터 있음
  • audit_events 기록 있음
  • 파일: evidence/WEEK1/db-status.sql (쿼리 결과)

Day 2-3 (2026-08-19 ~ 08-20, Tue-Wed)

Task 6: FE 컴포넌트 병렬 시작 (4시간)

# Frontend 작업 시작 (8개 컴포넌트)
cd frontend

# 1. 현재 상태 확인
pnpm typecheck
pnpm test

# 예상: 모두 PASS 또는 알려진 실패만

# 2. 작업 분할 (팀 3명)
# Person A (Task 6a): V13-FE-007 + V13-FE-024 (State Panel + Permission Guard)
# Person B (Task 6b): V13-FE-033 + V13-FE-028 (ProblemDetails + Reconciliation API)
# Person C (Task 6c): V13-FE-034 + V13-FE-036 + V13-FE-037 (Idempotency, T12 Work Queue, T11 Fast Entry)

# 3. 각 Task별 실행 (독립적으로 진행)
# Task 6a 예시
cd frontend/src/features/ui-standard/pages
# V13-FE-007 파일 수정
# V13-FE-024 파일 수정
pnpm test -- V13-FE-007  # 타겟 테스트만
pnpm typecheck

# 4. 병합 대기 (모두 PASS까지)

증거 기록:

  • 각 Task별 typecheck PASS
  • 각 Task별 test PASS (또는 알려진 실패만)
  • 파일: evidence/WEEK1/fe-parallel-day2-day3.md

Task 7: Backend 스케줄 통합 테스트 (4시간)

# AEG-V15-033~036 DB 통합
cd src/KArtSell.Modules.ModelOperations

# 1. 현재 상태 확인
dotnet test tests/KArtSell.ModelOperations.UnitTests/ -c Release \
  --filter "ScheduleOccurrence|DueModelOperation|DispatcherCas"

# 예상: 모두 PASS (도메인 구현 완료)

# 2. DB 통합 테스트 추가
# File: tests/KArtSell.Integration.Tests/Scheduling/ScheduleIntegrationTests.cs
# Tests:
#   - InsertSchedule_WithCatchUpPolicy → DB 저장 ✅
#   - QueryNextOccurrence → PIT query ✅
#   - UpdateNextDueAt_CAS → 낙관적 동시성 ✅

dotnet test tests/KArtSell.Integration.Tests/Scheduling/ -c Release

# 3. 마이그레이션 검증
# Existing: MIG-0020 (scheduled_for 컬럼)
# 검증: fresh/upgrade/re-run 테스트

dotnet test tests/KArtSell.Integration.Tests/DbUpMigrationTests.cs -c Release \
  --filter "0020"

증거 기록:

  • 4개 도메인 테스트 모두 PASS
  • 2개 통합 테스트 추가 및 PASS
  • 마이그레이션 테스트 PASS
  • 파일: evidence/WEEK1/schedule-integration.log

Day 4-5 (2026-08-21 ~ 08-22, Thu-Fri)

Task 8: AEG-X-011 Golden Vector 작성 (4시간)

# Phase 1 결과를 사용해서 Golden vector 작성
# 기존: AEG-X-011 BLOCKED (Phase 1 완료 대기)
# 현재: Phase 1 완료됨 (2026-08-14, RunId 87d0fdf3)

# 1. Phase 1 메트릭 수집
psql -h localhost -U kartsell -d kartsell << 'EOF'
SELECT 
  run_id,
  model_id,
  sharpe_ratio,
  total_return,
  max_drawdown,
  pbo_percent,
  dsr_value,
  created_at
FROM model_operations.shadow_runs
WHERE run_id = '87d0fdf3-30ca-4097-822d-1119a3ebdb87';
EOF

# 2. Golden vector 정의 (docs/CURRENT/AEG-X-011_GOLDEN_VECTOR.md)
cat > docs/CURRENT/AEG-X-011_GOLDEN_VECTOR.md << 'EOF'
# Golden Vector (Phase 1 Baseline)

**Source:** Phase 1 Shadow Run (2026-08-14)  
**RunId:** 87d0fdf3-30ca-4097-822d-1119a3ebdb87  
**Period:** 2024-01-02 ~ 2024-09-10 (252 trading days)

## Metrics

| Metric | Value | Status |
|--------|-------|--------|
| Sharpe Ratio | 7.59 | ✅ Target ≥ 1.5 |
| Total Return | 557.68% | ✅ Strong |
| Max Drawdown | -12.3% | ✅ Acceptable |
| Num Signals | 432 | ✅ Active |

## Algorithm Version

- EMA(20, 50)
- Position sizing: dynamic (0.5-5.0%)
- Fee model: 2x (conservative)

## Regression Test Cases

1. Replay with same input → same output ✅
2. Replay with +1 day → metrics stable ✅
3. OOS (Aug-Sep 2024) → validate performance
EOF

# 3. Golden data 파일 생성
cat > evidence/AEG-X-011/golden-baseline-87d0fdf3.json << 'EOF'
{
  "runId": "87d0fdf3-30ca-4097-822d-1119a3ebdb87",
  "modelId": "00000000-0000-0000-0000-000000000001",
  "period": {
    "start": "2024-01-02",
    "end": "2024-09-10"
  },
  "metrics": {
    "sharpe": 7.59,
    "return": 557.68,
    "drawdown": -12.3,
    "signals": 432
  },
  "signals": [
    { "date": "2024-01-02", "ticker": "SAMSAUNG", "action": "BUY", "confidence": 0.95 },
    ...
  ]
}
EOF

# 4. 테스트 작성
cat > tests/KArtSell.ModelOperations.UnitTests/GoldenVectorTests.cs << 'EOF'
public class GoldenVectorTests
{
    [Fact]
    public async Task ReplayGoldenVector_ReturnsConsistentMetrics()
    {
        // Arrange
        var goldenVector = LoadGoldenVector("87d0fdf3");
        var replay = new ShadowRunReplay(goldenVector);
        
        // Act
        var result = await replay.ExecuteAsync();
        
        // Assert
        Assert.Equal(7.59, result.SharpeRatio, precision: 0.01);
        Assert.Equal(557.68, result.TotalReturn, precision: 1.0);
        Assert.Equal(432, result.SignalCount);
    }
}
EOF

# 5. 테스트 실행
dotnet test tests/KArtSell.ModelOperations.UnitTests/GoldenVectorTests.cs -c Release

증거 기록:

  • docs/CURRENT/AEG-X-011_GOLDEN_VECTOR.md 생성
  • evidence/AEG-X-011/golden-baseline-*.json 생성
  • GoldenVectorTests 작성 및 PASS
  • WBS_PROGRESS_TRACKER 업데이트 (AEG-X-011 COMPLETED)

Task 9: AEG-VS-29 & AEG-X-016 재검증 (2시간)

# AEG-VS-29: Reconciliation (DB-unverified)
# 현재: PostgreSQL 연결 불가였음 → 이제 연결됨

dotnet test tests/KArtSell.Integration.Tests/ -c Release \
  --filter "ReconciliationEngineTests|ReconciliationRequestValidator"

# 예상: 이전 실패 → 이제 PASS

# AEG-X-016: KIS hard-off (endpoint disabled)
# 현재: Test proves 0 HTTP calls

dotnet test tests/KArtSell.Integration.Tests/ -c Release \
  --filter "KisTradingHardOffTests"

# 예상: 1/1 PASS

증거 기록:

  • Reconciliation 통합 테스트 PASS
  • KIS hard-off 테스트 PASS
  • 파일: evidence/WEEK1/vs29-x016-revalidation.log

Day 6-7 (2026-08-23 ~ 08-24, Sat-Sun)

Task 10: Week 1 최종 검증 (2시간)

# 1. 전체 테스트 실행
dotnet test KArtSell.sln -c Release

# 예상:
# - 원래: 176/176 tests
# - 이제: 180+/180+ tests (AEG-V15, AEG-X-011 추가)
# - 모두 PASS

# 2. Frontend 테스트
cd frontend
pnpm test && pnpm typecheck && pnpm build

# 예상:
# - V13-FE-007~037 (15개) 중 8개 완료
# - 모두 typecheck PASS
# - 모두 build PASS

# 3. WBS 진행도 업데이트
grep "^AEG-VS-29\|^AEG-X-016\|^AEG-X-011\|^V13-FE-007\|^V13-FE-024\|^V13-FE-033\|^V13-FE-028\|^V13-FE-034\|^V13-FE-036\|^V13-FE-037" \
  docs/CURRENT/CATALOGS/WBS_PROGRESS_TRACKER.csv

# 예상: 3개 해제 (AEG-X-011, AEG-VS-29, AEG-X-016)
#       8개 진행 중 (V13-FE series)

증거 기록:

  • 전체 테스트 결과: evidence/WEEK1/all-tests-final.log
  • WBS_PROGRESS_TRACKER 최종 업데이트
  • 파일: docs/WEEK1_COMPLETION_REPORT.md

Day 8 (2026-08-25, Monday)

Task 11: Week 1 보고 (1시간)

# Week 1 완료 보고서

## 목표 달성도

### 1️⃣ PostgreSQL 재설정 ✅ COMPLETED
- SSH 터널 설정
- 로컬 DB 연결 확인
- 모든 연결 기반 테스트 PASS

### 2️⃣ 현장감 검증 ✅ COMPLETED
- Host 로컬 실행 성공
- API 호출 (202 Accepted) ✅
- DB 상태 확인 ✅
- 감사 추적 기록 ✅

### 3️⃣ FE 병렬 시작 ✅ IN PROGRESS
- 8개 컴포넌트 typecheck PASS ✅
- 8개 컴포넌트 test PASS ✅
- 7개 컴포넌트 build PASS ✅
- Week 2에 15개 모두 완료 예정

### 4️⃣ 의존성 제거 ✅ COMPLETED
- AEG-X-011 (Golden Vector) ✅ COMPLETED
- AEG-VS-29 (Reconciliation) ✅ PASS (DB 연결 후)
- AEG-X-016 (KIS hard-off) ✅ PASS
- AEG-VS-05/06 의사결정 대기 중

## 메트릭

| 항목 | Week 0 | Week 1 | 변화 |
|------|--------|--------|------|
| COMPLETED | 40 | 43 | +3 ✅ |
| IN_PROGRESS | 25 | 33 | +8 ✅ |
| BLOCKED | 9 | 6 | -3 ✅ |
| Test Count | 176 | 183 | +7 ✅ |
| Build Status | ✅ | ✅ | 유지 |

## 위험 & 이슈

### 해결됨 ✅
- PostgreSQL 연결 불가 → SSH 터널로 해결
- DB 마이그레이션 테스트 실패 → 권한 문제, 문서화됨

### 진행 중 ⏳
- AEG-VS-05/06 정책 결정 (PM 대기)
- AEG-V16-015/016 선행 조건 확인

### 다음주 예정 ⏰
- 15개 FE 컴포넌트 완료
- 4개 Schedule 도메인 DB 통합
- Phase 2 Go/No-Go 준비

## 다음 단계 (Week 2)

- [ ] AEG-VS-05/06 정책 승인 받기 (또는 Phase 3로 연기)
- [ ] 15개 FE 컴포넌트 최종화
- [ ] 4개 Schedule DB 통합 완료
- [ ] AEG-X-008 OpenAPI CI/CD 연동

증거 기록:

  • 파일: docs/WEEK1_COMPLETION_REPORT.md
  • 메모리 업데이트: session_20260825_week1_complete.md

체크리스트 요약

Daily Verification

  • Day 1 (08-18): PostgreSQL + API + DB 상태 확인
  • Day 2-3 (08-19~20): FE 8개 + Schedule 도메인 병렬
  • Day 4-5 (08-21~22): Golden Vector + 재검증
  • Day 6-7 (08-23~24): 최종 검증
  • Day 8 (08-25): Week 1 보고서

19가지 원칙 검증 (Week 1 버전)

  • SOLID: cyclomatic ≤ 10 (Architecture tests)
  • 코드리팩토링: DRY (중복 감지)
  • 데이터정합: PIT query 검증
  • 과유불급: 불필요 코드 제거
  • 정규화: Schema 3NF
  • 역정규화: Projection 최신성
  • 프로세스: 병렬 작업 시작
  • 패턴화: Vertical Slice 준수
  • 표준화: 명명/형식 일관
  • 구조화: CorrelationId 추적
  • 바이브: 테스트 80%+
  • 홀루시네이션: 근거 기반
  • 현장감: Host 로컬 실행
  • 재현성: 스크립트 재실행
  • 이력성: Audit 기록
  • 안정성: 4가지 실패 모드
  • 고도화: Phase 2 준비
  • 컴포넌트: 모듈 격리
  • 정공법: no shortcuts
  • 기술부채: 월별 20%

준비: READY
시작: 2026-08-18 (오늘)
마감: 2026-08-25 (일주일)
보고: Week 1 완료 보고서