From 1fb3cc093e0a404133a9681d189f3bacbcb7c81b Mon Sep 17 00:00:00 2001 From: Madhura68 Date: Thu, 14 May 2026 02:34:25 +0200 Subject: [PATCH] PBI-67: Add review-plan support to Idea model and job config - Add plan_review_log and reviewed_at fields to Idea model - Add REVIEWING_PLAN, PLAN_REVIEW_FAILED, PLAN_REVIEWED to IdeaStatus enum - Add IDEA_REVIEW_PLAN to ClaudeJobKind enum - Add IDEA_REVIEW_PLAN config to job-config.ts with model=opus, thinking_budget=6000 - Create migration record for schema changes (applied via db push) Co-Authored-By: Claude Haiku 4.5 --- lib/job-config.ts | 13 +++++++ .../migration.sql | 11 ++++++ prisma/schema.prisma | 38 +++++++++++-------- 3 files changed, 46 insertions(+), 16 deletions(-) create mode 100644 prisma/migrations/20260514000000_add_review_plan_support/migration.sql diff --git a/lib/job-config.ts b/lib/job-config.ts index 191a048..4d39480 100644 --- a/lib/job-config.ts +++ b/lib/job-config.ts @@ -101,6 +101,19 @@ const KIND_DEFAULTS: Record = { 'mcp__scrum4me__update_job_status', ], }, + IDEA_REVIEW_PLAN: { + model: 'claude-opus-4-7', + thinking_budget: 6000, + permission_mode: 'acceptEdits', + max_turns: 1, + allowed_tools: [ + 'Read', 'Write', 'Grep', 'Glob', + 'mcp__scrum4me__update_idea_plan_reviewed', + 'mcp__scrum4me__log_idea_decision', + 'mcp__scrum4me__update_job_status', + 'mcp__scrum4me__ask_user_question', + ], + }, PLAN_CHAT: { model: 'claude-sonnet-4-6', thinking_budget: 6000, diff --git a/prisma/migrations/20260514000000_add_review_plan_support/migration.sql b/prisma/migrations/20260514000000_add_review_plan_support/migration.sql new file mode 100644 index 0000000..0c6f6d5 --- /dev/null +++ b/prisma/migrations/20260514000000_add_review_plan_support/migration.sql @@ -0,0 +1,11 @@ +-- AlterEnum +ALTER TYPE "IdeaStatus" ADD VALUE 'REVIEWING_PLAN'; +ALTER TYPE "IdeaStatus" ADD VALUE 'PLAN_REVIEW_FAILED'; +ALTER TYPE "IdeaStatus" ADD VALUE 'PLAN_REVIEWED'; + +-- AlterEnum +ALTER TYPE "ClaudeJobKind" ADD VALUE 'IDEA_REVIEW_PLAN'; + +-- AlterTable +ALTER TABLE "ideas" ADD COLUMN "plan_review_log" JSONB, +ADD COLUMN "reviewed_at" TIMESTAMP(3); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 011e514..52f5e49 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -100,6 +100,9 @@ enum IdeaStatus { PLANNING PLAN_FAILED PLAN_READY + REVIEWING_PLAN + PLAN_REVIEW_FAILED + PLAN_REVIEWED PLANNED } @@ -107,6 +110,7 @@ enum ClaudeJobKind { TASK_IMPLEMENTATION IDEA_GRILL IDEA_MAKE_PLAN + IDEA_REVIEW_PLAN PLAN_CHAT SPRINT_IMPLEMENTATION } @@ -511,22 +515,24 @@ model ProductMember { } model Idea { - id String @id @default(cuid()) - user User @relation(fields: [user_id], references: [id], onDelete: Cascade) - user_id String - product Product? @relation(fields: [product_id], references: [id], onDelete: SetNull) - product_id String? - code String @db.VarChar(30) - title String - description String? @db.VarChar(4000) - grill_md String? @db.Text - plan_md String? @db.Text - pbi Pbi? @relation(fields: [pbi_id], references: [id], onDelete: SetNull) - pbi_id String? @unique - status IdeaStatus @default(DRAFT) - archived Boolean @default(false) - created_at DateTime @default(now()) - updated_at DateTime @updatedAt + id String @id @default(cuid()) + user User @relation(fields: [user_id], references: [id], onDelete: Cascade) + user_id String + product Product? @relation(fields: [product_id], references: [id], onDelete: SetNull) + product_id String? + code String @db.VarChar(30) + title String + description String? @db.VarChar(4000) + grill_md String? @db.Text + plan_md String? @db.Text + plan_review_log Json? // ReviewLog from orchestrator (all rounds, convergence metrics, approval status) + reviewed_at DateTime? // When last reviewed + pbi Pbi? @relation(fields: [pbi_id], references: [id], onDelete: SetNull) + pbi_id String? @unique + status IdeaStatus @default(DRAFT) + archived Boolean @default(false) + created_at DateTime @default(now()) + updated_at DateTime @updatedAt questions ClaudeQuestion[] jobs ClaudeJob[]