Quote#schedule_apply! — 기존 scheduled_quote 미정리 시 반복 적용 차단
Fix Plan: [Quote][N7KE58TH44] Quote application failed: Billable already has a scheduled quote: 870
상태: SKIPPED (코드 변경 없음)#
이유#
RCA(rca.mdx) 의 Fix Recommendation → 즉시 조치 첫 항목이 다음과 같이 명시함:
코드 변경 불필요. 현재 관측된 로그는
schedule_apply!의 의도된 방어 가드가 정상 작동한 결과이며 코드 버그가 아니다.
따라서 자동 code-fix 로 처리할 코드 변경 항목이 없음.
검토된 후보와 각 제외 사유#
| # | 후보 | 출처 | 제외 사유 |
|---|---|---|---|
| 1 | Workspace 530 의 scheduled_quote_id, scheduled_billing_started_at 을 nil 로 정리하고 원하는 새 Quote 재적용 |
RCA 즉시 조치 §1 | Operations/DB 작업. 코드 변경 아님. admin/영업 담당 협의 후 수행. |
| 2 | Quote 870 이 시작일 도달 시 cron 이 activate_scheduled! 로 자동 전환하도록 대기 |
RCA 즉시 조치 §2 | 운영 판단(정책) — 코드 변경 아님. |
| 3 | app/models/quote.rb:168 에러 문구를 scheduled_quote.number 로 노출 (UX 개선) |
RCA 즉시 조치 §3 | 순수 코드 변경 후보지만 (a) RCA 자체가 "코드 변경 불필요" 를 앞세우고 있고, (b) 변경 대상이 사용자/admin 이 보는 문구여서 프런트엔드/문서와 함께 조율되는 편이 안전. 자동 PR 대상 아님 — hand-off 로 이관. |
| 4 | Admin UI 에 "예약된 Quote 를 먼저 취소해야 합니다" 안내 표시 | RCA 단기 개선 §1 | RCA 가 명시적으로 "프런트엔드 담당자와 협의 필요 — 자동 code-fix 범위 밖" 이라 표기. |
| 5 | Api::V1::Admin::QuotesController#apply 응답에 existing_scheduled_quote 페이로드 추가 |
RCA 단기 개선 §2 | 프런트엔드 계약 변경을 수반하는 API 스키마 확장 — 조율 필요, 자동 반영 부적합. |
| 6 | Workspace 530 대상 Cupix::Cron::ScheduledQuote.activate_for 실패 로그 소급 조회 |
RCA 단기 개선 §3 | 조사 태스크(코드 변경 아님). |
| 7 | 다중 예약 큐/force: true 옵션 도입 |
RCA 장기 개선 | 정책 결정 필요 — code-fix 대상 아님. |
Changes#
없음.
Acceptance Criteria#
- RCA 가 "코드 변경 불필요" 임을 확인.
- 잔여 항목이 모두 운영/조율/정책 결정임을 확인.
- Jira, worktree, PR 을 생성하지 않음.
Tests#
해당 없음 (코드 변경 없음).
Hand-off#
summary.mdx 의 hand-off 섹션 참고.