Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VHtM5Ws1HKCKQ4JGi6GRb5
2.2 KiB
2.2 KiB
BAT-020 Implementation
변경 파일 요약
| 파일 | 변경 | REQ |
|---|---|---|
app/domain/models.py |
BrokerCredential.daemon_id: str | None = None 추가 |
app/repositories/postgres.py |
_row_to_broker_credential 7컬럼 지원, upsert/list/delete daemon_id 파라미터, update_broker_credential_daemon_id 메서드 신규 | REQ-046, REQ-048 |
app/schemas/v1.py |
UserInfoResponse: brokers list 제거, broker: BrokerItem | None = None 추가 |
app/api/v1_user_info.py |
daemon_id=None → 403, daemon_id 기반 단일 broker 조회, 로그 개선(app_secret 미노출) | REQ-049, REQ-051 |
app/cli/commands/credential.py |
set/list/remove --daemon-id 옵션, backfill-daemon-id subcommand | REQ-048, REQ-050 |
migrations/versions/20260628_0026_*.py |
broker_credentials daemon_id TEXT NULL 컬럼 추가 (Step1) | REQ-047 |
migrations/versions/20260628_0027_*.py |
broker_credentials PK 전환 (Step2, 사장님 결재 후 적용) | REQ-047 |
tests/test_bat020_broker_credential_domain.py |
REQ-046 AC-1~6 단위 테스트 신규 | REQ-046 |
tests/test_bat020_user_info_daemon_scoped.py |
REQ-049/051 AC 전체 테스트 신규 | REQ-049, REQ-051 |
tests/test_bat020_credential_cli.py |
REQ-048/050 AC 전체 테스트 신규 | REQ-048, REQ-050 |
tests/test_v1.py |
brokers→broker 반영, daemon_id=None → 403 반영, 기존 테스트 갱신 | REQ-049 |
tests/test_cli.py |
FakeRepo 시그니처 갱신, credential 플로우 테스트 --daemon-id 포함 | REQ-050 |
tests/test_daemon_assignment.py |
daemon_id=None → 403 정책 갱신 | REQ-049 |
Design 위임 확정 결과
D-1: REQ-048 구현방식 → CLI subcommand 선택
pfhub credential backfill-daemon-id --user <username> --daemon-id <slug> [--dry-run] [--force] [--broker <broker>]- 근거: 운영자 제공 매핑 필요, --dry-run 자연스러운 구현, 기존 CLI 패턴과 일관성
D-2: REQ-050 --daemon-id 입력 타입 + 과도기 정책
- daemon_slug 우선 (
get_daemon_by_slug(owner_user_id, slug)) + UUID 폴백 (get_daemon_by_id) - 과도기(Step1 완료, Step2 미완료):
--daemon-id미제공 시 경고 출력 + 허용 - Step2 PK 전환 후: DB NOT NULL 제약으로 자동 강제