feat(partners): add use case pipeline & task board (Story 10.2)#173
feat(partners): add use case pipeline & task board (Story 10.2)#173claude[bot] wants to merge 3 commits into
Conversation
Implement full use case pipeline with state machine transitions (Identified > Qualification > Evaluation > Pilot > Partnership), Kanban task board, internal discussions, attachments, interactions log, and pipeline funnel visualization. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All checks pass locally: typecheck, lint, prettier, 635 tests, build. Previous CI failure was due to GitHub Actions infrastructure issue (runner failed to start - empty steps array, 3s total runtime). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CI Fix: Re-triggered PipelineThe CI failure was a GitHub Actions infrastructure issue, not a code problem. The runner failed to start (empty steps array, 3-second total runtime). All checks pass locally:
Pushed an empty commit to re-trigger CI. |
Code Review: PR #173 — feat(partners): add use case pipeline & task board (Story 10.2)Overall Assessment: LGTM ✓This is a well-structured, comprehensive feature addition that follows the established project patterns closely. 3,846 lines of new code across schema, state machine, service, router, and UI layers — all consistently aligned with the project architecture. Standards Compliance
Minor Observations (non-blocking)
Architecture Quality
Well done — solid feature implementation. 🤖 Generated with Claude Code |
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
18 similar comments
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
29 similar comments
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
|
@claude This PR has merge conflicts with main. Please rebase on latest main and resolve conflicts:
|
Closes #62
Summary
Files Changed
Database & Schema
prisma/schema.prisma— 7 new models:UseCase,UseCaseTeamMember,UseCaseTask,UseCaseDiscussion,UseCaseAttachment,UseCaseInteraction+ 4 new enumsState Machine
src/server/lib/state-machines/usecase-transitions.ts— Pipeline transition rules, archive/unarchive logic, labelssrc/server/lib/state-machines/usecase-transitions.test.ts— 16 tests for transition validationService Layer
src/server/services/usecase.schemas.ts— Zod input schemas for all CRUD + pipeline operationssrc/server/services/usecase.service.ts— Full service with CRUD, transitions, team, tasks, discussions, attachments, interactionssrc/server/services/usecase.service.test.ts— 30 tests covering all service functionsAPI Layer
src/server/trpc/routers/usecase.ts— tRPC router with 20 procedures (RBAC-protected)src/server/trpc/routers/root.ts— RegisteruseCaseRouterPermissions & Events
src/server/lib/permissions.ts— 7 new use case actions (create, read, update, delete, transition, manageTeam, manageTasks)src/server/events/types.ts— 13 new use case event typesUI Components
src/components/usecases/UseCaseCard.tsx— Card for list viewssrc/components/usecases/UseCaseStatusBadge.tsx— Status and priority badgessrc/components/usecases/UseCasePipelineProgress.tsx— Step indicator for pipeline stagessrc/components/usecases/UseCasePipelineFunnel.tsx— Funnel visualizationsrc/components/usecases/UseCaseTaskBoard.tsx— Kanban task boardsrc/components/usecases/UseCaseDiscussions.tsx— Discussion threadsrc/components/usecases/UseCaseInteractions.tsx— Interaction logsrc/components/usecases/UseCaseForm.tsx— Create/edit formPages
src/app/(platform)/partners/[id]/usecases/page.tsx— Use case list with funnelsrc/app/(platform)/partners/[id]/usecases/new/page.tsx— Create use casesrc/app/(platform)/partners/[id]/usecases/[usecaseId]/page.tsx— Use case detail with all sub-featuressrc/app/(platform)/partners/[id]/usecases/[usecaseId]/edit/page.tsx— Edit use casesrc/app/(platform)/partners/[id]/page.tsx— Added "Use Cases" link to org detailDesign Decisions
Test Plan