export interface RequiredSection {
  level: number
  standardTitle: string
  ruleId: string
  message: string
  suggestion: string
}

interface DocumentFormatRules {
  requiredSections: RequiredSection[]
  allowedSections: string[]
  maxSectionLevel2: number
}

export const FORMAT_RULES: Record<string, DocumentFormatRules> = {
  spec: {
    requiredSections: [
      {
        level: 1,
        standardTitle: "Feature Specification:",
        ruleId: "SPEC-TITLE",
        message: "Missing '# Feature Specification: ...' title",
        suggestion: "Add '# Feature Specification: <feature name>'",
      },
      {
        level: 2,
        standardTitle: "Overview",
        ruleId: "SPEC-SEC-0",
        message: "Missing '## Overview'",
        suggestion: "Add '## Overview'",
      },
      {
        level: 2,
        standardTitle: "User Scenarios & Testing",
        ruleId: "SPEC-SEC-1",
        message: "Missing '## User Scenarios & Testing'",
        suggestion: "Add '## User Scenarios & Testing'",
      },
      {
        level: 2,
        standardTitle: "Requirements",
        ruleId: "SPEC-SEC-2",
        message: "Missing '## Requirements'",
        suggestion: "Add '## Requirements'",
      },
      {
        level: 2,
        standardTitle: "Success Criteria",
        ruleId: "SPEC-SEC-3",
        message: "Missing '## Success Criteria'",
        suggestion: "Add '## Success Criteria'",
      },
      {
        level: 2,
        standardTitle: "Assumptions",
        ruleId: "SPEC-SEC-4",
        message: "Missing '## Assumptions'",
        suggestion: "Add '## Assumptions'",
      },
      {
        level: 2,
        standardTitle: "Open Questions",
        ruleId: "SPEC-SEC-5",
        message: "Missing '## Open Questions'",
        suggestion: "Add '## Open Questions'",
      },
    ],
    allowedSections: [
      "Feature Specification:",
      "Overview",
      "User Scenarios & Testing",
      "Requirements",
      "Success Criteria",
      "Assumptions",
      "Open Questions",
    ],
    maxSectionLevel2: 6,
  },
  design: {
    requiredSections: [
      {
        level: 1,
        standardTitle: "Implementation Plan:",
        ruleId: "DES-TITLE",
        message: "Missing '# Implementation Plan: ...' title",
        suggestion: "Add '# Implementation Plan: <feature name>'",
      },
      {
        level: 2,
        standardTitle: "Summary",
        ruleId: "DES-SEC-1",
        message: "Missing '## Summary'",
        suggestion: "Add '## Summary'",
      },
      {
        level: 2,
        standardTitle: "Technical Context",
        ruleId: "DES-SEC-2",
        message: "Missing '## Technical Context'",
        suggestion: "Add '## Technical Context'",
      },
      {
        level: 2,
        standardTitle: "Project Structure",
        ruleId: "DES-SEC-3",
        message: "Missing '## Project Structure'",
        suggestion: "Add '## Project Structure'",
      },
      {
        level: 2,
        standardTitle: "Research & Decisions",
        ruleId: "DES-SEC-4",
        message: "Missing '## Research & Decisions'",
        suggestion: "Add '## Research & Decisions'",
      },
      {
        level: 2,
        standardTitle: "Data Model",
        ruleId: "DES-SEC-5",
        message: "Missing '## Data Model'",
        suggestion: "Add '## Data Model'",
      },
      {
        level: 2,
        standardTitle: "Contracts & Interfaces",
        ruleId: "DES-SEC-6",
        message: "Missing '## Contracts & Interfaces'",
        suggestion: "Add '## Contracts & Interfaces'",
      },
    ],
    allowedSections: [
      "Implementation Plan:",
      "Summary",
      "Technical Context",
      "Project Structure",
      "Complexity Tracking",
      "Research & Decisions",
      "Data Model",
      "Contracts & Interfaces",
      "Quickstart",
      "Changelog",
    ],
    maxSectionLevel2: 10,
  },
  tasks: {
    requiredSections: [
      {
        level: 1,
        standardTitle: "Tasks:",
        ruleId: "TSK-TITLE",
        message: "Missing '# Tasks: ...' title",
        suggestion: "Add '# Tasks: <feature name>'",
      },
      {
        level: 2,
        standardTitle: "Format",
        ruleId: "TSK-SEC-1",
        message: "Missing '## Format'",
        suggestion: "Add '## Format'",
      },
      {
        level: 2,
        standardTitle: "Path Conventions",
        ruleId: "TSK-SEC-2",
        message: "Missing '## Path Conventions'",
        suggestion: "Add '## Path Conventions'",
      },
      {
        level: 2,
        standardTitle: "Dependencies & Execution Order",
        ruleId: "TSK-SEC-3",
        message: "Missing '## Dependencies & Execution Order'",
        suggestion: "Add '## Dependencies & Execution Order'",
      },
      {
        level: 2,
        standardTitle: "Parallel Example",
        ruleId: "TSK-SEC-4",
        message: "Missing '## Parallel Example'",
        suggestion: "Add '## Parallel Example'",
      },
      {
        level: 2,
        standardTitle: "Implementation Strategy",
        ruleId: "TSK-SEC-5",
        message: "Missing '## Implementation Strategy'",
        suggestion: "Add '## Implementation Strategy'",
      },
      {
        level: 2,
        standardTitle: "Notes",
        ruleId: "TSK-SEC-6",
        message: "Missing '## Notes'",
        suggestion: "Add '## Notes'",
      },
    ],
    allowedSections: [
      "Tasks:",
      "Format",
      "Path Conventions",
      "Dependencies & Execution Order",
      "Parallel Example",
      "Implementation Strategy",
      "Notes",
      "Dependency Graph",
      "Parallel Execution Guide",
      "Summary Report",
    ],
    maxSectionLevel2: 50,
  },
} as const