import {
  Column,
  CreateDateColumn,
  Entity,
  ManyToOne,
  PrimaryGeneratedColumn,
  type Relation,
} from 'typeorm';
import { Task } from './task.entity';

// 체크리스트 카테고리(탭) — AI 추천 4개 영역과 동일
export const CHECKLIST_CATEGORIES = ['필수', '관리', '보안', '부가'] as const;
export type ChecklistCategory = (typeof CHECKLIST_CATEGORIES)[number];

// 업무 체크리스트 항목
@Entity('checklist_items')
export class ChecklistItem {
  @PrimaryGeneratedColumn('uuid')
  id!: string;

  // 소속 업무 (업무 삭제 시 함께 삭제)
  // Relation<> 래퍼: 엔티티 순환참조 회피
  @ManyToOne(() => Task, (task) => task.checklist, { onDelete: 'CASCADE' })
  task!: Relation<Task>;

  // 항목 내용
  @Column()
  text!: string;

  // 카테고리(탭) — 필수/관리/보안/부가
  @Column({ type: 'varchar', default: '필수' })
  category!: ChecklistCategory;

  // 완료 여부
  @Column({ default: false })
  done!: boolean;

  // 보완 내용(수정 요청 시 항목별로 입력) — 완료 처리 시 비워짐
  @Column({ name: 'review_note', type: 'text', nullable: true })
  reviewNote!: string | null;

  // 표시 순서(생성 순)
  @Column({ name: 'sort_order', type: 'int', default: 0 })
  sortOrder!: number;

  @CreateDateColumn({ name: 'created_at' })
  createdAt!: Date;
}
