# BAT-015 Planning - Status: confirmed - Batch: BAT-015 - Profile: standard ## Included REQ - REQ-033 (Migration): ledger_trades.asset_id → portfolio_id 컬럼명 정합화 - REQ-034 (Interface): LoginRequest 추가 필드 거부 enforcement - REQ-035 (Interface): GET /health 응답에 db_enabled 필드 추가 ## Delivery Plan - 순서: REQ-034 → REQ-035 → REQ-033 - REQ-034 우선: 1줄 schema 변경 + pytest 422 회귀 (저위험·빠른 evidence) - REQ-035 후속: HealthResponse 확장 + baseline 문서 갱신 (저위험·문서 변경 포함) - REQ-033 마지막: Migration 동반 (가장 큰 변경, alembic revision + DB schema, staging dry-run 필요) - 선행 조건: - dcy-005 confirmed (2026-06-01) ✓ - REQ-033/034/035 Approved (2026-06-01) ✓ - 본 워크스페이스 개발용 메모리 확인 — prod 영향 검증은 release 단계 ✓ - batch 통합 회귀: 3건 변경 후 전체 pytest 회귀 + 로컬 smoke (`/health`, `/auth/login`, `/v1/portfolios/{id}/ledger/trades`) ## Dependencies - Internal: - dcy-005: Discovery 본문에 OQ-1/OQ-2/OQ-3 결정 명문화 완료 - REQ-021: 본 batch가 REQ-021 AC-5 follow-up을 해소(REQ-034). REQ-021 본문 변경은 본 batch 범위 밖이며 cross-reference만 추가. - REQ-029: 본 batch가 REQ-029 Notes follow-up을 해소(REQ-033). REQ-029 본문 변경은 본 batch 범위 밖. - REL-001: 별도 release로 분리 배포 진행 중. 본 batch는 REL-002로 분리. - External: - 없음 (외부 client/integration 의존 없음) ## Design Gate - Design Required Before Implementation: yes - Reason: REQ-033이 DB schema 마이그레이션을 동반하고 REQ-035가 baseline 문서(`docs/runtime-flows.md`) 갱신을 요구한다. Architecture impact가 있으므로 design 단계에서 architecture 결정과 baseline 갱신 계획을 명문화한 뒤 implementation 진입. ## Milestones 1. Design 단계: REQ-033 마이그레이션 전략 결정(ALTER COLUMN RENAME vs 별도 컬럼 추가+backfill), REQ-035 baseline 문서 갱신 위치 결정 2. Implementation 단계: REQ-034 → REQ-035 → REQ-033 순서로 구현 3. Verification 단계: pytest 회귀(전체 369+ passed 기대) + REQ-033 staging dry-run + 로컬 smoke (`/health` 응답, `/auth/login` 422, `/v1/portfolios/{id}/ledger/trades` 회귀) 4. confirm-batch-verification 후 confirm-req-implemented 3건 일괄 전환 ## Risks - R-1 (Low): REQ-033 ALTER COLUMN RENAME이 ledger_trades 테이블에 lock을 유발해 운영 영향 발생. - 대응: staging dry-run으로 lock 시간 측정(< 1초 권장), 짧은 단일 트랜잭션 패턴 적용. 본 워크스페이스는 개발용이라 prod 영향 검증은 release 단계. - R-2 (Low): REQ-034 `extra="forbid"`가 기존 ignored field를 보내던 외부 client를 silently 깨뜨림. - 대응: 본 워크스페이스 개발용이라 외부 monitoring 영향 없음. 회귀 테스트에서 기존 username/password만 보내는 케이스 통과 확인. - R-3 (Low): REQ-035 `HealthResponse` 확장이 strict JSON schema validation 사용 monitoring 도구를 깨뜨림. - 대응: 본 워크스페이스 개발용이라 영향 없음. prod 배포 시 사전 점검(REL-002 verification). - R-4 (Low): 3건 변경이 통합 회귀에서 예상치 못한 상호 영향 발생. - 대응: 각 REQ 구현 후 pytest 회귀 incremental 실행, batch 마지막에 전체 회귀.