Repository navigation
[FIX] 없는 Free 요금제를 시스템 화면에서 걷어낸다 #238 - #242
hyun030514 wants to merge 2 commits into
Conversation
요금제는 유료 하나뿐인데(CLAUDE.md §요금제) 운영자 화면이 아직 Free를 보여줬다. 대시보드는 "62개사 중 24개사가 무료"라고 말했고, 구독 금액도 `plan === TEAM`이 아니면 0원으로 쳤다 — 운영자가 잘못된 회사 현황을 보고 판단하게 된다. PR #75가 범위 밖으로 미뤄 둔 항목이다. - 상수: `PLAN`·`Plan`·`PLAN_LABEL`을 지운다. 값을 남겨 두면 화면이 "어느 플랜이냐"를 다시 묻기 시작하고, 그 순간 없는 무료 요금제가 되살아난다. - 플랜 분포 도넛: 플랜이 하나면 "분포"라는 개념이 없다 — 카드·차트·로더를 지운다. - 구독 금액: 플랜으로 가르지 않는다. 모든 기업이 결제 대상이라 0원짜리 구독은 없다. 테스트도 "0원도 결제일 없는 건도 없다"로 바꿔 되살아나면 빨개진다. - MRR 보조문구 `Team N개사` → `월 반복 매출`. 자리를 채우려고 없던 지표를 지어내지 않는다. 빈 곁 컬럼에는 **이미 있는 값**을 옮겨 왔다(처리 큐 — 시스템 모니터링과 같은 소스). 대시보드의 나머지가 전부 기업·매출 축이라 시스템이 지금 건강한지는 아무 데도 없었다.
|
Warning Review limit reached
Next review available in: 38 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthrough시스템 대시보드에서 플랜 분포 카드를 제거하고 파이프라인 큐 카드를 표시합니다. 플랜 관련 타입, 상수, 목 데이터, 차트 컴포넌트를 삭제했습니다. 구독 목 데이터는 모든 기업에 인원별 단일 요금을 적용합니다. Changes시스템 대시보드 전환
Estimated code review effort: 2 (Simple) | ~15 minutes Sequence Diagram(s)sequenceDiagram
participant DashboardPage
participant DashboardOverview
participant PipelineQueueCard
DashboardPage->>DashboardOverview: pipelineQueue 조회
DashboardOverview->>PipelineQueueCard: PipelineQueueSummary 전달
PipelineQueueCard-->>DashboardPage: 큐 상태 카드 표시
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/features/system/components/pipeline-queue-card.tsx (1)
16-16: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win
PipelineQueueCardProps인터페이스를 분리하십시오.현재 인라인 props 타입은 명시적 props interface 요구사항에 맞지 않습니다.
PipelineQueueCardProps를 정의하고 컴포넌트 인수에 적용하십시오.수정 예시
+interface PipelineQueueCardProps { + queue: PipelineQueueSummary; +} + -export function PipelineQueueCard({ queue }: { queue: PipelineQueueSummary }) { +export function PipelineQueueCard({ queue }: PipelineQueueCardProps) {As per coding guidelines, “Use explicit props interfaces” 규칙을 적용하십시오.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/features/system/components/pipeline-queue-card.tsx` at line 16, Define a named PipelineQueueCardProps interface containing the queue: PipelineQueueSummary prop, then update PipelineQueueCard to use that interface instead of the inline argument type.Source: Coding guidelines
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@src/features/system/components/pipeline-queue-card.tsx`:
- Line 16: Define a named PipelineQueueCardProps interface containing the queue:
PipelineQueueSummary prop, then update PipelineQueueCard to use that interface
instead of the inline argument type.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: f77b074a-fb62-4dfd-9957-5397d735c1b6
📒 Files selected for processing (11)
src/app/(system)/system/(dashboard)/page.tsxsrc/constants/system.tssrc/features/system/components/pipeline-queue-card.tsxsrc/features/system/components/plan-distribution-card.tsxsrc/features/system/components/plan-donut-chart-loader.tsxsrc/features/system/components/plan-donut-chart.tsxsrc/features/system/mock/billing.test.tssrc/features/system/mock/billing.tssrc/features/system/mock/companies.tssrc/features/system/mock/dashboard.tssrc/features/system/types.ts
💤 Files with no reviewable changes (3)
- src/features/system/components/plan-donut-chart-loader.tsx
- src/features/system/components/plan-distribution-card.tsx
- src/features/system/components/plan-donut-chart.tsx
- 숫자를 `items-baseline`으로 맞추고 있었다. 왼쪽이 라벨+보조 **두 줄**이라 첫 줄 베이스라인에 붙이면 숫자만 위로 떠 보인다 — `items-center`로 바꾼다. - 목록을 가운데로 모으고 있었다(`justify-center`). 첫 줄이 옆 차트 카드 내용보다 한참 내려가 두 카드가 서로 다른 높이에서 시작하는 것처럼 보였다 — `justify-between`으로 고르게 벌린다. 브라우저에서 재서 확인했다: 두 카드 높이 314px로 같고, 세 줄 모두 높이 36px에 간격 35~36px, 좌우 열(1182·1380)도 어긋나지 않는다.
📋 PR 타입
🗂 작업 영역
🙋 관련 역할
📝 작업 내용
PLAN·Plan·PLAN_LABEL상수를 지웠습니다. 요금제는 유료 하나뿐이라(CLAUDE.md §요금제) 고를 것이 없습니다. 값만 남겨 두면 화면이 다시 "어느 플랜이냐"를 묻기 시작하고, 그 순간 없는 무료 요금제가 되살아납니다. 자리에는 왜 없는지를 적은 주석을 남겼습니다.plan === TEAM이 아니면 0원·결제일 없음으로 쳤는데, 그건 없는 무료 요금제를 전제한 계산이었습니다. 이제 모든 기업이 결제 대상입니다.Team 38개사→월 반복 매출. 빈자리를 채우려고 없던 지표를 지어내지 않고, 약어를 풀어 적는 데 썼습니다.ManagedCompany.plan·SubscriptionRecord.plan필드를 뺐습니다. 어느 화면도 그리지 않던 값이라 화면 변화는 없습니다.빈 곁 컬럼에 무엇을 뒀는지
도넛이 있던 자리에 "처리 큐" 카드를 뒀습니다 — 새 지표를 만든 게 아니라 이미 있는 값(
MonitoringOverview.queue)을 옮겨 온 것입니다. 대시보드의 나머지가 전부 기업·매출 축이라 시스템이 지금 건강한지는 아무 데도 없었는데, 운영자가 처음 여는 화면이니 여기 있는 편이 맞다고 봤습니다.MOCK_MONITORING_OVERVIEW.queue를 그대로 참조합니다 — 두 벌이면 같은 순간에 두 화면이 다른 건수를 말합니다.✅ 작업 체크리스트
기본
feature/meeting-capture#12꼴, basedevelop)type: 제목 #{이슈번호})Closes #에 이슈 번호 기입console· 주석 처리된 코드 제거.env)Z 필수
UNIT_PRICE주석에 남겼습니다품질
next/dynamic로더)가 통째로 빠져 대시보드 클라이언트 번들이 줄었습니다section+h2+ul/li, 이동은<Link>, 링크에 포커스 링stage-timing-card)의 머리·여백 규격을 그대로 따랐습니다loading/error/empty3상태 — 큐는 항상 0 이상의 숫자라 empty 상태가 없습니다(0건도 뜻이 있는 값입니다)🔗 연관 이슈
Closes #238
📸 스크린샷 (선택)
Team 38 / Free 24대기 4 · 처리 중 2 · 재처리 필요 3MRR 보조문구도
Team 38개사→월 반복 매출로 바뀝니다.💬 리뷰 포인트
plan필드를 타입에서 아예 뺀 것. 나중에 요금제가 다시 여러 개가 되면 되살려야 합니다. 다만 지금 남겨 두면 무료 요금제가 조용히 돌아온다고 판단했습니다.features/billing의PLAN은 안 건드렸습니다. 이름만 같고 축이 다릅니다(그쪽은 우리 상품 정의, 여기는 운영자가 남의 회사를 볼 때 쓰던 값).📝 추가 메모
design/system-dashboard#239(PR #241)와page.tsx가 겹칩니다. 두 PR이 같은 대시보드를 손대서, 나중에 머지되는 쪽에서 작은 충돌이 납니다 —plan-distribution-card.tsx는 이 PR에서 삭제된 파일이라 "삭제 채택"으로 풀면 됩니다.UNIT_PRICE = 9,900 × 인원)은 이 PR 범위 밖입니다. CLAUDE.md §요금제는 "인원은 과금 단위가 아니다"(2026-08-04)라고 못 박았는데 목 계산은 아직 인원 곱셈입니다. Free 제거와 별개 사안이라 손대지 않았습니다.Summary by CodeRabbit
새 기능
변경 사항