Files
portfolio-hub/docs/srs/Interface/req-014_portfolio-create-user-required.md
T
genichin a111fdd83f feat(REQ-014): add portfolio-create-user-required requirement and implementation
- 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
2026-05-02 13:45:46 +00:00

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

  1. Given --user 옵션 없이 pfhub portfolio create <id> --symbol X --force를 실행할 때, When 명령이 실행되면, Then 오류 메시지가 출력되고 exit code 1로 종료된다.
  2. Given 유효한 username alice로 pfhub portfolio create <id> --symbol X --user alice --force를 실행할 때, When 명령이 실행되면, Then 생성된 포트폴리오의 owner_user_id가 alice의 UUID로 설정된다.
  3. Given 존재하지 않는 username으로 실행할 때, When 명령이 실행되면, Then "사용자를 찾을 수 없습니다" 형태의 오류 메시지가 출력되고 exit code 1로 종료된다.
  4. Given in-memory 모드에서 --user alice로 실행할 때, When 명령이 실행되면, Then DB 모드와 동일하게 alice의 UUID가 owner_user_id로 설정된다.
  5. 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 진행