/* ===== Config & seed data ===== */

// use real current date
const TODAY = new Date();

const STATUSES = [
  { id: "todo",     label: "To Do",       th: "รอเริ่ม",     color: "var(--todo)",     soft: "var(--todo-soft)" },
  { id: "progress", label: "In Progress", th: "กำลังทำ",     color: "var(--progress)", soft: "var(--progress-soft)" },
  { id: "review",   label: "Review",      th: "รอตรวจ",      color: "var(--review)",   soft: "var(--review-soft)" },
  { id: "done",     label: "Done",        th: "เสร็จแล้ว",   color: "var(--done)",     soft: "var(--done-soft)" },
];
const STATUS_MAP = Object.fromEntries(STATUSES.map(s => [s.id, s]));

const PRIORITIES = [
  { id: "high", label: "High",   th: "ด่วนมาก", color: "var(--high)", soft: "var(--high-soft)" },
  { id: "med",  label: "Medium", th: "ปานกลาง", color: "var(--med)",  soft: "var(--med-soft)" },
  { id: "low",  label: "Low",    th: "ทั่วไป",  color: "var(--low)",  soft: "var(--low-soft)" },
];
const PRIORITY_MAP = Object.fromEntries(PRIORITIES.map(p => [p.id, p]));

const MEMBER_COLORS = ["#2f6bff","#7c5cff","#18b58a","#f5a524","#ec5a9e","#2bb8f0","#f5544f","#9a6b3f","#06a78a","#5b6fff","#b65cff","#ff7a45","#3f8f5e","#d9498c"];

const MEMBERS = [
  { id: "u1", nick: "ฟ้า",   name: "ฟ้าใส วงศ์ดี",     role: "UX Designer",   av: "F", color: "#2f6bff" },
  { id: "u2", nick: "บอส",   name: "ปรเมศ ชัยกุล",     role: "Frontend",      av: "B", color: "#7c5cff" },
  { id: "u3", nick: "มิ้น",  name: "พิมพ์มาดา ศรีสุข", role: "Backend",       av: "M", color: "#18b58a" },
  { id: "u4", nick: "เก่ง",  name: "ธนกฤต อุดมพร",     role: "QA Engineer",   av: "K", color: "#f5a524" },
  { id: "u5", nick: "ใบเตย", name: "ชนัญชิดา ใจงาม",   role: "Content",       av: "T", color: "#ec5a9e" },
  { id: "u6", nick: "นัท",   name: "ณัฐพล เพียรดี",    role: "Marketing",     av: "N", color: "#2bb8f0" },
  { id: "u7", nick: "จอย",   name: "สุชานาฏ ทองคำ",    role: "Mobile Dev",    av: "J", color: "#f5544f" },
  { id: "u8", nick: "เป้",   name: "อนุชา รักษ์ไทย",   role: "DevOps",        av: "P", color: "#9a6b3f" },
];
const MEMBER_MAP = Object.fromEntries(MEMBERS.map(m => [m.id, m]));

// date helper: offset days from TODAY -> "YYYY-MM-DD"
function dayStr(offset) {
  const d = new Date(TODAY);
  d.setDate(d.getDate() + offset);
  return d.toISOString().slice(0, 10);
}

let _id = 0;
const nid = () => `t${++_id}`;

const SEED_TASKS = [
  // u1 ฟ้า - UX
  { id: nid(), title: "ออกแบบหน้า Onboarding ใหม่", desc: "ทำ flow 3 สเต็ป + empty states พร้อมส่งให้ทีม dev ดู", assignee: "u1", status: "progress", priority: "high", start: dayStr(-4), deadline: dayStr(1) },
  { id: nid(), title: "Design system: ปรับชุดสีปุ่ม", desc: "อัปเดต token สีปุ่มให้ผ่าน contrast AA", assignee: "u1", status: "review", priority: "med", start: dayStr(-7), deadline: dayStr(-1) },
  { id: nid(), title: "ทำ Prototype หน้า Settings", desc: "เชื่อม flow คลิกได้สำหรับ user test", assignee: "u1", status: "todo", priority: "low", start: dayStr(2), deadline: dayStr(9) },

  // u2 บอส - Frontend
  { id: nid(), title: "ทำหน้า Dashboard เป็น component", desc: "แยก chart, summary card, table ออกเป็น component ย่อย", assignee: "u2", status: "progress", priority: "high", start: dayStr(-3), deadline: dayStr(2) },
  { id: nid(), title: "Fix bug responsive บนมือถือ", desc: "เมนูซ้อนกันบนจอ <375px", assignee: "u2", status: "todo", priority: "med", start: dayStr(0), deadline: dayStr(4) },
  { id: nid(), title: "เชื่อม API หน้า Login", desc: "ต่อ endpoint /auth + handle error", assignee: "u2", status: "done", priority: "high", start: dayStr(-9), deadline: dayStr(-3) },

  // u3 มิ้น - Backend
  { id: nid(), title: "ออกแบบ schema ฐานข้อมูลงาน", desc: "ตาราง tasks, members, comments + ความสัมพันธ์", assignee: "u3", status: "done", priority: "high", start: dayStr(-12), deadline: dayStr(-5) },
  { id: nid(), title: "ทำ API แจ้งเตือน deadline", desc: "cron job ส่งเตือนงานใกล้ครบกำหนด", assignee: "u3", status: "progress", priority: "med", start: dayStr(-2), deadline: dayStr(3) },
  { id: nid(), title: "ปรับ query ให้เร็วขึ้น", desc: "เพิ่ม index + ลด N+1 query", assignee: "u3", status: "todo", priority: "low", start: dayStr(3), deadline: dayStr(10) },

  // u4 เก่ง - QA
  { id: nid(), title: "เขียน test case หน้า Kanban", desc: "ครอบคลุม drag-drop และเปลี่ยนสถานะ", assignee: "u4", status: "progress", priority: "med", start: dayStr(-1), deadline: dayStr(0) },
  { id: nid(), title: "Regression test รอบ Sprint 12", desc: "รัน suite เต็ม + บันทึก bug ที่เจอ", assignee: "u4", status: "todo", priority: "high", start: dayStr(1), deadline: dayStr(5) },

  // u5 ใบเตย - Content
  { id: nid(), title: "เขียน copy หน้า Landing", desc: "headline + 3 section + CTA โทนเป็นกันเอง", assignee: "u5", status: "review", priority: "med", start: dayStr(-5), deadline: dayStr(0) },
  { id: nid(), title: "แปลเนื้อหาเป็นอังกฤษ", desc: "หน้า help center ทั้งหมด", assignee: "u5", status: "todo", priority: "low", start: dayStr(4), deadline: dayStr(12) },

  // u6 นัท - Marketing
  { id: nid(), title: "วางแผนแคมเปญเปิดตัว", desc: "timeline + ช่องทาง + งบประมาณคร่าวๆ", assignee: "u6", status: "progress", priority: "high", start: dayStr(-6), deadline: dayStr(-2) },
  { id: nid(), title: "ทำสไลด์นำเสนอผู้บริหาร", desc: "สรุปผล Q2 + แผน Q3", assignee: "u6", status: "todo", priority: "med", start: dayStr(2), deadline: dayStr(6) },

  // u7 จอย - Mobile
  { id: nid(), title: "ทำหน้า Notification บนแอป", desc: "list + badge + mark as read", assignee: "u7", status: "progress", priority: "med", start: dayStr(-2), deadline: dayStr(2) },
  { id: nid(), title: "เชื่อม Push notification", desc: "ตั้งค่า FCM + ทดสอบบน iOS/Android", assignee: "u7", status: "todo", priority: "high", start: dayStr(1), deadline: dayStr(3) },
  { id: nid(), title: "Build เวอร์ชัน beta ส่ง tester", desc: "ขึ้น TestFlight + Play internal", assignee: "u7", status: "done", priority: "med", start: dayStr(-10), deadline: dayStr(-4) },

  // u8 เป้ - DevOps
  { id: nid(), title: "ตั้งค่า CI/CD pipeline", desc: "auto build + test + deploy ไป staging", assignee: "u8", status: "done", priority: "high", start: dayStr(-14), deadline: dayStr(-6) },
  { id: nid(), title: "ย้าย service ขึ้น container", desc: "เขียน Dockerfile + compose สำหรับ dev", assignee: "u8", status: "review", priority: "med", start: dayStr(-4), deadline: dayStr(1) },
];

/* ===== date utils ===== */
function parseDate(s) { return new Date(s + "T00:00:00"); }
function daysUntil(dateStr) {
  const d = parseDate(dateStr);
  const t0 = new Date(TODAY); t0.setHours(0,0,0,0);
  return Math.round((d - t0) / 86400000);
}
const TH_MONTHS = ["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."];
function fmtDate(dateStr) {
  const d = parseDate(dateStr);
  return `${d.getDate()} ${TH_MONTHS[d.getMonth()]}`;
}
// deadline label + tone relative to today (only meaningful for not-done)
function deadlineInfo(dateStr) {
  const n = daysUntil(dateStr);
  if (n < 0)  return { tone: "over",  label: `เลย ${Math.abs(n)} วัน`, n };
  if (n === 0) return { tone: "today", label: "ครบวันนี้", n };
  if (n <= 2) return { tone: "soon",  label: `อีก ${n} วัน`, n };
  return { tone: "ok", label: fmtDate(dateStr), n };
}

Object.assign(window, {
  TODAY, STATUSES, STATUS_MAP, PRIORITIES, PRIORITY_MAP,
  MEMBERS, MEMBER_MAP, MEMBER_COLORS, SEED_TASKS,
  daysUntil, fmtDate, deadlineInfo, dayStr,
});
