- Add docs/srs/Interface/req-014_portfolio-create-user-required.md with acceptance criteria - Create docs/batches/bat-004_20260502_portfolio-create-user-required/ delivery batch - Enhance app/cli/commands/portfolio.py: validate user_id parameter before portfolio creation - Add comprehensive CLI tests in tests/test_cli.py for portfolio create validation flows - Update docs/batches/index.md and docs/srs/index.md with new requirement/batch references - Update README.md documentation
4.1 KiB
4.1 KiB
REQ-014: CLI portfolio create --user 필수화 및 소유자 설정
- Status: Implemented
- Type: Interface
- Priority: Medium
- Owner: repository-maintainers
Intent
- CLI
pfhub portfolio create는 현재--user옵션이 없어owner_user_id="system"고정값으로 포트폴리오가 생성된다. - 생성 시
--user <username>을 필수로 받아 실제 소유자의owner_user_id(UUID)로 포트폴리오가 생성되도록 강제한다. - REQ-013(
portfolio list --user필수화)과 대칭을 이루는 변경으로, 소유자 기반 포트폴리오 관리 정책을 CLI 전반에 일관되게 적용한다.
Requirement
- CLI
pfhub portfolio create명령은--user <username>옵션을 필수로 받아야 한다. --user없이 실행하면 오류 메시지를 출력하고 exit code 1로 종료해야 한다.--user로 전달된 username을repository.get_user_by_username(username)으로 조회하여owner_user_id(UUID)를 얻고, 이를PortfolioService.create_portfolio(owner_user_id=...)호출에 전달해야 한다.- 존재하지 않는 username이 전달되면 기존 CLI 오류 출력 형식과 일관된 오류 메시지를 출력하고 비정상 종료해야 한다.
Acceptance Criteria
- Given
--user옵션 없이pfhub portfolio create <id> --symbol X --force를 실행할 때, When 명령이 실행되면, Then 오류 메시지가 출력되고 exit code 1로 종료된다. - Given 유효한 username
alice로pfhub portfolio create <id> --symbol X --user alice --force를 실행할 때, When 명령이 실행되면, Then 생성된 포트폴리오의owner_user_id가 alice의 UUID로 설정된다. - Given 존재하지 않는 username으로 실행할 때, When 명령이 실행되면, Then "사용자를 찾을 수 없습니다" 형태의 오류 메시지가 출력되고 exit code 1로 종료된다.
- Given in-memory 모드에서
--user alice로 실행할 때, When 명령이 실행되면, Then DB 모드와 동일하게 alice의 UUID가owner_user_id로 설정된다. - Given 오류 발생 시, When 오류 메시지가 출력될 때, Then 메시지 형식은 기존 CLI 오류 출력 형식(Rich Console)과 일관성을 유지한다.
Impacted Area
- Docs:
README.md—pfhub portfolio create예제 라인에--user <username>옵션 추가
- Modules:
app/cli/commands/portfolio.py—create_portfolio명령 시그니처에--user필수 옵션 추가,_with_service_and_repo콜백 사용,owner_user_id전달
- Tests:
tests/test_cli.py— 기존test_cli_create_buy_and_delete_flow수정 + AC 1~4 커버 케이스 추가
Notes
PortfolioService.create_portfolio시그니처(owner_user_id: str = "system")는 변경하지 않는다. CLI 호출부에서만 실제 UUID를 전달한다.- REQ-013에서 도입한
_with_service_and_repo헬퍼를 그대로 사용한다. 추가 헬퍼 불필요. - minor-change fast path 적용: Discovery 생략, Approved 직행. 범위는 CLI 옵션 1개 추가이며 기존 서비스/repository 인터페이스 변경 없음.
- Source Discovery: 없음 (minor-change fast path)
Change Log
CHG-20260502-01
- Date: 2026-05-02
- Author: repository-maintainers
Change Summary
- REQ-014 최초 생성 (Approved 직행). minor-change fast path 적용. REQ-012, REQ-013 선례 동일 경로.
Intent
pfhub portfolio create의 소유자 설정 누락 문제를 CLI 레벨에서 해결.
CHG-20260502-02
- Date: 2026-05-02
- Author: repository-maintainers
Change Summary
- BAT-004 verification(44 passed) 기반으로 Approved → Implemented 전환.
Intent
- 구현 및 검증 증거 확보 완료 후 상태 동기화.
Acceptance Criteria Delta
- Added: AC 1~5 신규 작성
Impacted Area Delta
- Docs: README.md create 예제 갱신
- Modules: app/cli/commands/portfolio.py create_portfolio 수정
- Tests: tests/test_cli.py 케이스 추가/수정
Delivery Trace Delta
- Batches: none (batch 미생성)
- Releases: none
Revalidation Impact
- Reverification Needed: no
- Existing Implementation Invalidated: no
- Status Recommendation: keep-current
- Follow-up Action: draft-batch 진행