Files
portfolio-hub/.proofline/lines/line-0003/evidence/implementation-complete.md
T
genichin 6e02d92282 Add ProofLine criteria documentation and Strategy Catalog v1 implementation
- Add acceptance criteria documentation (AC-0013 through AC-0023)
- Add Line-0003 discovery documentation
- Implement Strategy Catalog v1 with new database migration
- Update portfolio API endpoints and schemas
- Refactor strategy and portfolio services
- Add strategy management CLI commands
- Update domain models with strategy catalog support
- Add comprehensive tests for v1 strategies
- Update design documentation (data model, interfaces, runtime flows)
2026-08-15 11:18:31 +09:00

3.9 KiB

구현 완료 — GitHub Issue #26 비정식 증적

이 문서는 ProofLine canonical lifecycle artifact가 아니다. #26 구현 당시 GitHub 댓글을 출처와 함께 원문 보존한 비정식 증적이다. 이 증거는 로컬 구현·검증 상태를 기록하지만 ProofLine 정식 implementation chronology, delivery closure, push, PR, 원격 main 반영, release 또는 deployment 완료를 소급 증명하지 않는다. Source: https://github.com/fourblocks2020/portfolio-hub/issues/26#issuecomment-5291927258 Comment ID: IC_kwDOR4l8PM8AAAABO2xm2g Author: genichin Created: 2026-08-14T09:48:42Z Original body SHA-256: c3bc9a3ad6c9cc6678ed700a11add03b1f5abe71645a21e157dc091faec28f10 Original body boundary: 아래 --- 다음 byte부터 파일 끝까지가 GitHub 원문 body다.


구현 완료

이슈 #26 전략 API v1 이전 및 관리자 전역 카탈로그 권한 분리의 승인 범위를 로컬 main 작업 트리에 구현하고 실제 PostgreSQL 검증 및 독립 QC까지 완료했습니다.

구현 내용

  • 비버전 /strategy-sets 제거 및 전략 API /v1 이전
    • 일반 사용자: active 전략 조회 전용 /v1/strategies
    • 관리자: 전체 전략 카탈로그 CRUD /v1/admin/strategies
  • 전략 카탈로그에 active/inactive 상태와 revision 도입
  • 신규 전략 revision 1, 실질적 PATCH만 revision 증가, no-op 유지
  • 동시 PATCH를 FOR UPDATE로 직렬화하고 최신 name/config 기준으로 derived nick 계산
  • 포트폴리오 create/update에서 기존 active strategy_id만 선택
  • strategy_name·strategy_params를 통한 간접 전략 생성 차단
  • 전략 선택의 FOR SHARE와 포트폴리오 저장을 같은 트랜잭션으로 묶어 inactivate/delete race 차단
  • 전략 DELETE의 FOR UPDATE·두 참조 형태 검사·삭제를 한 트랜잭션으로 통합
  • stale BUY/SELL snapshot이 전략 선택 컬럼을 덮어쓰지 못하도록 거래 저장 책임 분리
  • 거래 portfolio UPDATE와 ledger INSERT 원자화
  • 포트폴리오 응답에 최신 strategy_revision 노출
  • 기본 target_value/{} 전략 migration과 runtime nick 파생 규칙 통일
  • CLI, 문서, migration 및 동시성 회귀 테스트 갱신

실제 검증 결과

  • 이슈 집중 회귀: 99 passed
  • 실제 PostgreSQL 동시성·migration 통합 테스트: 최종 4 passed
    • 동시 partial PATCH의 nick/revision 일관성
    • 전략 선택 대 DELETE race의 orphan 방지
    • stale A snapshot → B 선택 → A 삭제 → stale BUY 저장 후 B 유지
    • 신규 DB 전체 Alembic upgrade 및 head 재실행
  • 관련 최종 회귀: 75 passed
  • 알려진 기존 문제 파일 제외 광범위 회귀: 608 passed, 3 skipped
  • 독립 최종 QC 재실행: PostgreSQL 4 passed, focused 37 passed, 4 skipped
  • Python compile, git diff --check, 변경 핵심 파일 Ruff 검사: 통과
  • 독립 QC 최종 판정: PASS

전체 broad 실행에 남은 3건은 저장소 밖 temp/deleted_20260813/.worktrees를 스캔하는 기존 환경 오염 실패로, 이번 변경에 의한 회귀가 아닙니다.

비차단 후속 권고

  • PostgreSQL 통합 테스트 cleanup을 fixture/finally 기반으로 강화하면 테스트가 중간 실패·중단될 때의 잔여 fixture 방지를 개선할 수 있습니다. 현재 성공 경로 cleanup은 QC 전후 잔여 레코드 수가 동일해 정상입니다.

완료 경계

  • 완료: 로컬 구현, 실제 테스트, migration 검증, 문서 갱신, 독립 QC
  • 미수행: 커밋, push, PR, 원격 main 반영, 이미지 게시, 운영 설정 변경, 배포, 릴리스

현재 변경은 기준 HEAD 5fc389dea8f05c6f711ecfe874f055979af5e58d의 로컬 main 작업 트리에 미커밋 상태로 보존되어 있습니다. 이 댓글은 제품 구현·검증 완료를 뜻하며 배포·릴리스 또는 이슈 lifecycle closure를 뜻하지 않습니다.