// Cấu hình tour VR360 Chùa Thái Lạc (Pháp Vân tự) — Xã Như Quỳnh, Hưng Yên.
// File chỉ chứa DỮ LIỆU (type-only import từ engine để tránh circular import runtime).
// Engine `VirtualTour.tsx` import `chuaThaiLacTour` rồi bọc qua createTourConfig().
//
// Ảnh panorama đặt tại public/images/chua-thai-lac/01.jpg … 26.jpg
// (đặt tên ASCII theo thứ tự cảnh để tránh lỗi mã hóa Unicode/đường dẫn khi triển khai).
import type { TourConfig, TourScene, InfoMarker, Hotspot } from "@/app/components/VirtualTour";

const base = "/images/chua-thai-lac";
// Trỏ tới đúng file ảnh gốc theo SỐ FILE (01..26), độc lập với thứ tự cảnh sau khi
// đánh số lại — nhờ vậy có thể bỏ cảnh giữa chừng mà không phải đổi tên ảnh.
const imageForFile = (fileNumber: number) => `${base}/${String(fileNumber).padStart(2, "0")}.webp`;

type SceneSeed = {
  title: string;
  location: string;
  // Số thứ tự FILE ảnh gốc trên đĩa (01..26). Không nhất thiết trùng số cảnh hiển thị.
  imageFile: number;
  infoMarkers?: InfoMarker[];
};

// ─────────────────────────────────────────────────────────────────────────────
// Danh sách cảnh sau khi XOÁ 3 cảnh (ảnh 20/21/22) và ĐÁNH SỐ LẠI liền mạch 1..23.
// Mỗi cảnh giữ nguyên ảnh gốc qua `imageFile`; số cảnh hiển thị = vị trí trong mảng.
// Tên cảnh & nhóm khu vực được đặt lại theo đúng nội dung từng ảnh panorama:
//   1-4 Khu cổng · 5-7 Cảnh quan vườn · 8-11 Sân chùa & Tam quan ·
//   12-17 Khu nhà Tổ & nhà khách · 18-23 Điện thờ & hành lang tượng.
// ─────────────────────────────────────────────────────────────────────────────
const seeds: SceneSeed[] = [
  // 1 — ảnh 01: cổng chùa, cây cổ thụ và ghế đá trong sân
  {
    title: "Cổng chùa Thái Lạc",
    location: "Khu cổng",
    imageFile: 1,
    infoMarkers: [
      {
        id: "gioi-thieu",
        title: "Giới thiệu",
        eyebrow: "Chùa Thái Lạc · Pháp Vân tự",
        yaw: 145,
        pitch: 5,
        iconType: "info",
        content: [
          "Chùa Thái Lạc, tên chữ là Pháp Vân tự, là ngôi chùa cổ thờ Pháp Vân, vị thần Mây trong tín ngưỡng Tứ Pháp của cư dân nông nghiệp đồng bằng Bắc Bộ.",
          "Di tích được xếp hạng cấp quốc gia, nổi tiếng với hệ thống ván chạm khắc gỗ thời Trần (thế kỷ 14) thuộc hàng quý hiếm bậc nhất Việt Nam.",
        ],
      },
    ],
  },
  // 2 — ảnh 02: cổng chùa nhìn từ phía đường nhựa
  { title: "Cổng chùa bên đường", location: "Khu cổng", imageFile: 2 },
  // 3 — ảnh 03: đường trước cổng, cột cờ
  { title: "Đường vào cổng chùa", location: "Khu cổng", imageFile: 3 },
  // 4 — ảnh 04: cổng vòm nhỏ dẫn vào sân chùa
  { title: "Cổng vào khuôn viên", location: "Khu cổng", imageFile: 4 },
  // 5 — ảnh 05: sân vườn, ghế đá, bảng nội quy
  { title: "Vườn chùa", location: "Cảnh quan vườn chùa", imageFile: 5 },
  // 6 — ảnh 06: lối đi rợp bóng hàng cây, tường vàng
  { title: "Lối vào rợp bóng cây", location: "Cảnh quan vườn chùa", imageFile: 6 },
  // 7 — ảnh 07: hồ nước cảnh quan, lan can đá, gò non bộ
  { title: "Hồ nước cảnh quan", location: "Cảnh quan vườn chùa", imageFile: 7 },
  // 8 — ảnh 08: sân lớn lát đá trước gác chuông tam quan đồ sộ
  { title: "Gác chuông Tam quan", location: "Sân chùa & Tam quan", imageFile: 8 },
  // 9 — ảnh 09: sân gạch, tam quan bên trái, đài Quan Âm bên phải
  { title: "Sân chùa và đài Quan Âm", location: "Sân chùa & Tam quan", imageFile: 9 },
  // 10 — ảnh 10: đài Quan Âm lộ thiên, sân lát gạch đỏ
  { title: "Đài Quan Âm lộ thiên", location: "Sân chùa & Tam quan", imageFile: 10 },
  // 11 — ảnh 11: vườn tháp, tháp mộ gạch cổ
  { title: "Vườn tháp cổ", location: "Sân chùa & Tam quan", imageFile: 11 },
  // 12 — ảnh 12: lối đi hẹp giữa các dãy nhà, chậu cảnh
  { title: "Lối vào khu nhà Tổ", location: "Khu nhà Tổ & nhà khách", imageFile: 12 },
  // 13 — ảnh 13: sân trong khu nhà ngang, cây cổ thụ
  { title: "Sân nhà Tổ", location: "Khu nhà Tổ & nhà khách", imageFile: 13 },
  // 14 — ảnh 14: hiên nhà có hàng cột, giàn cây xanh che mát
  { title: "Hiên nhà dưới giàn cây", location: "Khu nhà Tổ & nhà khách", imageFile: 14 },
  // 15 — ảnh 15: sân sau, hiên gạch đỏ của dãy nhà
  { title: "Sân sau nhà khách", location: "Khu nhà Tổ & nhà khách", imageFile: 15 },
  // 16 — ảnh 16: sân trong giếng trời, cây cổ thụ tỏa bóng, bàn ghế đá
  { title: "Sân trong giếng trời", location: "Khu nhà Tổ & nhà khách", imageFile: 16 },
  // 17 — ảnh 17: nhà khách, hàng ghế gỗ dài, tường treo ảnh
  { title: "Nhà khách", location: "Khu nhà Tổ & nhà khách", imageFile: 17 },
  // 18 — ảnh 18: hành lang gỗ cổ với hàng tượng, cột & vì kèo cổ (chạm khắc thời Trần)
  {
    title: "Hành lang tượng cổ",
    location: "Điện thờ & hành lang tượng",
    imageFile: 18,
    infoMarkers: [
      {
        id: "cham-khac-go",
        title: "Chạm khắc gỗ thời Trần",
        eyebrow: "Giá trị di sản",
        yaw: 0,
        pitch: -4,
        iconType: "landmark",
        content: [
          "Hệ thống ván chạm khắc gỗ có niên đại thời Trần (thế kỷ 14) khắc họa các nhạc công, vũ nữ và hình tượng Phật giáo với kỹ thuật điêu luyện.",
          "Đây là nguồn tư liệu quý cho nghiên cứu mỹ thuật cổ Việt Nam, làm nên giá trị đặc biệt của Chùa Thái Lạc.",
        ],
      },
    ],
  },
  // 19 — ảnh 19: sân thiên tỉnh, hòm công đức, hòn non bộ
  { title: "Sân thiên tỉnh", location: "Điện thờ & hành lang tượng", imageFile: 19 },
  // 20 — ảnh 23: hàng tượng thờ bên hành lang, sân vườn cây lựu
  { title: "Hành lang tượng và sân vườn", location: "Điện thờ & hành lang tượng", imageFile: 23 },
  // 21 — ảnh 24: gian thờ bên trong, vách gỗ bức bàn, ban thờ hai bên
  { title: "Gian thờ bên trong", location: "Điện thờ & hành lang tượng", imageFile: 24 },
  // 22 — ảnh 25: thượng điện, khám thờ gỗ, cột cổ, ban thờ hai bên
  { title: "Thượng điện", location: "Điện thờ & hành lang tượng", imageFile: 25 },
  // 23 — ảnh 26: hậu đường, hàng cột, ban thờ tượng dọc tường
  { title: "Hậu đường", location: "Điện thờ & hành lang tượng", imageFile: 26 },
];

// ─────────────────────────────────────────────────────────────────────────────
// ĐỒ THỊ HƯỚNG ĐI (có hướng) — khoá là SỐ CẢNH MỚI (1..23), giá trị là danh sách
// các cảnh mà từ đó có thể đi tới. Đây chính là các mũi tên hiển thị trong ảnh 360.
// Lấy theo yêu cầu (đã quy đổi số cũ → số mới: 23→20, 24→21, 25→22, 26→23):
//   cũ 8→…,25  ⇒ 8→…,22 | cũ 19→…,23 ⇒ 19→…,20 | cũ 23→19,(24),25 ⇒ 20→19,21,22
//   cũ 25→23,26,8 ⇒ 22→20,23,8 | cũ 24→23 ⇒ 21→20 | thêm 23→22 để có lối quay lại.
// ─────────────────────────────────────────────────────────────────────────────
const adjacency: Record<number, number[]> = {
  1: [2, 3, 8],
  2: [1, 9],
  3: [1, 4],
  4: [5, 7],
  5: [4, 6, 7, 8],
  6: [5, 17],
  7: [4, 5],
  8: [1, 5, 9, 22],
  9: [2, 8, 10, 12],
  10: [9, 11],
  11: [9, 10],
  12: [9, 13],
  13: [12, 14],
  14: [13, 15],
  15: [14, 16],
  16: [15, 17],
  17: [16, 19, 6],
  18: [17, 19],
  19: [17, 18, 20],
  20: [19, 21],
  21: [20, 22],
  22: [21, 23, 8],
  23: [22],
};

// Toạ độ sơ đồ (mini-map): x trái→phải, y trên(0)→dưới(100).
// Cổng ở dưới, tiến dần lên trên qua chính điện → khu thờ → cảnh quan sau chùa.
// Bố cục này quyết định luôn HƯỚNG mũi tên trong ảnh 360 (tính theo phương vị bản đồ).
// Ràng buộc hình học:
//  • 1-2-9-8 là một hình vuông (2,9 bên trái), 1-3-5-8 là một hình vuông (3,5 bên phải);
//    hai hình vuông dùng chung cạnh đứng 1-8 ở giữa (x=50).
//  • 3,4,5,6 nằm trên một cột dọc bên phải (x=68); 3-4-5 thẳng hàng tạo cạnh phải hình vuông.
//  • 9,12,13,14 nằm trên một cột dọc bên trái (x=32); 10,11 nằm trên một cột dọc (x=18).
//  • Cột dọc 12-13-14 (x=32) VUÔNG GÓC với hàng ngang 14-15-16 (y=22), gặp nhau tại 14;
//    khoảng cách 13↔14 được giãn rộng.
//  • 1-8-22-19-15 cùng cột dọc giữa (x=50); 3-4-5-6-16 cùng cột dọc phải (x=68);
//    7-17 cùng cột dọc (x=82).
//  • 21-22-23 cùng một hàng ngang (y=56); 13-20 cùng một hàng ngang (y=40).
//  • Nhóm giữa 13-18-19-20 được kéo lên cao, giãn xa khỏi hàng dưới 12-21-22-23;
//    19 cao hơn (y nhỏ hơn) cả 20 và 13.
//  • Band 12-21-22-23-6 (y=56) được giãn cách khỏi hàng 9-8-5 (y=72).
const mapPositions: Record<number, { x: number; y: number }> = {
  1: { x: 50, y: 100 },
  2: { x: 32, y: 90 },
  3: { x: 68, y: 90 },
  4: { x: 68, y: 81 },
  5: { x: 68, y: 72 },
  6: { x: 68, y: 56 },
  7: { x: 78, y: 76 },
  8: { x: 50, y: 72 },
  9: { x: 32, y: 72 },
  10: { x: 16, y: 72 },
  11: { x: 18, y: 58 },
  12: { x: 32, y: 56 },
  13: { x: 32, y: 40 },
  14: { x: 32, y: 12 },
  15: { x: 50, y: 12 },
  16: { x: 68, y: 12 },
  17: { x: 82, y: 34 },
  18: { x: 64, y: 42 },
  19: { x: 50, y: 32 },
  20: { x: 42, y: 40 },
  21: { x: 40, y: 56 },
  22: { x: 50, y: 56 },
  23: { x: 60, y: 56 },
};

const sceneId = (sceneNumber: number) => `scene-${sceneNumber}`;

// Phương vị từ cảnh `from` tới cảnh `to` theo bản đồ → yaw mũi tên trong ảnh 360.
// Quy ước: hướng "lên trên" của bản đồ (giảm y) = yaw 0 (phía trước).
const bearingBetween = (from: number, to: number) => {
  const a = mapPositions[from];
  const b = mapPositions[to];
  const dx = b.x - a.x;
  const dy = b.y - a.y;
  const deg = (Math.atan2(dx, -dy) * 180) / Math.PI;
  return Math.round(deg);
};

// ═════════════════════════════════════════════════════════════════════════════
// ⮕ BẢNG ĐIỀU CHỈNH HƯỚNG MŨI TÊN — SỬA TRỰC TIẾP CÁC SỐ Ở ĐÂY
// ─────────────────────────────────────────────────────────────────────────────
// Có 2 bảng để bạn tự chỉnh, đơn vị tất cả là ĐỘ:
//   ① arrowConfig      — chỉnh TỪNG mũi tên ở MỘT chỗ: yaw · pitch · rotation · nextYaw · scale
//   ② sceneDefaultView — góc nhìn MẶC ĐỊNH của mỗi cảnh (camera tự quay về khi vừa vào)
//
// Quy ước góc NGANG (yaw):
//        0  = phía trước  |  90 = bên phải  |  -90 = bên trái  |  180 / -180 = phía sau
//        (tăng dần theo chiều kim đồng hồ; dùng số bất kỳ, vd 45, -120…)
// Quy ước góc DỌC (pitch):
//        0  = ngang tầm mắt  |  số DƯƠNG = ngẩng lên  |  số ÂM = cúi xuống
//
// CÁCH CHỈNH:  chạy `npm run dev`, mở cảnh cần sửa, đổi số ở dòng tương ứng, lưu file
//              → trang tự cập nhật. ① khoá theo "A->B" (đứng ở cảnh A, mũi tên sang cảnh B);
//              ② khoá theo số cảnh. Bỏ trống yaw ở ① → mũi tên đó tự tính lại theo mini-map.
// ═════════════════════════════════════════════════════════════════════════════
const DEFAULT_ARROW_PITCH = -8; // độ chúc xuống mặc định cho mọi mũi tên

// ① CẤU HÌNH TỪNG MŨI TÊN — tất cả tham số của một mũi tên gom vào MỘT dòng cho dễ chỉnh.
type ArrowAdjust = {
  yaw?: number;      // góc NGANG (trái/phải). Bỏ trống → tự tính theo mini-map.
  pitch?: number;    // góc DỌC (lên/xuống). Bỏ trống → DEFAULT_ARROW_PITCH.
  rotation?: number; // xoay hình icon mũi tên (độ) — chỉnh chiều vẽ của mũi tên.
  nextYaw?: number;  // hướng camera quay về SAU khi bấm sang cảnh đích. Bỏ trống → bằng yaw.
  scale?: number;    // xa/gần (kích thước): 1 = mặc định, >1 to/gần hơn, <1 nhỏ/xa hơn.
};

// ┌─ VÍ DỤ MẪU — copy phần trong { } rồi dán đè vào mũi tên cần chỉnh ───────────┐
// │  Quay sang phải/trái:        { yaw: 90 }            { yaw: -90 }             │
// │  Mũi tên TO hơn / NHỎ hơn:   { yaw: 90, scale: 1.3 }   { yaw: 90, scale: 0.7 } │
// │  Chếch XUỐNG / NGẨNG lên:    { yaw: 90, pitch: -20 }   { yaw: 90, pitch: 10 }  │
// │  Xoay hình icon mũi tên:     { yaw: 90, rotation: 45 }                       │
// │  Vào cảnh xong quay mặt khác:{ yaw: 90, nextYaw: 180 }                       │
// │  Kết hợp nhiều thứ cùng lúc: { yaw: 90, pitch: -15, scale: 1.2, nextYaw: 0 } │
// └─────────────────────────────────────────────────────────────────────────────┘
const arrowConfig: Record<string, ArrowAdjust> = {
  // Cảnh 1 — Cổng chùa Thái Lạc
  "1->2"  : { yaw:   88, pitch:  -2, rotation: 20 }, // → 2. Cổng chùa bên đường
  "1->3"  : { yaw: -170, pitch:  -5, rotation: -10 }, // → 3. Đường vào cổng chùa
  "1->8"  : { yaw:  140, pitch:  -6, rotation: 0 }, // → 8. Gác chuông Tam quan
  // Cảnh 2 — Cổng chùa bên đường
  "2->1"  : { yaw:  -90, pitch:  -18, rotation: 0 }, // → 1. Cổng chùa Thái Lạc
  "2->9"  : { yaw:  140, pitch:  -20, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
  // Cảnh 3 — Đường vào cổng chùa
  "3->1"  : { yaw:   10, pitch:  -18, rotation: 0 }, // → 1. Cổng chùa Thái Lạc
  "3->4"  : { yaw:  120, pitch:  -18, rotation: 0 }, // → 4. Cổng vào khuôn viên
  // Cảnh 4 — Cổng vào khuôn viên
  "4->5"  : { yaw:  120, pitch:  -5, rotation: 0 }, // → 5. Vườn chùa
  "4->7"  : { yaw:  150, pitch:  -8, rotation: 0 }, // → 7. Hồ nước cảnh quan
  // Cảnh 5 — Vườn chùa
  "5->4"  : { yaw:  -88, pitch:  -15, rotation: 0 }, // → 4. Cổng vào khuôn viên
  "5->6"  : { yaw:   100, pitch:  -18, rotation: 0 }, // → 6. Lối vào rợp bóng cây
  "5->7"  : { yaw: -120, pitch:  -22, rotation: -20 }, // → 7. Hồ nước cảnh quan
  "5->8"  : { yaw:  -60, pitch:  -20, rotation: 30 }, // → 8. Gác chuông Tam quan
  // Cảnh 6 — Lối vào rợp bóng cây
  "6->5"  : { yaw:  290, pitch:  -26, rotation: -30 }, // → 5. Vườn chùa
  "6->17" : { yaw:   32, pitch:  -8, rotation: 0 }, // → 17. Nhà khách
  // Cảnh 7 — Hồ nước cảnh quan
  "7->4"  : { yaw: 0, pitch:  -18, rotation: -20 }, // → 4. Cổng vào khuôn viên
  "7->5"  : { yaw:  39, pitch:  -18, rotation: 30 }, // → 5. Vườn chùa
  // Cảnh 8 — Gác chuông Tam quan
  "8->1"  : { yaw:  313, pitch:  -8, rotation: 0 }, // → 1. Cổng chùa Thái Lạc
  "8->5"  : { yaw:   210, pitch:  -8, rotation: 0 }, // → 5. Vườn chùa
  "8->9"  : { yaw:  30, pitch:  -8, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
  "8->22" : { yaw:    115, pitch:  -15, rotation: 0 }, // → 22. Thượng điện
  // Cảnh 9 — Sân chùa và đài Quan Âm
  "9->2"  : { yaw:  300, pitch:  -8, rotation: 0 }, // → 2. Cổng chùa bên đường
  "9->8"  : { yaw:   200, pitch:  -13, rotation: 0 }, // → 8. Gác chuông Tam quan
  "9->10" : { yaw:  23, pitch:  -8, rotation: 0 }, // → 10. Đài Quan Âm lộ thiên
  "9->12" : { yaw:    117, pitch:  -8, rotation: 0 }, // → 12. Lối vào khu nhà Tổ
  // Cảnh 10 — Đài Quan Âm lộ thiên
  "10->9" : { yaw:   290, pitch:  -18, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
  "10->11": { yaw:    210, pitch:  -22, rotation: 0 }, // → 11. Vườn tháp cổ
  // Cảnh 11 — Vườn tháp cổ
  "11->9" : { yaw:  231, pitch:  -28, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
  "11->10": { yaw:  350, pitch:  -11, rotation: -20 }, // → 10. Đài Quan Âm lộ thiên
  // Cảnh 12 — Lối vào khu nhà Tổ
  "12->9" : { yaw:  292, pitch:  -8, rotation: 0 }, // → 9. Sân chùa và đài Quan Âm
  "12->13": { yaw:    122, pitch:  -8, rotation: 0 }, // → 13. Sân nhà Tổ
  // Cảnh 13 — Sân nhà Tổ
  "13->12": { yaw:  -30, pitch:  -18, rotation: 0 }, // → 12. Lối vào khu nhà Tổ
  "13->14": { yaw:    -150, pitch:  -18, rotation: 0 }, // → 14. Hiên nhà dưới giàn cây
  // Cảnh 14 — Hiên nhà dưới giàn cây
  "14->13": { yaw:  228, pitch:  -12, rotation: 0 }, // → 13. Sân nhà Tổ
  "14->15": { yaw:   115, pitch:  -12, rotation: 0 }, // → 15. Sân sau nhà khách
  // Cảnh 15 — Sân sau nhà khách
  "15->14": { yaw:  -70, pitch:  -8, rotation: 0 }, // → 14. Hiên nhà dưới giàn cây
  "15->16": { yaw:   115, pitch:  -8, rotation: 0 }, // → 16. Sân trong giếng trời
  // Cảnh 16 — Sân trong giếng trời
  "16->15": { yaw:  -22, pitch:  -18, rotation: 0 }, // → 15. Sân sau nhà khách
  "16->17": { yaw:  230, pitch:  -8, rotation: 0 }, // → 17. Nhà khách
  // Cảnh 17 — Nhà khách
  "17->16": { yaw:  -28, pitch:  -18, rotation: 30 }, // → 16. Sân trong giếng trời
  "17->19": { yaw:  -90, pitch:  -18, rotation: 0 }, // → 19. Sân thiên tỉnh
  "17->6" : { yaw: -97, pitch:  -18, rotation: -40 }, // → 6. Lối vào rợp bóng cây
  // Cảnh 18 — Hành lang tượng cổ
  "18->17": { yaw:   -62, pitch:  -8, rotation: 20 }, // → 17. Nhà khách
  "18->19": { yaw:  -80, pitch:  -8, rotation: -20 }, // → 19. Sân thiên tỉnh
  // Cảnh 19 — Sân thiên tỉnh
  "19->17": { yaw:   205, pitch:  -12, rotation: 0 }, // → 17. Nhà khách
  "19->18": { yaw:  220, pitch:  -12, rotation: 10 }, // → 18. Hành lang tượng cổ
  "19->20": { yaw: 10, pitch:  -12, rotation: -10 }, // → 20. Hành lang tượng và sân vườn
  // Cảnh 20 — Hành lang tượng và sân vườn
  "20->19": { yaw:   -110, pitch:  -18, rotation: 0 }, // → 19. Sân thiên tỉnh
  "20->21": { yaw: 78, pitch:  -18, rotation: 0 }, // → 21. Gian thờ bên trong
  // Cảnh 21 — Gian thờ bên trong
  "21->20": { yaw:    50, pitch:  -22, rotation: 10 }, // → 20. Hành lang tượng và sân vườn
  "21->22": { yaw:   190, pitch:  -18, rotation: 0 }, // → 22. Thượng điện
  // Cảnh 22 — Thượng điện
  "22->21": { yaw:  40, pitch:  -18, rotation: 0 }, // → 21. Gian thờ bên trong
  "22->23": { yaw:   200, pitch:  -18, rotation: 0 }, // → 23. Hậu đường
  "22->8" : { yaw:  295, pitch:  -18, rotation: 0 }, // → 8. Gác chuông Tam quan
  // Cảnh 23 — Hậu đường
  "23->22": { yaw:  30, pitch:  -18, rotation: 0 }, // → 22. Thượng điện
};

// ③ Góc nhìn MẶC ĐỊNH của mỗi cảnh — camera tự quay về hướng này khi vừa vào cảnh.
//    yaw = quay ngang (0 = hướng gốc của ảnh), pitch = ngẩng/cúi (0 = ngang tầm mắt).
const sceneDefaultView: Record<number, { yaw: number; pitch: number }> = {
  1:  { yaw: 140, pitch: 18 }, // Cổng chùa Thái Lạc
  2:  { yaw: 140, pitch: 10 }, // Cổng chùa bên đường
  3:  { yaw: 120, pitch: 0 }, // Đường vào cổng chùa
  4:  { yaw: 120, pitch: 10 }, // Cổng vào khuôn viên
  5:  { yaw: 120, pitch: 0 }, // Vườn chùa
  6:  { yaw: -80, pitch: -3 }, // Lối vào rợp bóng cây
  7:  { yaw: 110, pitch: 0 }, // Hồ nước cảnh quan
  8:  { yaw: 90, pitch: 0 }, // Gác chuông Tam quan
  9:  { yaw: 20, pitch: 8 }, // Sân chùa và đài Quan Âm
  10: { yaw: 110, pitch: 0 }, // Đài Quan Âm lộ thiên
  11: { yaw: 115, pitch: 0 }, // Vườn tháp cổ
  12: { yaw: 120, pitch: 0 }, // Lối vào khu nhà Tổ
  13: { yaw: 220, pitch: 0 }, // Sân nhà Tổ
  14: { yaw: -150, pitch: 0 }, // Hiên nhà dưới giàn cây
  15: { yaw: 130, pitch: 0 }, // Sân sau nhà khách
  16: { yaw: 230, pitch: 0 }, // Sân trong giếng trời
  17: { yaw: -60, pitch: 0 }, // Nhà khách
  18: { yaw: -80, pitch: 0 }, // Hành lang tượng cổ
  19: { yaw: 110, pitch: 0 }, // Sân thiên tỉnh
  20: { yaw: 140, pitch: 0 }, // Hành lang tượng và sân vườn
  21: { yaw: 130, pitch: 0 }, // Gian thờ bên trong
  22: { yaw: 110, pitch: 0 }, // Thượng điện
  23: { yaw: 150, pitch: 0 }, // Hậu đường
};

const scenes: TourScene[] = seeds.map((seed, index) => {
  const sceneNumber = index + 1;

  // Mỗi đích đến trong đồ thị = một mũi tên (hotspot). Góc lấy từ bảng arrowYaw/arrowPitch
  // ở trên; nếu không có trong bảng thì tự tính theo mini-map (bearingBetween).
  const hotspots: Hotspot[] = (adjacency[sceneNumber] ?? []).map((target) => {
    const key = `${sceneNumber}->${target}`;
    const cfg = arrowConfig[key] ?? {};
    return {
      targetId: sceneId(target),
      label: seeds[target - 1].title,
      yaw: cfg.yaw ?? bearingBetween(sceneNumber, target),
      pitch: cfg.pitch ?? DEFAULT_ARROW_PITCH,
      rotation: cfg.rotation,
      nextYaw: cfg.nextYaw,
      scale: cfg.scale,
    };
  });

  const defaultView = sceneDefaultView[sceneNumber] ?? { yaw: 0, pitch: 0 };

  return {
    id: sceneId(sceneNumber),
    order: String(sceneNumber).padStart(2, "0"),
    title: seed.title,
    location: seed.location,
    image: imageForFile(seed.imageFile),
    initialYaw: defaultView.yaw,
    initialPitch: defaultView.pitch,
    mapPosition: mapPositions[sceneNumber],
    hotspots,
    infoMarkers: seed.infoMarkers,
  };
});

// Đường nối trên mini-map = các cạnh (không hướng) suy ra từ đồ thị hướng đi,
// đã loại trùng (cạnh a-b chỉ vẽ một lần).
const mapRoutes = (() => {
  const seen = new Set<string>();
  const routes: { from: string; to: string }[] = [];

  Object.entries(adjacency).forEach(([fromStr, targets]) => {
    const from = Number(fromStr);
    targets.forEach((to) => {
      const key = from < to ? `${from}-${to}` : `${to}-${from}`;
      if (seen.has(key)) {
        return;
      }
      seen.add(key);
      routes.push({ from: sceneId(from), to: sceneId(to) });
    });
  });

  return routes;
})();

export const chuaThaiLacTour: Omit<TourConfig, "sceneById" | "locationGroups"> = {
  id: "chua-thai-lac",
  title: "Chùa Thái Lạc (Pháp Vân tự)",
  subtitle: "Di tích quốc gia, chạm khắc gỗ thời Trần",
  welcomeTitle: "Chùa Thái Lạc",
  welcomeAccent: "Pháp Vân tự",
  welcomeSubtitle:
    "Tham quan 360° ngôi chùa cổ thờ Pháp Vân, nổi tiếng với mảng chạm khắc gỗ thời Trần.",
  welcomeBackgroundImage: imageForFile(8), // 08.jpg — Chính sảnh
  welcomeCards: [
    { image: imageForFile(1), label: "Cổng chùa", rotate: "-rotate-6", sceneId: "scene-1" },
    { image: imageForFile(10), label: "Đài Quan Âm", rotate: "rotate-5", sceneId: "scene-10" },
  ],
  backgroundAudio: "", // chưa có nhạc nền; engine bỏ qua chuỗi rỗng (không render thẻ audio)
  practicalInfo: {
    intro: "Thông tin phục vụ tham quan và lễ chùa tại Chùa Thái Lạc (Pháp Vân tự).",
    items: [
      { label: "Địa chỉ", value: "Xã Như Quỳnh, tỉnh Hưng Yên." },
      { label: "Người phụ trách", value: "Đang cập nhật." },
      { label: "Số điện thoại", value: "Đang cập nhật." },
      { label: "Giờ mở cửa", value: "Đón khách theo giờ hành chính và lịch sinh hoạt của nhà chùa." },
    ],
    notes: [
      "Giữ trang phục lịch sự, đi nhẹ nói khẽ, không tự ý di chuyển đồ thờ.",
      "Thông tin người phụ trách và liên hệ sẽ được cập nhật khi có dữ liệu xác thực.",
    ],
  },
  scenes,
  sceneNarration: new Map<string, string[]>(),
  continuousNarrationGroups: [],
  mapRoutes,
};
