// PBI-67: snapshot-helper voor ClaudeJob.requested_*-velden.
//
// Roep hem aan vóór elke `prisma.claudeJob.create({ data: { ... } })` en spread
// het resultaat in `data`. Doet één extra Product-query (en optioneel Task)
// om de override-cascade in te vullen op enqueue-tijd. Bij claim (in scrum4me-
// mcp/wait-for-job) wordt dezelfde resolver opnieuw aangeroepen — als
// requested_* dan al gezet zijn winnen die boven product/kind-defaults.

import { prisma } from '@/lib/prisma'
import { resolveJobConfig, snapshotFromConfig, type ClaudeJobSnapshotFields } from '@/lib/job-config'

export async function getJobConfigSnapshot(opts: {
  kind: string
  productId: string
  taskId?: string | null
}): Promise<ClaudeJobSnapshotFields> {
  const [product, task] = await Promise.all([
    prisma.product.findUnique({
      where: { id: opts.productId },
      select: {
        preferred_model: true,
        thinking_budget_default: true,
        preferred_permission_mode: true,
      },
    }),
    opts.taskId
      ? prisma.task.findUnique({
          where: { id: opts.taskId },
          select: { requires_opus: true },
        })
      : Promise.resolve(null),
  ])

  const cfg = resolveJobConfig(
    { kind: opts.kind },
    product ?? {},
    task ?? undefined,
  )
  return snapshotFromConfig(cfg)
}
