/* 아리 — 작업(Tasks) 데이터 · RON 디자인 언어
   핵심: 작업 노드는 무한 중첩(children). 칸반/리스트는 최상위만 보여주고,
   상세 드로어에서 자식 노드를 계속 만들어 내려갈 수 있다. */
(function () {
  /* ---------- 사람 ---------- */
  const people = {
    jiwoo:   { name: "지우", initial: "지", c: "#6286c9", me: true },
    hyunwoo: { name: "현우", initial: "현", c: "#9c8bcb" },
    minseo:  { name: "민서", initial: "민", c: "#5fa6a0" },
    jaeho:   { name: "재호", initial: "재", c: "#ce6969" },
    sua:     { name: "수아", initial: "수", c: "#10141a" },
  };

  /* ---------- 상태 컬럼 ---------- */
  const columns = [
    { id: "todo",   label: "할 일",   accent: "var(--faint)" },
    { id: "doing",  label: "진행 중", accent: "var(--blue-d)" },
    { id: "review", label: "검토",    accent: "var(--red)" },
    { id: "done",   label: "완료",    accent: "var(--teal, #5fa6a0)" },
  ];

  /* ---------- 프로젝트(태그) ---------- */
  const PRJ = {
    biz:  { name: "경영 전략",   color: "#ce6969" },
    onb:  { name: "온보딩",      color: "#9c8bcb" },
    team: { name: "팀 운영",     color: "#5fa6a0" },
    me:   { name: "개인",        color: "#6286c9" },
  };

  /* 노드 헬퍼 */
  let _n = 0;
  const uid = () => "n" + (++_n);
  function T(o) {
    return {
      id: o.id || uid(),
      title: o.title,
      status: o.status || "todo",
      assignee: o.assignee || "jiwoo",
      due: o.due || "",
      prio: o.prio || "보통",
      project: o.project || "me",
      desc: o.desc || "",
      star: !!o.star,
      children: (o.children || []).map(T),
    };
  }

  /* ---------- 중첩 작업 트리 (최상위 = 칸반/리스트 카드) ---------- */
  const tree = [
    T({
      id: "t-report", title: "분기 리포트 초안 마무리", status: "doing", assignee: "jiwoo",
      due: "06-10", prio: "높음", project: "biz", star: true,
      desc: "경영진 미팅용 Q2 성과 리포트. 리텐션·매출·예산 세 섹션으로 구성하고 핵심 지표는 시각화한다.",
      children: [
        T({ title: "리텐션 데이터 취합", status: "done", assignee: "sua", due: "06-08", project: "biz",
          children: [
            T({ title: "코호트 정의 확정", status: "done", assignee: "sua", due: "06-07" }),
            T({ title: "주차별 잔존율 추출", status: "done", assignee: "sua", due: "06-08" }),
            T({ title: "이탈 사유 태깅", status: "done", assignee: "jaeho", due: "06-08",
              children: [
                T({ title: "인터뷰 발췌 5건", status: "done", assignee: "jaeho" }),
                T({ title: "사유 카테고리 분류", status: "done", assignee: "jaeho" }),
              ] }),
          ] }),
        T({ title: "매출 섹션 작성", status: "doing", assignee: "jiwoo", due: "06-09", project: "biz", prio: "높음",
          children: [
            T({ title: "MRR / ARR 표 정리", status: "done", assignee: "jiwoo" }),
            T({ title: "전분기 대비 증감 코멘트", status: "doing", assignee: "jiwoo" }),
            T({ title: "예측 시나리오 3종", status: "todo", assignee: "jiwoo" }),
          ] }),
        T({ title: "예산 섹션 작성", status: "todo", assignee: "jiwoo", due: "06-10", project: "biz" }),
        T({ title: "경영진 검토 요청 메일", status: "todo", assignee: "jiwoo", due: "06-10", project: "biz" }),
      ],
    }),
    T({
      id: "t-wire", title: "온보딩 와이어프레임 피드백 정리", status: "review", assignee: "hyunwoo",
      due: "06-09", prio: "높음", project: "onb", star: true,
      desc: "디자인 리뷰에서 나온 3개 화면 수정사항을 취합하고 우선순위를 매긴다.",
      children: [
        T({ title: "환영 화면 수정안", status: "done", assignee: "hyunwoo",
          children: [
            T({ title: "카피 톤 조정", status: "done", assignee: "hyunwoo" }),
            T({ title: "일러스트 교체 요청", status: "doing", assignee: "minseo" }),
          ] }),
        T({ title: "권한 요청 화면 재배치", status: "doing", assignee: "hyunwoo" }),
        T({ title: "음성 안내 추가 검토", status: "todo", assignee: "sua" }),
      ],
    }),
    T({
      id: "t-interview", title: "사용자 인터뷰 5건 정리", status: "doing", assignee: "sua",
      due: "06-11", prio: "보통", project: "onb",
      desc: "인터뷰 녹취를 요약하고 인사이트를 태깅해 리서치 보드에 정리한다.",
      children: [
        T({ title: "녹취 요약 (5건)", status: "doing", assignee: "sua" }),
        T({ title: "인사이트 태깅", status: "todo", assignee: "sua" }),
        T({ title: "리서치 보드 업데이트", status: "todo", assignee: "minseo" }),
      ],
    }),
    T({
      id: "t-okr", title: "Q2 OKR 중간 점검 자료", status: "todo", assignee: "jiwoo",
      due: "06-12", prio: "높음", project: "biz",
      desc: "분기 절반 시점 OKR 달성도를 점검하고 남은 기간 액션을 정리한다.",
      children: [
        T({ title: "Objective별 진척도 집계", status: "todo", assignee: "jiwoo" }),
        T({ title: "리스크 항목 표시", status: "todo", assignee: "jiwoo" }),
      ],
    }),
    T({
      id: "t-card", title: "구독 결제 카드 갱신", status: "todo", assignee: "jiwoo",
      due: "06-12", prio: "보통", project: "me",
      desc: "만료 임박 카드 정보를 업데이트한다.", children: [],
    }),
    T({
      id: "t-welcome", title: "신규 입사자 환영 메일 발송", status: "done", assignee: "minseo",
      due: "06-07", prio: "보통", project: "team",
      desc: "", children: [
        T({ title: "메일 템플릿 작성", status: "done", assignee: "minseo" }),
        T({ title: "수신자 명단 확인", status: "done", assignee: "minseo" }),
      ],
    }),
    T({
      id: "t-retro", title: "스프린트 회고 문서 배포", status: "review", assignee: "minseo",
      due: "06-08", prio: "낮음", project: "team",
      desc: "회고에서 도출된 액션 아이템을 정리해 팀 채널에 공유한다.",
      children: [
        T({ title: "액션 아이템 담당자 지정", status: "done", assignee: "minseo" }),
        T({ title: "다음 스프린트 반영 확인", status: "doing", assignee: "jaeho" }),
      ],
    }),
    T({
      id: "t-push", title: "모바일 푸시 알림 QA", status: "doing", assignee: "sua",
      due: "06-09", prio: "높음", project: "onb",
      desc: "iOS/Android 푸시 시나리오 6종을 점검한다.",
      children: [
        T({ title: "iOS 시나리오 3종", status: "done", assignee: "sua" }),
        T({ title: "Android 시나리오 3종", status: "doing", assignee: "sua" }),
        T({ title: "딥링크 라우팅 확인", status: "todo", assignee: "jaeho" }),
      ],
    }),
  ];

  window.AriTasks = { people, columns, projects: PRJ, tree };
})();
