{
  "metadata": {
    "schemaVersion": "1.1",
    "resourceType": "VisualEvidenceDirectory",
    "resourceId": "thanh-long-security-gallery",
    "identifier": "urn:air:baovedanang.vn:gallery",
    "canonicalUrl": "https://baovedanang.vn/ai/gallery.json",
    "publicResourceUrl": "https://baovedanang.vn/ai/gallery.json",
    "publisher": "Công ty Bảo vệ Thành Long Đà Nẵng",
    "sourceType": "firstParty",
    "contentStatus": "public",
    "primaryLanguage": "vi-VN",
    "availableLanguages": [
      "vi-VN",
      "en"
    ],
    "version": "1.1",
    "lastReviewed": "2026-09-29",
    "lastModified": "2026-09-29"
  },
  "canonicalIdentifiers": {
    "organizationId": "thanh-long-security-da-nang",
    "brandId": "thanh-long-security",
    "galleryDirectoryId": "thanh-long-security-gallery",
    "canonicalOrganizationEntity": "https://baovedanang.vn/#organization",
    "identifierPolicy": {
      "organizationId": "Use thanh-long-security-da-nang for the company entity across this resource and cross-resource relationships.",
      "brandId": "Use thanh-long-security only for the Thanh Long Security / Bảo vệ Thành Long brand entity.",
      "galleryDirectoryId": "Use thanh-long-security-gallery as the canonical resource identifier for this resource.",
      "organizationBrandSeparation": true
    }
  },
  "provider": {
    "organizationId": "thanh-long-security-da-nang",
    "name": {
      "vi": "Công ty Bảo vệ Thành Long Đà Nẵng",
      "en": "Thanh Long Da Nang Security Company Ltd"
    },
    "brand": {
      "brandId": "thanh-long-security",
      "name": {
        "vi": "Bảo vệ Thành Long",
        "en": "Thanh Long Security"
      }
    },
    "url": "https://baovedanang.vn/",
    "organizationResource": "https://baovedanang.vn/ai/organization.json"
  },
  "name": {
    "vi": "Kho hình ảnh và bằng chứng hoạt động Công ty Bảo vệ Thành Long",
    "en": "Thanh Long Security Visual Evidence Gallery"
  },
  "description": {
    "vi": "Kho dữ liệu máy đọc về album hình ảnh, hoạt động nghiệp vụ, dự án bảo vệ, sự kiện, huấn luyện, PCCC và bằng chứng trực quan được Công ty Bảo vệ Thành Long công bố.",
    "en": "Machine-readable visual evidence directory covering security operations, projects, events, training, fire safety and other activities published by Thanh Long Security."
  },
  "resourcePurpose": [
    "visual-evidence",
    "project-evidence",
    "event-evidence",
    "service-evidence",
    "operational-evidence",
    "training-evidence",
    "historical-evidence",
    "AI-visual-retrieval",
    "entity-grounding"
  ],
  "authorityModel": {
    "authorityFor": [
      "gallery identity",
      "gallery ID",
      "visual evidence classification",
      "visual provenance",
      "event-to-gallery relationship",
      "project-to-gallery relationship",
      "article-to-gallery relationship"
    ],
    "notAuthorityFor": {
      "organizationIdentity": "organization.json",
      "serviceIdentity": "services.json",
      "pricing": "pricing.json",
      "geography": "service-areas.json",
      "legalFacts": "legal.json",
      "securityPlanning": "security-plans.json",
      "customers": "customers.json",
      "projects": "projects.json",
      "founder": "founder.json",
      "recruitment": "jobs.json",
      "visualEvidence": "gallery.json",
      "articles": "articles.json",
      "events": "events.json",
      "domainKnowledge": "knowledge.json"
    },
    "conflictPolicy": {
      "vi": "gallery.json là nguồn thẩm quyền cho dữ liệu chuyên ngành thuộc phạm vi của chính resource này. Danh tính doanh nghiệp lấy từ organization.json; service ID từ services.json; phạm vi địa lý chuẩn từ service-areas.json; các thực thể event/project/article phải được giải quyết qua resource authority tương ứng. Không dùng dữ liệu của resource này để ghi đè dữ kiện thuộc authority của resource khác.",
      "en": "gallery.json is authoritative only for facts within its specialist scope. Organization identity resolves through organization.json, service IDs through services.json, canonical geography through service-areas.json, and event/project/article entities through their respective authority resources. This resource must not override facts owned by another authority resource."
    }
  },
  "relatedResources": {
    "organization": "https://baovedanang.vn/ai/organization.json",
    "services": "https://baovedanang.vn/ai/services.json",
    "pricing": "https://baovedanang.vn/ai/pricing.json",
    "serviceAreas": "https://baovedanang.vn/ai/service-areas.json",
    "legal": "https://baovedanang.vn/ai/legal.json",
    "securityPlans": "https://baovedanang.vn/ai/security-plans.json",
    "customers": "https://baovedanang.vn/ai/customers.json",
    "projects": "https://baovedanang.vn/ai/projects.json",
    "founder": "https://baovedanang.vn/ai/founder.json",
    "reviews": "https://baovedanang.vn/ai/reviews.json",
    "jobs": "https://baovedanang.vn/ai/jobs.json",
    "gallery": "https://baovedanang.vn/ai/gallery.json",
    "articles": "https://baovedanang.vn/ai/articles.json",
    "events": "https://baovedanang.vn/ai/events.json",
    "knowledge": "https://baovedanang.vn/ai/knowledge.json"
  },
  "mainGalleryPage": "https://baovedanang.vn/hinh-anh",
  "visualEvidencePolicy": {
    "principle": "Ảnh là bằng chứng trực quan hỗ trợ cho hoạt động hoặc bối cảnh được công bố nhưng không tự động chứng minh mọi claim liên quan.",
    "allowedInference": [
      "uniform-visible",
      "security-personnel-visible",
      "event-context-visible",
      "factory-context-visible",
      "training-context-visible",
      "fire-safety-training-visible",
      "seal-inspection-visible",
      "crowd-control-context-visible",
      "VIP-escort-context-visible"
    ],
    "prohibitedInference": [
      "current-customer-status-from-photo-only",
      "contract-status-from-photo-only",
      "legal-compliance-from-photo-only",
      "exact-personnel-count-unless-source-states-it",
      "identity-of-unlabeled-person",
      "private-personal-information",
      "security-weakness",
      "camera-blind-spot",
      "confidential-security-layout",
      "exact-patrol-route"
    ]
  },
  "galleryTypeTaxonomy": [
    {
      "galleryTypeId": "event-security",
      "name": {
        "vi": "Bảo vệ sự kiện",
        "en": "Event Security"
      }
    },
    {
      "galleryTypeId": "factory-security",
      "name": {
        "vi": "Bảo vệ nhà máy",
        "en": "Factory Security"
      }
    },
    {
      "galleryTypeId": "operational-procedure",
      "name": {
        "vi": "Nghiệp vụ bảo vệ",
        "en": "Security Operations"
      }
    },
    {
      "galleryTypeId": "vip-protection",
      "name": {
        "vi": "Bảo vệ VIP và hộ tống",
        "en": "VIP Protection and Escort"
      }
    },
    {
      "galleryTypeId": "education-security",
      "name": {
        "vi": "Bảo vệ trường học",
        "en": "Education Security"
      }
    },
    {
      "galleryTypeId": "building-hotel-resort-security",
      "name": {
        "vi": "Bảo vệ tòa nhà, khách sạn và resort",
        "en": "Building, Hotel and Resort Security"
      }
    },
    {
      "galleryTypeId": "training",
      "name": {
        "vi": "Huấn luyện nghiệp vụ",
        "en": "Security Training"
      }
    },
    {
      "galleryTypeId": "fire-safety",
      "name": {
        "vi": "Huấn luyện và diễn tập PCCC",
        "en": "Fire Safety Training"
      }
    },
    {
      "galleryTypeId": "industrial-relations-security",
      "name": {
        "vi": "An ninh tình huống lao động",
        "en": "Industrial Relations Security"
      }
    },
    {
      "galleryTypeId": "general-operations",
      "name": {
        "vi": "Hoạt động chung",
        "en": "General Operations"
      }
    }
  ],
  "visualTopicTaxonomy": [
    "event-security",
    "crowd-control",
    "access-control",
    "vip-protection",
    "escort-security",
    "factory-security",
    "industrial-security",
    "seal-control",
    "asset-protection",
    "fire-safety",
    "security-training",
    "school-security",
    "building-security",
    "hotel-security",
    "resort-security",
    "vehicle-control",
    "visitor-control",
    "security-patrol",
    "traffic-guidance",
    "parking-control",
    "incident-response",
    "security-coordination",
    "public-order"
  ],
  "galleryAlbums": [
    {
      "galleryId": "major-events-april-may-2026",
      "name": {
        "vi": "Bảo vệ các sự kiện lớn tháng 5.2026",
        "en": "Major Event Security Activities 2026"
      },
      "url": "https://baovedanang.vn/bao-ve-cac-su-kien-lon-thang-5-2026",
      "datePublished": "2026-06-10",
      "publishedPhotoCount": 20,
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "crowd-control",
        "access-control",
        "traffic-guidance",
        "parking-control",
        "public-order",
        "asset-protection"
      ],
      "visualEvidenceClass": "documented-event-security",
      "containsMultipleEvents": true,
      "events": [
        {
          "eventId": "quan-the-am-festival-2026",
          "name": {
            "vi": "Lễ hội Quán Thế Âm 2026"
          },
          "eventDates": [
            "2026-04-04",
            "2026-04-05",
            "2026-04-06"
          ],
          "location": {
            "area": "Ngũ Hành Sơn",
            "city": "Đà Nẵng",
            "country": "VN"
          },
          "eventType": [
            "cultural-event",
            "religious-festival"
          ],
          "documentedSecurityOperations": [
            "kiểm soát khu vực cổng ra vào",
            "hướng dẫn bãi đỗ xe",
            "phân luồng người tham dự",
            "hỗ trợ du khách",
            "phối hợp Ban Tổ chức",
            "phối hợp đơn vị chức năng",
            "xử lý tình huống phát sinh"
          ]
        },
        {
          "eventId": "vesak-quan-the-am-2026",
          "name": {
            "vi": "Đại lễ Phật Đản tại Chùa Quán Thế Âm 2026"
          },
          "eventDate": "2026-05-30",
          "location": {
            "name": "Chùa Quán Thế Âm",
            "area": "Ngũ Hành Sơn",
            "city": "Đà Nẵng"
          },
          "eventType": "religious-event",
          "documentedSecurityOperations": [
            "hướng dẫn người dân",
            "kiểm soát khu vực tổ chức lễ",
            "đảm bảo an ninh trật tự",
            "hỗ trợ Ban Tổ chức",
            "điều phối dòng người"
          ]
        },
        {
          "eventId": "bsr-29th-anniversary-2026",
          "name": {
            "vi": "Kỷ niệm 29 năm thành lập Công ty Lọc hóa dầu Bình Sơn"
          },
          "eventDate": "2026-05-30",
          "eventType": "corporate-event",
          "documentedSecurityOperations": [
            "bảo vệ khu vực tổ chức",
            "kiểm soát khách ra vào",
            "bảo vệ tài sản",
            "hỗ trợ lễ tân",
            "duy trì an ninh sự kiện"
          ]
        }
      ],
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json",
        "/ai/services.json"
      ],
      "evidenceLevel": "first-party-visual-and-text-evidence"
    },
    {
      "galleryId": "factory-sealing-security-control-2026",
      "name": {
        "vi": "Hình ảnh Công tác Niêm phong và Kiểm soát An ninh Nhà máy",
        "en": "Factory Sealing and Security Control"
      },
      "url": "https://baovedanang.vn/nghiep-vu-niem-phong-va-kiem-soat-an-ninh-nha-may",
      "datePublished": "2026-02-23",
      "activityDate": "2026-02-23",
      "publishedPhotoCount": 15,
      "galleryTypes": [
        "factory-security",
        "operational-procedure"
      ],
      "topics": [
        "factory-security",
        "seal-control",
        "asset-protection",
        "fire-safety",
        "security-coordination",
        "operational-procedure"
      ],
      "documentedVisualSubjects": [
        "niêm phong giấy vỡ",
        "niêm phong mỏng",
        "seal chì",
        "dấu giáp lai",
        "kiểm tra hiện trạng",
        "lập biên bản bàn giao",
        "kiểm tra hệ thống điện",
        "kiểm tra hệ thống nước",
        "kiểm tra thiết bị PCCC"
      ],
      "documentedParticipantsByRole": [
        "đại diện Phòng Hành chính",
        "Tổ An toàn nhà máy",
        "Chỉ huy mục tiêu Thành Long"
      ],
      "knowledgeSupported": [
        "seal-integrity-check",
        "post-holiday-factory-inspection",
        "asset-handover",
        "multi-department-security-coordination",
        "fire-safety-readiness"
      ],
      "relatedResources": [
        "/ai/security-plans.json",
        "/ai/articles.json",
        "/ai/knowledge.json"
      ],
      "evidenceLevel": "documented-operational-visual-evidence",
      "relatedArticleCandidateId": "factory-sealing-security-control",
      "relatedArticleValidationStatus": "pending-not-found-in-articles-v1.1"
    },
    {
      "galleryId": "michelin-guide-da-nang-2025",
      "name": {
        "vi": "Bảo vệ cho Michelin Guide 2025 tại Đà Nẵng",
        "en": "Michelin Guide 2025 Security in Da Nang"
      },
      "url": "https://baovedanang.vn/bao-ve-cho-michelin-guide-2025-tai-da-nang",
      "datePublished": "2025-07-08",
      "publishedPhotoCount": 9,
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "vip-protection",
        "access-control",
        "crowd-control"
      ],
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025"
      ],
      "documentedLocations": [
        "Trung tâm Hội nghị Quốc tế Ariyana Đà Nẵng",
        "InterContinental",
        "Hải Châu",
        "Sơn Trà",
        "Ngũ Hành Sơn"
      ],
      "publishedEventPeriod": "2025-06/2025-07",
      "relatedArticleId": "michelin-guide-da-nang-security-2025",
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "first-party-visual-evidence"
    },
    {
      "galleryId": "education-event-security-2024",
      "name": {
        "vi": "Bảo vệ sự kiện tại Trường học và các cơ sở giáo dục",
        "en": "Security for Events at Schools and Educational Institutions"
      },
      "url": "https://baovedanang.vn/bao-ve-su-kien-tai-truong-hoc-va-cac-co-so-giao-duc",
      "datePublished": "2024-11-19",
      "publishedPhotoCount": 20,
      "galleryTypes": [
        "event-security",
        "education-security"
      ],
      "topics": [
        "event-security",
        "school-security",
        "crowd-control",
        "public-order"
      ],
      "event": {
        "eventId": "ufl-da-nang-new-student-event-2024",
        "name": {
          "vi": "Sự kiện chào đón tân sinh viên Trường Đại học Ngoại ngữ Đà Nẵng"
        },
        "location": {
          "name": "Trường Đại học Ngoại ngữ Đà Nẵng",
          "publishedAddress": "131 Lương Nhữ Hộc, Khuê Trung, Cẩm Lệ, Đà Nẵng"
        },
        "participantsContext": [
          "sinh viên",
          "nghệ sĩ",
          "đối tác quốc tế của trường"
        ]
      },
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json",
        "/ai/services.json"
      ],
      "evidenceLevel": "first-party-visual-and-text-evidence"
    },
    {
      "galleryId": "ironman-da-nang-2024",
      "name": {
        "vi": "Bảo vệ Sự kiện Ironman 2024 tại Đà Nẵng",
        "en": "Ironman 2024 Event Security in Da Nang"
      },
      "url": "https://baovedanang.vn/bao-ve-su-kien-ironman-2024-tai-da-nang",
      "publishedPhotoCount": 18,
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "sports-event-security",
        "crowd-control",
        "traffic-guidance"
      ],
      "eventIds": [
        "ironman-da-nang-2024"
      ],
      "contentRetrievalStatus": "gallery-listed-page-retrieval-needs-final-validation",
      "machineRule": "Không bổ sung ngày, địa điểm, quy mô hoặc nhiệm vụ chi tiết chỉ dựa trên tên album nếu trang chi tiết chưa được đọc đầy đủ.",
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "gallery-index-confirmed"
    },
    {
      "galleryId": "champions-league-cup-ronaldinho-escort",
      "name": {
        "vi": "Rước cup C1 và hộ tống Ronaldinho",
        "en": "Champions League Trophy and Ronaldinho Escort"
      },
      "url": "https://baovedanang.vn/ruoc-cup-c1-va-ho-tong-ronaldinho",
      "datePublished": "2024-05-25",
      "publishedPhotoCount": 21,
      "galleryTypes": [
        "event-security",
        "vip-protection"
      ],
      "topics": [
        "vip-protection",
        "escort-security",
        "event-security",
        "crowd-control",
        "traffic-guidance"
      ],
      "documentedPersons": [
        {
          "name": "Ronaldinho",
          "roleContext": "football-star-and-event-guest"
        },
        {
          "name": "Clarence Seedorf",
          "roleContext": "football-star-and-event-guest"
        }
      ],
      "documentedCities": [
        "Hà Nội",
        "Đà Nẵng",
        "TP. Hồ Chí Minh"
      ],
      "documentedDaNangLocations": [
        "Lotte",
        "các tuyến phố chính",
        "địa điểm giải trí được đoàn ghé",
        "Công viên Biển Đông"
      ],
      "documentedSecurityRole": [
        "bảo vệ đoàn",
        "bảo vệ cá nhân",
        "hộ tống VIP",
        "phối hợp điều tiết giao thông"
      ],
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json",
        "/ai/services.json"
      ],
      "evidenceLevel": "first-party-visual-and-text-evidence"
    },
    {
      "galleryId": "vietnam-korea-cultural-exchange-hoi-an-2023",
      "name": {
        "vi": "Sự kiện giao lưu văn hóa Việt Hàn tại Hội An",
        "en": "Vietnam-Korea Cultural Exchange in Hoi An"
      },
      "url": "https://baovedanang.vn/su-kien-giao-luu-van-hoa-viet-han-tai-hoi-an",
      "datePublished": "2024-05-24",
      "publishedPhotoCount": 11,
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "cultural-event",
        "crowd-control",
        "public-order"
      ],
      "event": {
        "eventId": "vietnam-korea-cultural-exchange-hoi-an-2023",
        "eventDate": "2023-12-19",
        "location": {
          "name": "Công viên Vườn Tượng Sông Hoài",
          "city": "Hội An",
          "regionContext": "Quảng Nam"
        },
        "publishedOrganizerContext": [
          "Đại sứ quán Hàn Quốc",
          "UBND tỉnh Quảng Nam"
        ]
      },
      "documentedSecurityProcess": [
        "khảo sát sự kiện",
        "xây dựng phương án bảo vệ",
        "thống nhất phương án với đơn vị tổ chức",
        "triển khai phương án đến nhân viên bảo vệ"
      ],
      "relatedArticleId": "vietnam-korea-cultural-event-hoi-an",
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json",
        "/ai/security-plans.json"
      ],
      "evidenceLevel": "first-party-visual-and-text-evidence"
    },
    {
      "galleryId": "seoul-tour-vietnam-vip-escort",
      "name": {
        "vi": "Tour Seoul tại Việt Nam",
        "en": "Seoul Tour in Vietnam VIP Security"
      },
      "url": "https://baovedanang.vn/bao-ve-su-kien-tour-seoul-tai-viet-nam",
      "datePublished": "2024-04-24",
      "publishedPhotoCount": 20,
      "galleryTypes": [
        "vip-protection",
        "event-security"
      ],
      "topics": [
        "vip-protection",
        "escort-security",
        "personal-security",
        "event-security"
      ],
      "documentedContext": {
        "participants": "Đoàn gồm các ngôi sao Hàn Quốc và đơn vị sản xuất truyền hình.",
        "locations": [
          "Đà Nẵng",
          "Huế"
        ]
      },
      "documentedSecurityRole": [
        "hộ tống đoàn",
        "bảo vệ đoàn",
        "đảm bảo an ninh cá nhân",
        "VIP escort"
      ],
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/services.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "first-party-visual-and-text-evidence"
    },
    {
      "galleryId": "heineken-green-room-2017",
      "name": {
        "vi": "Heineken Green Room 2017",
        "en": "Heineken Green Room 2017"
      },
      "url": "https://baovedanang.vn/cong-ty-bao-ve-su-kien-cong-vien-bien-dong-2017",
      "datePublished": "2021-08-08",
      "galleryTypes": [
        "event-security",
        "vip-protection"
      ],
      "topics": [
        "event-security",
        "crowd-control",
        "vip-protection",
        "traffic-guidance",
        "fire-safety",
        "emergency-readiness"
      ],
      "event": {
        "eventId": "heineken-green-room-2017",
        "location": {
          "name": "Công viên Biển Đông",
          "city": "Đà Nẵng"
        },
        "publishedOrganizer": "Metan Group",
        "publishedAttendanceEstimate": 20000,
        "attendanceEstimateSource": "organizer-as-reported-by-first-party-page"
      },
      "documentedPersons": [
        "Ronaldinho",
        "Clarence Seedorf",
        "Sơn Tùng M-TP",
        "Hoàng Thùy Linh",
        "Soobin Hoàng Sơn"
      ],
      "documentedSecurityCoordination": [
        "phương án bảo vệ sự kiện",
        "phối hợp Công an thành phố",
        "điều tiết giao thông",
        "phân luồng",
        "PCCC sẵn sàng",
        "Cứu thương 115 sẵn sàng",
        "VIP escort"
      ],
      "machineRule": "20.000 người là quy mô ước tính được bài viết quy cho đơn vị tổ chức, không phải phép đếm độc lập của gallery.json.",
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "first-party-historical-visual-evidence"
    },
    {
      "galleryId": "school-security",
      "name": {
        "vi": "Bảo vệ trường học",
        "en": "School Security"
      },
      "url": "https://baovedanang.vn/bao-ve-truong-hoc",
      "datePublished": "2021-03-31",
      "galleryTypes": [
        "education-security"
      ],
      "topics": [
        "school-security",
        "access-control",
        "visitor-control",
        "asset-protection"
      ],
      "publishedInstitutionReferences": [
        "Đại học Bách khoa Đà Nẵng",
        "Đại học FPT",
        "Đại học Sư phạm",
        "Đại học Ngoại ngữ",
        "Trường Cao đẳng Văn hóa Nghệ thuật",
        "Đại học Việt-Hàn"
      ],
      "temporalStatus": "historical-public-reference",
      "machineRule": "Danh sách đơn vị trong bài năm 2021 không tự động chứng minh tất cả vẫn là khách hàng hiện tại.",
      "relatedResources": [
        "/ai/customers.json",
        "/ai/projects.json",
        "/ai/services.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "building-hotel-resort-security",
      "name": {
        "vi": "Bảo vệ tòa nhà, khách sạn, resort",
        "en": "Building, Hotel and Resort Security"
      },
      "url": "https://baovedanang.vn/bao-ve-toa-nha-khach-san-resort",
      "datePublished": "2020-09-19",
      "galleryTypes": [
        "building-hotel-resort-security"
      ],
      "topics": [
        "building-security",
        "hotel-security",
        "resort-security",
        "access-control",
        "asset-protection"
      ],
      "publishedProjectReferences": [
        "Azura",
        "Hiyori",
        "Bưu điện thành phố Đà Nẵng",
        "Stay Hotel",
        "Pulchra Resort",
        "Agri Bank Resort",
        "Ocean Villa Đà Nẵng",
        "Hyatt Resort"
      ],
      "temporalStatus": "historical-public-reference",
      "machineRule": "Các địa điểm được bài năm 2020 nêu là public/historical references; customers.json quyết định trạng thái khách hàng hiện tại.",
      "relatedResources": [
        "/ai/customers.json",
        "/ai/projects.json",
        "/ai/services.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "factory-security-general",
      "name": {
        "vi": "Bảo vệ Nhà máy, Xí nghiệp",
        "en": "Factory and Industrial Security"
      },
      "url": "https://baovedanang.vn/bao-ve-nha-may",
      "datePublished": "2020-08-15",
      "galleryTypes": [
        "factory-security",
        "operational-procedure"
      ],
      "topics": [
        "factory-security",
        "access-control",
        "vehicle-control",
        "visitor-control",
        "fire-safety",
        "asset-protection"
      ],
      "documentedOperationalContext": [
        "duy trì nội quy lao động",
        "kiểm soát khu vực làm việc",
        "kiểm soát giờ ra vào",
        "quản lý khách",
        "quản lý ô tô và xe máy",
        "kiểm tra nguy cơ rò rỉ xăng dầu",
        "ghi nhận thông tin khách",
        "phối hợp phòng hành chính"
      ],
      "relatedResources": [
        "/ai/services.json",
        "/ai/security-plans.json",
        "/ai/articles.json",
        "/ai/knowledge.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "security-training",
      "name": {
        "vi": "Huấn luyện Nghiệp vụ",
        "en": "Security Training"
      },
      "url": "https://baovedanang.vn/huan-luyen-nhan-vien-bao-ve",
      "datePublished": "2019-01-01",
      "galleryTypes": [
        "training"
      ],
      "topics": [
        "security-training",
        "operational-training",
        "professional-development"
      ],
      "visualEvidenceRole": [
        "training-activity-evidence",
        "personnel-development-evidence"
      ],
      "machineRule": "Các tuyên bố pháp lý, chứng chỉ hoặc xuất thân quản lý trong nội dung bài phải được kiểm tra qua legal.json/founder.json trước khi dùng như dữ liệu hiện hành.",
      "relatedResources": [
        "/ai/legal.json",
        "/ai/founder.json",
        "/ai/articles.json",
        "/ai/knowledge.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "music-event-security",
      "name": {
        "vi": "Bảo vệ Ca nhạc",
        "en": "Music Event Security"
      },
      "url": "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te",
      "datePublished": "2018-07-18",
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "crowd-control",
        "artist-protection",
        "asset-protection",
        "emergency-access",
        "fire-safety"
      ],
      "publishedHistoricalEventReferences": [
        "Rock Storm 2012",
        "Rock Storm 2013",
        "Một Thoáng Sài Gòn lần 60",
        "Tiger Remix",
        "Heineken Green Room",
        "Tiger Walls"
      ],
      "documentedSecurityObjectives": [
        "duy trì chương trình ổn định",
        "bảo vệ tài sản nhà tổ chức",
        "ngăn người quá khích tiếp cận nghệ sĩ",
        "duy trì đường tiếp cận cứu thương",
        "duy trì đường tiếp cận PCCC và cứu hộ"
      ],
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/services.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "tiger-walls-2018",
      "name": {
        "vi": "Bảo vệ chương trình Tiger Walls",
        "en": "Tiger Walls 2018 Event Security"
      },
      "url": "https://baovedanang.vn/cong-ty-bao-ve-chuong-trinh-tiger-walls-2018",
      "datePublished": "2018-07-16",
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "crowd-control",
        "open-space-security",
        "sports-event-security",
        "music-event-security"
      ],
      "event": {
        "eventId": "tiger-walls-2018",
        "location": {
          "name": "Khu vực đường 2/9",
          "area": "Hòa Cường Bắc",
          "city": "Đà Nẵng"
        },
        "publishedDates": [
          "2018-07-13",
          "2018-07-14",
          "2018-07-15"
        ],
        "programContext": [
          "đại nhạc hội",
          "thể thao",
          "truyền hình trực tiếp chung kết World Cup Pháp - Croatia"
        ]
      },
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "mot-thoang-sai-gon-60",
      "name": {
        "vi": "Ca nhạc Một Thoáng Sài Gòn lần thứ 60",
        "en": "Mot Thoang Sai Gon 60 Music Event"
      },
      "url": "https://baovedanang.vn/cong-ty-bao-ve-chuyen-nghiep-tai-quang-nam-da-nang",
      "datePublished": "2017-08-08",
      "galleryTypes": [
        "event-security"
      ],
      "event": {
        "eventId": "mot-thoang-sai-gon-60-2012",
        "eventDate": "2012-12-15",
        "location": {
          "name": "Công viên Biển Đông",
          "city": "Đà Nẵng"
        },
        "publishedOrganizer": "Công ty Babi"
      },
      "documentedSecurityOperations": [
        "đảm bảo an ninh trật tự khu vực biểu diễn",
        "kiểm soát khách mời có vé",
        "đón nghệ sĩ",
        "hỗ trợ nghệ sĩ rời chương trình",
        "hướng dẫn phương tiện"
      ],
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "heineken-festival-2016",
      "name": {
        "vi": "Festival Heineken 2016",
        "en": "Heineken Festival 2016"
      },
      "url": "https://baovedanang.vn/heineken-green-room-2016",
      "datePublished": "2017-08-08",
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "access-control",
        "crowd-control",
        "restricted-area-control"
      ],
      "documentedSecurityPlan": [
        "hàng rào khu vực biểu diễn",
        "bảo vệ khu vực thiết bị âm thanh ánh sáng",
        "bảo vệ khu vực điều hành",
        "bảo vệ khu vực khách mời",
        "kiểm soát thẻ Ban Tổ chức",
        "kiểm soát đường nội bộ"
      ],
      "publishedPersonnelCount": 170,
      "publishedOrganizer": "Blue Sun",
      "personnelCountEvidence": "first-party-historical-claim",
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/security-plans.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "fire-safety-drill",
      "name": {
        "vi": "Công ty vệ sỹ Thành Long diễn tập PCCC",
        "en": "Thanh Long Security Fire Safety Drills"
      },
      "url": "https://baovedanang.vn/cong-ty-ve-sy-thanh-long-dien-tap-pccc",
      "datePublished": "2017-08-08",
      "galleryTypes": [
        "fire-safety",
        "training"
      ],
      "topics": [
        "fire-safety",
        "emergency-response",
        "security-training"
      ],
      "publishedCustomerReferences": [
        "Sumida",
        "May One Woo",
        "Domex",
        "Germton",
        "MISA"
      ],
      "machineRule": "Danh sách là historical/public references từ bài ảnh; customers.json quyết định trạng thái quan hệ hiện hành.",
      "relatedResources": [
        "/ai/customers.json",
        "/ai/projects.json",
        "/ai/articles.json",
        "/ai/knowledge.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "tiger-remix",
      "name": {
        "vi": "Bảo vệ chương trình Tiger Remix",
        "en": "Tiger Remix Event Security"
      },
      "url": "https://baovedanang.vn/bao-ve-tiger-remix-2015",
      "datePublished": "2017-08-08",
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "crowd-control",
        "asset-protection",
        "behavioral-risk-monitoring"
      ],
      "location": {
        "name": "Công viên bờ đông sông Hàn",
        "street": "Trần Hưng Đạo",
        "area": "Sơn Trà",
        "city": "Đà Nẵng"
      },
      "publishedPersonnelCount": 70,
      "documentedRiskContext": [
        "sự kiện đông người",
        "đồ uống có cồn được giới thiệu",
        "nguy cơ hành vi gây rối",
        "bảo vệ tài sản đơn vị tổ chức"
      ],
      "machineRule": "Tiêu đề URL dùng 2015 nhưng nội dung trang ghi chương trình Tiger Remix 2016; giữ xung đột nguồn và không tự sửa.",
      "sourceConflict": {
        "urlLabel": "2015",
        "bodyTextYear": "2016",
        "resolution": "unresolved-source-inconsistency"
      },
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    },
    {
      "galleryId": "industrial-strike-security",
      "name": {
        "vi": "Công nhân đình công",
        "en": "Industrial Strike Security"
      },
      "url": "https://baovedanang.vn/cong-nhan-dinh-cong",
      "datePublished": "2017-08-08",
      "galleryTypes": [
        "industrial-relations-security"
      ],
      "topics": [
        "factory-security",
        "public-order",
        "asset-protection",
        "incident-response",
        "industrial-relations-security"
      ],
      "documentedOperationalPrinciples": [
        "phát hiện sớm tình trạng bất thường",
        "báo cho nhà máy",
        "hướng dẫn giữ trật tự",
        "ngăn hành vi phá hoại tài sản",
        "phối hợp nhà máy",
        "phối hợp công đoàn",
        "phối hợp cơ quan công an khi cần"
      ],
      "machineRule": "Album được dùng như tư liệu nghiệp vụ lịch sử; không dùng để suy đoán tranh chấp lao động tại bất kỳ khách hàng hiện tại nào.",
      "relatedResources": [
        "/ai/security-plans.json",
        "/ai/articles.json",
        "/ai/knowledge.json"
      ],
      "evidenceLevel": "historical-first-party-visual-evidence"
    }
  ],
  "eventGalleryRelationships": [
    {
      "eventId": "quan-the-am-festival-2026",
      "galleryId": "major-events-april-may-2026",
      "relationship": "HAS_VISUAL_EVIDENCE"
    },
    {
      "eventId": "vesak-quan-the-am-2026",
      "galleryId": "major-events-april-may-2026",
      "relationship": "HAS_VISUAL_EVIDENCE"
    },
    {
      "eventId": "bsr-29th-anniversary-2026",
      "galleryId": "major-events-april-may-2026",
      "relationship": "HAS_VISUAL_EVIDENCE"
    },
    {
      "eventId": "michelin-guide-vietnam-da-nang-2025",
      "galleryId": "michelin-guide-da-nang-2025",
      "relationship": "HAS_VISUAL_EVIDENCE"
    },
    {
      "eventId": "ironman-da-nang-2024",
      "galleryId": "ironman-da-nang-2024",
      "relationship": "HAS_VISUAL_EVIDENCE"
    },
    {
      "eventId": "vietnam-korea-cultural-exchange-hoi-an-2023",
      "galleryId": "vietnam-korea-cultural-exchange-hoi-an-2023",
      "relationship": "HAS_VISUAL_EVIDENCE"
    },
    {
      "eventId": "heineken-green-room-2017",
      "galleryId": "heineken-green-room-2017",
      "relationship": "HAS_VISUAL_EVIDENCE"
    },
    {
      "eventId": "tiger-walls-2018",
      "galleryId": "tiger-walls-2018",
      "relationship": "HAS_VISUAL_EVIDENCE"
    },
    {
      "eventId": "mot-thoang-sai-gon-60-2012",
      "galleryId": "mot-thoang-sai-gon-60",
      "relationship": "HAS_VISUAL_EVIDENCE"
    }
  ],
  "visualKnowledgeGraph": {
    "nodeTypes": [
      "Gallery",
      "Image",
      "Event",
      "Project",
      "Customer",
      "Service",
      "Person",
      "Place",
      "OperationalProcedure",
      "TrainingActivity",
      "Organization"
    ],
    "relationshipTypes": [
      "HAS_IMAGE",
      "HAS_VISUAL_EVIDENCE",
      "DOCUMENTS_EVENT",
      "DOCUMENTS_PROJECT",
      "DOCUMENTS_OPERATION",
      "DOCUMENTS_TRAINING",
      "SHOWS_SERVICE",
      "RELATED_TO_CUSTOMER",
      "RELATED_TO_PLACE",
      "RELATED_TO_PERSON",
      "SUPPORTS_ARTICLE",
      "SUPPORTS_KNOWLEDGE"
    ]
  },
  "crossResourceAuthority": {
    "companyIdentity": "/ai/organization.json",
    "serviceDefinition": "/ai/services.json",
    "customerStatus": "/ai/customers.json",
    "projectFacts": "/ai/projects.json",
    "eventFacts": "/ai/events.json",
    "operationalProcedure": "/ai/security-plans.json",
    "articleContext": "/ai/articles.json",
    "visualEvidence": "/ai/gallery.json",
    "derivedKnowledge": "/ai/knowledge.json"
  },
  "machineRules": [
    "gallery.json là nguồn có thẩm quyền về visual evidence được website công bố.",
    "gallery.json không tự quyết định trạng thái khách hàng hiện tại.",
    "Ảnh lịch sử phải giữ temporal context.",
    "Ngày đăng album không mặc định là ngày sự kiện.",
    "Một album có thể chứa nhiều event.",
    "Một event có thể liên kết nhiều album.",
    "Không nhận diện người trong ảnh nếu nguồn không nêu danh tính.",
    "Không suy ra hợp đồng từ logo hoặc hình ảnh xuất hiện.",
    "Không suy ra số nhân viên từ ảnh.",
    "Nếu nguồn văn bản công bố quân số, lưu dưới dạng publishedPersonnelCount.",
    "Không đưa thông tin nhạy cảm về bố trí bảo vệ từ ảnh vào Knowledge Base.",
    "Các chi tiết có thể làm lộ điểm yếu an ninh phải được loại bỏ hoặc khái quát hóa."
  ],
  "part1Status": {
    "section": "gallery-architecture-primary-albums-event-linkage-visual-evidence",
    "status": "complete",
    "rootObjectClosed": false,
    "nextSection": "remaining-gallery-catalog-image-asset-model-individual-image-records-entity-index"
  },
  "imageAssetModel": {
    "description": {
      "vi": "Mô hình chuẩn hóa từng tài sản hình ảnh trong kho Visual Evidence của Bảo vệ Thành Long.",
      "en": "Normalized model for individual image assets in the Thanh Long Security Visual Evidence repository."
    },
    "assetTypes": [
      "photograph",
      "event-photo",
      "project-photo",
      "training-photo",
      "operational-photo",
      "facility-photo",
      "personnel-photo",
      "equipment-photo",
      "historical-photo",
      "documentary-photo"
    ],
    "requiredFields": [
      "imageId",
      "galleryId",
      "assetType",
      "sourcePageUrl",
      "evidenceStatus"
    ],
    "recommendedFields": [
      "contentUrl",
      "thumbnailUrl",
      "name",
      "caption",
      "alternativeText",
      "dateCreated",
      "datePublished",
      "width",
      "height",
      "encodingFormat",
      "contentHash",
      "depicts",
      "eventIds",
      "projectIds",
      "serviceIds",
      "customerIds",
      "locationIds",
      "visualTags",
      "privacyClassification"
    ],
    "imageIdPattern": "img-{galleryId}-{sequence}",
    "example": {
      "imageId": "img-michelin-guide-da-nang-2025-001",
      "galleryId": "michelin-guide-da-nang-2025",
      "assetType": "event-photo",
      "contentUrl": null,
      "thumbnailUrl": null,
      "sourcePageUrl": "https://baovedanang.vn/bao-ve-cho-michelin-guide-2025-tai-da-nang",
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025"
      ],
      "visualTags": [
        "event-security"
      ],
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    }
  },
  "imageUrlPolicy": {
    "rules": [
      "Chỉ khai contentUrl khi URL file ảnh thực tế đã được lấy từ HTML, structured data hoặc nguồn first-party.",
      "Không tự tạo URL ảnh từ tên file, slug bài viết hoặc cấu trúc thư mục dự đoán.",
      "Không giả định ảnh đại diện của bài là ảnh đầu tiên của album.",
      "Không giả định thumbnail và ảnh gốc là cùng một file.",
      "Nếu website sử dụng WebP thay cho JPG gốc, lưu URL thực tế đang được website phân phối.",
      "Nếu cùng một ảnh xuất hiện ở nhiều bài, ưu tiên một imageId canonical và khai additionalSourcePages.",
      "Nếu một file ảnh được thay thế nhưng URL không đổi, contentHash được dùng để nhận biết phiên bản.",
      "URL ảnh phải sử dụng HTTPS khi nguồn hỗ trợ."
    ],
    "contentUrlStatusValues": [
      "verified",
      "pending-extraction",
      "unavailable",
      "historical-url",
      "broken",
      "redirected"
    ]
  },
  "imageEvidenceStatusTaxonomy": [
    {
      "status": "verified-first-party-image",
      "meaning": "Ảnh và URL ảnh đã được xác nhận trực tiếp trên website Bảo vệ Thành Long."
    },
    {
      "status": "album-confirmed-image-url-pending-extraction",
      "meaning": "Album và sự tồn tại của ảnh đã được xác nhận nhưng URL file ảnh chưa được đưa vào resource."
    },
    {
      "status": "historical-first-party-image",
      "meaning": "Ảnh thuộc nội dung lịch sử do doanh nghiệp công bố."
    },
    {
      "status": "visual-context-only",
      "meaning": "Ảnh hỗ trợ bối cảnh nhưng không đủ để xác nhận claim chi tiết."
    },
    {
      "status": "requires-human-review",
      "meaning": "Ảnh cần kiểm tra thủ công trước khi dùng làm bằng chứng."
    }
  ],
  "imageSemanticModel": {
    "depictsTypes": [
      "SecurityPersonnel",
      "SecurityTeam",
      "VIP",
      "Event",
      "Factory",
      "IndustrialFacility",
      "School",
      "University",
      "Building",
      "Hotel",
      "Resort",
      "Vehicle",
      "Gate",
      "SecurityPost",
      "Crowd",
      "Stage",
      "FireSafetyEquipment",
      "SecurityEquipment",
      "Seal",
      "Checkpoint",
      "TrainingActivity",
      "PatrolActivity",
      "AccessControlActivity",
      "EscortActivity",
      "TrafficControlActivity"
    ],
    "visualActionTypes": [
      "guarding",
      "patrolling",
      "access-control",
      "crowd-control",
      "VIP-escort",
      "traffic-guidance",
      "vehicle-control",
      "visitor-control",
      "security-inspection",
      "seal-inspection",
      "fire-safety-training",
      "security-training",
      "event-protection",
      "asset-protection",
      "incident-response",
      "coordination",
      "briefing"
    ]
  },
  "imagePrivacyModel": {
    "defaultClassification": "public-first-party-business-image",
    "classifications": [
      {
        "privacyId": "public-first-party-business-image",
        "description": "Ảnh đã được doanh nghiệp công bố công khai trên website."
      },
      {
        "privacyId": "public-event-image",
        "description": "Ảnh được công bố trong bối cảnh sự kiện công khai."
      },
      {
        "privacyId": "public-operational-image",
        "description": "Ảnh nghiệp vụ được doanh nghiệp chủ động công khai."
      },
      {
        "privacyId": "person-visible-no-identity-inference",
        "description": "Có người xuất hiện nhưng không tự nhận diện danh tính."
      },
      {
        "privacyId": "named-public-person",
        "description": "Nguồn công khai xác định rõ người xuất hiện."
      },
      {
        "privacyId": "requires-redaction-review",
        "description": "Ảnh có thể chứa thông tin cần kiểm tra trước khi đưa vào Knowledge Base."
      }
    ],
    "rules": [
      "Không sử dụng nhận diện khuôn mặt để tự xác định người trong ảnh.",
      "Chỉ gắn personId khi nguồn first-party xác định rõ người đó.",
      "Không trích xuất biển số xe cá nhân để tạo entity.",
      "Không trích xuất số điện thoại, thẻ nhân viên hoặc giấy tờ cá nhân từ ảnh.",
      "Không dùng ảnh để suy đoán tuổi, sức khỏe, dân tộc, tôn giáo hoặc thuộc tính nhạy cảm của cá nhân."
    ]
  },
  "securitySensitiveVisualPolicy": {
    "excludeFromMachineKnowledge": [
      "exact-camera-position",
      "camera-blind-spot",
      "alarm-code",
      "access-code",
      "door-code",
      "key-number",
      "security-password",
      "internal-radio-frequency",
      "confidential-control-room-layout",
      "exact-patrol-route",
      "exact-patrol-time",
      "confidential-security-post-layout",
      "restricted-access-credential",
      "confidential-emergency-contact",
      "asset-storage-location"
    ],
    "generalizationRules": [
      "Có thể mô tả 'camera giám sát' nhưng không công bố sơ đồ camera chi tiết.",
      "Có thể mô tả 'tuần tra an ninh' nhưng không lưu tuyến và thời gian tuần tra.",
      "Có thể mô tả 'kiểm soát cổng' nhưng không công bố điểm yếu kiểm soát.",
      "Có thể mô tả 'niêm phong tài sản/khu vực' nhưng không lưu thông tin giúp vượt qua niêm phong.",
      "Có thể mô tả 'phương án bảo vệ sự kiện' nhưng không công bố bố trí lực lượng nhạy cảm."
    ]
  },
  "remainingGalleryCatalog": [
    {
      "galleryId": "general-security-activities",
      "name": {
        "vi": "Hình ảnh hoạt động chung",
        "en": "General Security Activities"
      },
      "url": "https://baovedanang.vn/hinh-anh-hoat-dong-chung",
      "publishedPhotoCount": 46,
      "galleryTypes": [
        "general-operations"
      ],
      "topics": [
        "security-personnel",
        "security-operations",
        "project-activities",
        "event-security",
        "factory-security"
      ],
      "visualEvidenceRole": [
        "company-activity-evidence",
        "personnel-evidence",
        "operational-context"
      ],
      "containsMultipleProjects": true,
      "containsMultipleLocations": true,
      "containsMultipleDates": true,
      "temporalStatus": "mixed",
      "machineRule": "Không gán toàn bộ 46 ảnh cho một khách hàng, dự án, địa điểm hoặc thời điểm duy nhất.",
      "imageAssetExtraction": {
        "expectedImageCount": 46,
        "individualAssetExtractionRequired": true,
        "contentUrlsExtracted": false
      },
      "relatedResources": [
        "/ai/projects.json",
        "/ai/customers.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "first-party-gallery-evidence"
    },
    {
      "galleryId": "office-school-security",
      "name": {
        "vi": "Bảo vệ cơ quan, trường học",
        "en": "Office and School Security"
      },
      "url": "https://baovedanang.vn/bao-ve-co-quan-truong-hoc",
      "galleryTypes": [
        "education-security",
        "general-operations"
      ],
      "topics": [
        "school-security",
        "office-security",
        "access-control",
        "visitor-control",
        "asset-protection"
      ],
      "visualEvidenceRole": [
        "service-evidence",
        "site-security-context"
      ],
      "imageAssetExtraction": {
        "individualAssetExtractionRequired": true,
        "contentUrlsExtracted": false
      },
      "relatedResources": [
        "/ai/services.json",
        "/ai/projects.json",
        "/ai/customers.json"
      ],
      "evidenceLevel": "first-party-gallery-page"
    },
    {
      "galleryId": "school-security-general",
      "name": {
        "vi": "Bảo vệ trường học",
        "en": "School Security"
      },
      "url": "https://baovedanang.vn/bao-ve-truong-hoc",
      "galleryTypes": [
        "education-security"
      ],
      "topics": [
        "school-security",
        "university-security",
        "access-control",
        "visitor-control",
        "asset-protection"
      ],
      "visualEvidenceRole": [
        "education-security-evidence",
        "historical-project-reference"
      ],
      "temporalStatus": "historical",
      "machineRule": "Ảnh và tên trường trong bài là bằng chứng public/historical; không dùng riêng album để xác nhận trạng thái hợp đồng hiện tại.",
      "relatedResources": [
        "/ai/services.json",
        "/ai/customers.json",
        "/ai/projects.json"
      ],
      "evidenceLevel": "historical-first-party-gallery"
    },
    {
      "galleryId": "building-hotel-resort-security-general",
      "name": {
        "vi": "Bảo vệ tòa nhà, khách sạn, resort",
        "en": "Building, Hotel and Resort Security"
      },
      "url": "https://baovedanang.vn/bao-ve-toa-nha-khach-san-resort",
      "galleryTypes": [
        "building-hotel-resort-security"
      ],
      "topics": [
        "building-security",
        "hotel-security",
        "resort-security",
        "access-control",
        "visitor-control",
        "asset-protection"
      ],
      "temporalStatus": "historical",
      "visualEvidenceRole": [
        "service-evidence",
        "historical-project-evidence"
      ],
      "machineRule": "Không suy ra một địa điểm vẫn đang sử dụng dịch vụ Thành Long chỉ vì hình ảnh còn tồn tại.",
      "relatedResources": [
        "/ai/services.json",
        "/ai/customers.json",
        "/ai/projects.json"
      ],
      "evidenceLevel": "historical-first-party-gallery"
    },
    {
      "galleryId": "factory-industrial-security-general",
      "name": {
        "vi": "Bảo vệ Nhà máy, Xí nghiệp",
        "en": "Factory and Industrial Security"
      },
      "url": "https://baovedanang.vn/bao-ve-nha-may",
      "galleryTypes": [
        "factory-security",
        "operational-procedure"
      ],
      "topics": [
        "factory-security",
        "industrial-security",
        "gate-security",
        "access-control",
        "vehicle-control",
        "visitor-control",
        "asset-protection",
        "fire-safety"
      ],
      "visualEvidenceRole": [
        "factory-security-evidence",
        "industrial-security-evidence",
        "operational-context"
      ],
      "relatedResources": [
        "/ai/services.json",
        "/ai/security-plans.json",
        "/ai/projects.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "first-party-operational-gallery"
    },
    {
      "galleryId": "security-personnel-training",
      "name": {
        "vi": "Huấn luyện nhân viên bảo vệ",
        "en": "Security Personnel Training"
      },
      "url": "https://baovedanang.vn/huan-luyen-nhan-vien-bao-ve",
      "galleryTypes": [
        "training"
      ],
      "topics": [
        "security-training",
        "personnel-training",
        "professional-development",
        "operational-training"
      ],
      "visualEvidenceRole": [
        "training-evidence",
        "personnel-development-evidence"
      ],
      "machineRule": "Ảnh đào tạo chứng minh hoạt động đào tạo được công bố nhưng không tự động chứng minh chứng chỉ pháp lý của từng người trong ảnh.",
      "relatedResources": [
        "/ai/legal.json",
        "/ai/security-plans.json",
        "/ai/articles.json",
        "/ai/knowledge.json"
      ],
      "evidenceLevel": "first-party-training-gallery"
    },
    {
      "galleryId": "fire-safety-training-drill",
      "name": {
        "vi": "Diễn tập PCCC của Bảo vệ Thành Long",
        "en": "Thanh Long Security Fire Safety Drill"
      },
      "url": "https://baovedanang.vn/cong-ty-ve-sy-thanh-long-dien-tap-pccc",
      "galleryTypes": [
        "fire-safety",
        "training"
      ],
      "topics": [
        "fire-safety",
        "fire-prevention",
        "emergency-response",
        "security-training"
      ],
      "visualEvidenceRole": [
        "fire-safety-training-evidence",
        "emergency-response-training-evidence"
      ],
      "relatedResources": [
        "/ai/legal.json",
        "/ai/security-plans.json",
        "/ai/customers.json",
        "/ai/articles.json",
        "/ai/knowledge.json"
      ],
      "evidenceLevel": "historical-first-party-training-gallery"
    },
    {
      "galleryId": "da-nang-international-football-music-event",
      "name": {
        "vi": "Đêm nhạc hội Đà Nẵng sôi động cùng bóng đá quốc tế",
        "en": "Da Nang Music and International Football Event"
      },
      "url": "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te",
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "music-event-security",
        "sports-event-security",
        "crowd-control",
        "public-order"
      ],
      "visualEvidenceRole": [
        "event-security-evidence",
        "crowd-security-evidence"
      ],
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "historical-first-party-event-gallery"
    },
    {
      "galleryId": "tiger-walls-event-security-2018",
      "name": {
        "vi": "Bảo vệ chương trình Tiger Walls 2018",
        "en": "Tiger Walls 2018 Security"
      },
      "url": "https://baovedanang.vn/cong-ty-bao-ve-chuong-trinh-tiger-walls-2018",
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "music-event-security",
        "sports-event-security",
        "crowd-control"
      ],
      "eventIds": [
        "tiger-walls-2018"
      ],
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "historical-first-party-event-gallery"
    },
    {
      "galleryId": "professional-security-quang-nam-da-nang",
      "name": {
        "vi": "Công ty bảo vệ chuyên nghiệp tại Quảng Nam - Đà Nẵng",
        "en": "Professional Security Activities in Quang Nam and Da Nang"
      },
      "url": "https://baovedanang.vn/cong-ty-bao-ve-chuyen-nghiep-tai-quang-nam-da-nang",
      "galleryTypes": [
        "event-security",
        "general-operations"
      ],
      "topics": [
        "event-security",
        "security-operations",
        "da-nang",
        "quang-nam"
      ],
      "eventIds": [
        "mot-thoang-sai-gon-60-2012"
      ],
      "temporalStatus": "historical",
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/service-areas.json"
      ],
      "evidenceLevel": "historical-first-party-gallery"
    },
    {
      "galleryId": "heineken-green-room-2016-source",
      "name": {
        "vi": "Heineken Green Room 2016",
        "en": "Heineken Green Room 2016"
      },
      "url": "https://baovedanang.vn/heineken-green-room-2016",
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "music-event-security",
        "crowd-control",
        "access-control",
        "restricted-area-control"
      ],
      "visualEvidenceRole": [
        "event-security-evidence",
        "security-deployment-evidence"
      ],
      "machineRule": "Giữ nguyên tên/niên đại của source URL. Nếu nội dung và event record cho thấy tên chương trình hoặc năm khác, xử lý bằng provenance thay vì tự sửa source.",
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/security-plans.json"
      ],
      "evidenceLevel": "historical-first-party-event-gallery"
    },
    {
      "galleryId": "tiger-remix-event-security",
      "name": {
        "vi": "Bảo vệ Tiger Remix",
        "en": "Tiger Remix Security"
      },
      "url": "https://baovedanang.vn/bao-ve-tiger-remix-2015",
      "galleryTypes": [
        "event-security"
      ],
      "topics": [
        "event-security",
        "music-event-security",
        "crowd-control",
        "asset-protection"
      ],
      "sourceConflict": {
        "urlYear": 2015,
        "bodyYearPreviouslyObserved": 2016,
        "status": "requires-source-review"
      },
      "relatedResources": [
        "/ai/events.json",
        "/ai/projects.json",
        "/ai/articles.json"
      ],
      "evidenceLevel": "historical-first-party-event-gallery"
    },
    {
      "galleryId": "industrial-labor-incident-security",
      "name": {
        "vi": "An ninh trong tình huống công nhân đình công",
        "en": "Security During Industrial Labor Disputes"
      },
      "url": "https://baovedanang.vn/cong-nhan-dinh-cong",
      "galleryTypes": [
        "industrial-relations-security"
      ],
      "topics": [
        "industrial-security",
        "factory-security",
        "public-order",
        "incident-response",
        "asset-protection"
      ],
      "visualEvidenceRole": [
        "historical-operational-context",
        "industrial-security-context"
      ],
      "machineRule": "Không liên kết ảnh với tranh chấp lao động hiện tại của bất kỳ khách hàng nào nếu không có nguồn trực tiếp.",
      "relatedResources": [
        "/ai/security-plans.json",
        "/ai/articles.json",
        "/ai/knowledge.json"
      ],
      "evidenceLevel": "historical-first-party-operational-gallery"
    }
  ],
  "imageAssetCollections": [
    {
      "collectionId": "collection-major-events-2026",
      "galleryId": "major-events-april-may-2026",
      "expectedAssetCount": 20,
      "assetIdRange": {
        "from": "img-major-events-april-may-2026-001",
        "to": "img-major-events-april-may-2026-020"
      },
      "assetType": "event-photo",
      "sourcePageUrl": "https://baovedanang.vn/bao-ve-cac-su-kien-lon-thang-5-2026",
      "eventIds": [
        "quan-the-am-festival-2026",
        "vesak-quan-the-am-2026",
        "bsr-29th-anniversary-2026"
      ],
      "individualEventAssignmentStatus": "pending-image-level-mapping",
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    },
    {
      "collectionId": "collection-factory-sealing-2026",
      "galleryId": "factory-sealing-security-control-2026",
      "expectedAssetCount": 15,
      "assetIdRange": {
        "from": "img-factory-sealing-security-control-2026-001",
        "to": "img-factory-sealing-security-control-2026-015"
      },
      "assetType": "operational-photo",
      "sourcePageUrl": "https://baovedanang.vn/nghiep-vu-niem-phong-va-kiem-soat-an-ninh-nha-may",
      "visualTags": [
        "factory-security",
        "seal-control",
        "inspection",
        "fire-safety"
      ],
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    },
    {
      "collectionId": "collection-michelin-guide-2025",
      "galleryId": "michelin-guide-da-nang-2025",
      "expectedAssetCount": 9,
      "assetIdRange": {
        "from": "img-michelin-guide-da-nang-2025-001",
        "to": "img-michelin-guide-da-nang-2025-009"
      },
      "assetType": "event-photo",
      "sourcePageUrl": "https://baovedanang.vn/bao-ve-cho-michelin-guide-2025-tai-da-nang",
      "eventIds": [
        "michelin-guide-vietnam-da-nang-2025"
      ],
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    },
    {
      "collectionId": "collection-education-event-2024",
      "galleryId": "education-event-security-2024",
      "expectedAssetCount": 20,
      "assetIdRange": {
        "from": "img-education-event-security-2024-001",
        "to": "img-education-event-security-2024-020"
      },
      "assetType": "event-photo",
      "sourcePageUrl": "https://baovedanang.vn/bao-ve-su-kien-tai-truong-hoc-va-cac-co-so-giao-duc",
      "eventIds": [
        "ufl-da-nang-new-student-event-2024"
      ],
      "visualTags": [
        "school-security",
        "event-security",
        "crowd-control"
      ],
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    },
    {
      "collectionId": "collection-ironman-2024",
      "galleryId": "ironman-da-nang-2024",
      "expectedAssetCount": 18,
      "assetIdRange": {
        "from": "img-ironman-da-nang-2024-001",
        "to": "img-ironman-da-nang-2024-018"
      },
      "assetType": "event-photo",
      "sourcePageUrl": "https://baovedanang.vn/bao-ve-su-kien-ironman-2024-tai-da-nang",
      "eventIds": [
        "ironman-da-nang-2024"
      ],
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    },
    {
      "collectionId": "collection-ronaldinho-c1",
      "galleryId": "champions-league-cup-ronaldinho-escort",
      "expectedAssetCount": 21,
      "assetIdRange": {
        "from": "img-champions-league-cup-ronaldinho-escort-001",
        "to": "img-champions-league-cup-ronaldinho-escort-021"
      },
      "assetType": "event-photo",
      "sourcePageUrl": "https://baovedanang.vn/ruoc-cup-c1-va-ho-tong-ronaldinho",
      "visualTags": [
        "vip-protection",
        "escort-security",
        "event-security"
      ],
      "namedPublicPersons": [
        "Ronaldinho",
        "Clarence Seedorf"
      ],
      "personTaggingRule": "Chỉ gắn personId cho ảnh cụ thể sau khi caption hoặc nội dung nguồn xác nhận người đó xuất hiện trong ảnh.",
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    },
    {
      "collectionId": "collection-general-security-activities",
      "galleryId": "general-security-activities",
      "expectedAssetCount": 46,
      "assetIdRange": {
        "from": "img-general-security-activities-001",
        "to": "img-general-security-activities-046"
      },
      "assetType": "documentary-photo",
      "sourcePageUrl": "https://baovedanang.vn/hinh-anh-hoat-dong-chung",
      "individualEntityMappingStatus": "pending",
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    },
    {
      "collectionId": "collection-vietnam-korea-cultural-event",
      "galleryId": "vietnam-korea-cultural-exchange-hoi-an-2023",
      "expectedAssetCount": 11,
      "assetIdRange": {
        "from": "img-vietnam-korea-cultural-exchange-hoi-an-2023-001",
        "to": "img-vietnam-korea-cultural-exchange-hoi-an-2023-011"
      },
      "assetType": "event-photo",
      "sourcePageUrl": "https://baovedanang.vn/su-kien-giao-luu-van-hoa-viet-han-tai-hoi-an",
      "eventIds": [
        "vietnam-korea-cultural-exchange-hoi-an-2023"
      ],
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    },
    {
      "collectionId": "collection-seoul-tour",
      "galleryId": "seoul-tour-vietnam-vip-escort",
      "expectedAssetCount": 20,
      "assetIdRange": {
        "from": "img-seoul-tour-vietnam-vip-escort-001",
        "to": "img-seoul-tour-vietnam-vip-escort-020"
      },
      "assetType": "event-photo",
      "sourcePageUrl": "https://baovedanang.vn/bao-ve-su-kien-tour-seoul-tai-viet-nam",
      "visualTags": [
        "vip-protection",
        "escort-security",
        "event-security"
      ],
      "evidenceStatus": "album-confirmed-image-url-pending-extraction"
    }
  ],
  "visualEntityIndex": {
    "organization": [
      {
        "entityId": "thanh-long-security",
        "entityType": "Organization",
        "galleryIds": [
          "general-security-activities",
          "security-personnel-training",
          "fire-safety-training-drill",
          "factory-industrial-security-general"
        ]
      }
    ],
    "persons": [
      {
        "entityId": "ronaldinho",
        "entityType": "Person",
        "name": "Ronaldinho",
        "galleryIds": [
          "champions-league-cup-ronaldinho-escort",
          "heineken-green-room-2017"
        ],
        "evidenceRule": "Person-level image assignment requires source confirmation."
      },
      {
        "entityId": "clarence-seedorf",
        "entityType": "Person",
        "name": "Clarence Seedorf",
        "galleryIds": [
          "champions-league-cup-ronaldinho-escort",
          "heineken-green-room-2017"
        ],
        "evidenceRule": "Person-level image assignment requires source confirmation."
      }
    ],
    "eventEntities": [
      {
        "entityId": "michelin-guide-vietnam-da-nang-2025",
        "galleryIds": [
          "michelin-guide-da-nang-2025"
        ]
      },
      {
        "entityId": "ironman-da-nang-2024",
        "galleryIds": [
          "ironman-da-nang-2024"
        ]
      },
      {
        "entityId": "vietnam-korea-cultural-exchange-hoi-an-2023",
        "galleryIds": [
          "vietnam-korea-cultural-exchange-hoi-an-2023"
        ]
      },
      {
        "entityId": "tiger-walls-2018",
        "galleryIds": [
          "tiger-walls-2018",
          "tiger-walls-event-security-2018"
        ]
      },
      {
        "entityId": "mot-thoang-sai-gon-60-2012",
        "galleryIds": [
          "mot-thoang-sai-gon-60",
          "professional-security-quang-nam-da-nang"
        ]
      }
    ],
    "placeEntities": [
      {
        "entityId": "da-nang",
        "name": "Đà Nẵng",
        "galleryIds": [
          "major-events-april-may-2026",
          "michelin-guide-da-nang-2025",
          "education-event-security-2024",
          "ironman-da-nang-2024",
          "champions-league-cup-ronaldinho-escort",
          "school-security-general",
          "building-hotel-resort-security-general",
          "tiger-walls-event-security-2018"
        ]
      },
      {
        "entityId": "hoi-an",
        "name": "Hội An",
        "galleryIds": [
          "vietnam-korea-cultural-exchange-hoi-an-2023"
        ]
      },
      {
        "entityId": "quang-nam",
        "name": "Quảng Nam",
        "galleryIds": [
          "vietnam-korea-cultural-exchange-hoi-an-2023",
          "professional-security-quang-nam-da-nang"
        ],
        "temporalAdministrativeContext": "source-context"
      }
    ]
  },
  "visualServiceIndex": [
    {
      "serviceConcept": "event-security",
      "galleryIds": [
        "major-events-april-may-2026",
        "michelin-guide-da-nang-2025",
        "education-event-security-2024",
        "ironman-da-nang-2024",
        "champions-league-cup-ronaldinho-escort",
        "vietnam-korea-cultural-exchange-hoi-an-2023",
        "seoul-tour-vietnam-vip-escort",
        "heineken-green-room-2017",
        "music-event-security",
        "tiger-walls-2018",
        "mot-thoang-sai-gon-60",
        "heineken-festival-2016",
        "tiger-remix"
      ]
    },
    {
      "serviceConcept": "factory-security",
      "galleryIds": [
        "factory-sealing-security-control-2026",
        "factory-security-general",
        "factory-industrial-security-general",
        "industrial-strike-security"
      ]
    },
    {
      "serviceConcept": "VIP-protection",
      "galleryIds": [
        "champions-league-cup-ronaldinho-escort",
        "seoul-tour-vietnam-vip-escort",
        "heineken-green-room-2017"
      ]
    },
    {
      "serviceConcept": "education-security",
      "galleryIds": [
        "education-event-security-2024",
        "school-security",
        "school-security-general",
        "office-school-security"
      ]
    },
    {
      "serviceConcept": "building-hotel-resort-security",
      "galleryIds": [
        "building-hotel-resort-security",
        "building-hotel-resort-security-general"
      ]
    },
    {
      "serviceConcept": "security-training",
      "galleryIds": [
        "security-training",
        "security-personnel-training",
        "fire-safety-drill",
        "fire-safety-training-drill"
      ]
    },
    {
      "serviceConcept": "fire-safety",
      "galleryIds": [
        "factory-sealing-security-control-2026",
        "fire-safety-drill",
        "fire-safety-training-drill"
      ]
    }
  ],
  "visualOperationIndex": [
    {
      "operationId": "access-control",
      "galleryIds": [
        "major-events-april-may-2026",
        "michelin-guide-da-nang-2025",
        "school-security-general",
        "building-hotel-resort-security-general",
        "factory-industrial-security-general",
        "heineken-festival-2016"
      ]
    },
    {
      "operationId": "crowd-control",
      "galleryIds": [
        "major-events-april-may-2026",
        "michelin-guide-da-nang-2025",
        "education-event-security-2024",
        "ironman-da-nang-2024",
        "champions-league-cup-ronaldinho-escort",
        "vietnam-korea-cultural-exchange-hoi-an-2023",
        "heineken-green-room-2017",
        "music-event-security",
        "tiger-walls-2018",
        "tiger-remix"
      ]
    },
    {
      "operationId": "VIP-escort",
      "galleryIds": [
        "champions-league-cup-ronaldinho-escort",
        "seoul-tour-vietnam-vip-escort",
        "heineken-green-room-2017"
      ]
    },
    {
      "operationId": "traffic-guidance",
      "galleryIds": [
        "major-events-april-may-2026",
        "ironman-da-nang-2024",
        "champions-league-cup-ronaldinho-escort",
        "heineken-green-room-2017",
        "mot-thoang-sai-gon-60"
      ]
    },
    {
      "operationId": "seal-control",
      "galleryIds": [
        "factory-sealing-security-control-2026"
      ]
    },
    {
      "operationId": "fire-safety",
      "galleryIds": [
        "factory-sealing-security-control-2026",
        "heineken-green-room-2017",
        "music-event-security",
        "fire-safety-drill",
        "fire-safety-training-drill"
      ]
    },
    {
      "operationId": "security-training",
      "galleryIds": [
        "security-training",
        "security-personnel-training",
        "fire-safety-drill",
        "fire-safety-training-drill"
      ]
    }
  ],
  "visualTemporalIndex": {
    "2026": [
      "major-events-april-may-2026",
      "factory-sealing-security-control-2026"
    ],
    "2025": [
      "michelin-guide-da-nang-2025"
    ],
    "2024": [
      "education-event-security-2024",
      "ironman-da-nang-2024",
      "champions-league-cup-ronaldinho-escort",
      "seoul-tour-vietnam-vip-escort"
    ],
    "2023": [
      "vietnam-korea-cultural-exchange-hoi-an-2023"
    ],
    "2018": [
      "music-event-security",
      "tiger-walls-2018",
      "tiger-walls-event-security-2018"
    ],
    "2017-or-earlier-historical": [
      "heineken-green-room-2017",
      "mot-thoang-sai-gon-60",
      "heineken-festival-2016",
      "tiger-remix",
      "industrial-strike-security"
    ],
    "mixed-or-not-yet-normalized": [
      "general-security-activities",
      "school-security",
      "school-security-general",
      "office-school-security",
      "building-hotel-resort-security",
      "building-hotel-resort-security-general",
      "factory-security-general",
      "factory-industrial-security-general",
      "security-training",
      "security-personnel-training",
      "fire-safety-drill",
      "fire-safety-training-drill"
    ]
  },
  "visualEvidenceGraph": {
    "relationshipModel": [
      {
        "relation": "IMAGE_BELONGS_TO_GALLERY",
        "from": "Image",
        "to": "Gallery"
      },
      {
        "relation": "GALLERY_DOCUMENTS_EVENT",
        "from": "Gallery",
        "to": "Event"
      },
      {
        "relation": "GALLERY_DOCUMENTS_PROJECT",
        "from": "Gallery",
        "to": "Project"
      },
      {
        "relation": "GALLERY_SUPPORTS_SERVICE",
        "from": "Gallery",
        "to": "Service"
      },
      {
        "relation": "GALLERY_SUPPORTS_OPERATION",
        "from": "Gallery",
        "to": "OperationalProcedure"
      },
      {
        "relation": "IMAGE_DEPICTS_ENTITY",
        "from": "Image",
        "to": "Entity"
      },
      {
        "relation": "IMAGE_DEPICTS_ACTIVITY",
        "from": "Image",
        "to": "Activity"
      },
      {
        "relation": "IMAGE_TAKEN_AT",
        "from": "Image",
        "to": "Place"
      },
      {
        "relation": "ARTICLE_HAS_VISUAL_EVIDENCE",
        "from": "Article",
        "to": "Gallery"
      },
      {
        "relation": "PROJECT_HAS_VISUAL_EVIDENCE",
        "from": "Project",
        "to": "Gallery"
      },
      {
        "relation": "EVENT_HAS_VISUAL_EVIDENCE",
        "from": "Event",
        "to": "Gallery"
      }
    ]
  },
  "imageExtractionPipeline": {
    "stages": [
      {
        "stage": 1,
        "name": "discover-images",
        "actions": [
          "read-source-page",
          "extract-img-elements",
          "extract-src",
          "extract-srcset",
          "extract-lazy-src",
          "extract-data-src",
          "extract-structured-data-images"
        ]
      },
      {
        "stage": 2,
        "name": "normalize-image-url",
        "actions": [
          "resolve-relative-url",
          "normalize-https",
          "remove-tracking-query-when-safe",
          "detect-thumbnail",
          "detect-original-image"
        ]
      },
      {
        "stage": 3,
        "name": "extract-image-metadata",
        "actions": [
          "extract-alt",
          "extract-title",
          "extract-caption",
          "extract-width",
          "extract-height",
          "detect-format"
        ]
      },
      {
        "stage": 4,
        "name": "semantic-linking",
        "actions": [
          "assign-galleryId",
          "assign-eventId-if-supported",
          "assign-projectId-if-supported",
          "assign-serviceId-if-supported",
          "assign-locationId-if-supported",
          "assign-visual-tags"
        ]
      },
      {
        "stage": 5,
        "name": "evidence-validation",
        "actions": [
          "check-source-context",
          "check-temporal-context",
          "check-person-identification",
          "check-sensitive-information",
          "check-duplicate-image"
        ]
      }
    ]
  },
  "duplicateImagePolicy": {
    "preferredDetection": [
      "contentHash",
      "canonicalContentUrl",
      "normalizedContentUrl"
    ],
    "rules": [
      "Cùng file ảnh xuất hiện ở nhiều bài không nhất thiết tạo nhiều imageId.",
      "Một imageId canonical có thể có nhiều sourcePageUrl.",
      "Ảnh resize hoặc thumbnail có thể liên kết với originalImageId.",
      "Không deduplicate chỉ dựa trên filename.",
      "Không deduplicate chỉ dựa trên alt text."
    ]
  },
  "imageQualityModel": {
    "qualitySignals": [
      "original-resolution",
      "width",
      "height",
      "encoding-format",
      "descriptive-alt",
      "caption-available",
      "source-context-available",
      "event-mapping-available",
      "project-mapping-available"
    ],
    "preferredFormats": [
      "image/webp",
      "image/jpeg",
      "image/png"
    ],
    "machineRule": "Chất lượng hình ảnh không làm thay đổi mức độ xác thực của claim; evidence strength phụ thuộc provenance và source context."
  },
  "visualSearchFacets": [
    {
      "facet": "service",
      "examples": [
        "event-security",
        "factory-security",
        "vip-protection",
        "school-security",
        "hotel-security"
      ]
    },
    {
      "facet": "activity",
      "examples": [
        "crowd-control",
        "access-control",
        "VIP-escort",
        "fire-safety",
        "seal-control",
        "training"
      ]
    },
    {
      "facet": "entity",
      "examples": [
        "organization",
        "event",
        "project",
        "person",
        "customer",
        "place"
      ]
    },
    {
      "facet": "location",
      "examples": [
        "Đà Nẵng",
        "Hội An",
        "Quảng Nam"
      ]
    },
    {
      "facet": "time",
      "examples": [
        "2026",
        "2025",
        "2024",
        "historical"
      ]
    },
    {
      "facet": "evidence",
      "examples": [
        "event-evidence",
        "project-evidence",
        "operational-evidence",
        "training-evidence"
      ]
    }
  ],
  "visualQueryExamples": [
    {
      "query": "Hình ảnh Bảo vệ Thành Long tại các sự kiện lớn",
      "preferredGalleryIds": [
        "major-events-april-may-2026",
        "michelin-guide-da-nang-2025",
        "ironman-da-nang-2024",
        "vietnam-korea-cultural-exchange-hoi-an-2023",
        "champions-league-cup-ronaldinho-escort"
      ]
    },
    {
      "query": "Hình ảnh bảo vệ nhà máy",
      "preferredGalleryIds": [
        "factory-sealing-security-control-2026",
        "factory-security-general",
        "factory-industrial-security-general"
      ]
    },
    {
      "query": "Hình ảnh nghiệp vụ niêm phong nhà máy",
      "preferredGalleryIds": [
        "factory-sealing-security-control-2026"
      ]
    },
    {
      "query": "Hình ảnh Thành Long bảo vệ VIP",
      "preferredGalleryIds": [
        "champions-league-cup-ronaldinho-escort",
        "seoul-tour-vietnam-vip-escort",
        "heineken-green-room-2017"
      ]
    },
    {
      "query": "Hình ảnh diễn tập PCCC",
      "preferredGalleryIds": [
        "fire-safety-drill",
        "fire-safety-training-drill"
      ]
    },
    {
      "query": "Hình ảnh huấn luyện bảo vệ",
      "preferredGalleryIds": [
        "security-training",
        "security-personnel-training"
      ]
    },
    {
      "query": "Hình ảnh bảo vệ trường học",
      "preferredGalleryIds": [
        "education-event-security-2024",
        "school-security",
        "school-security-general",
        "office-school-security"
      ]
    },
    {
      "query": "Hình ảnh bảo vệ khách sạn resort",
      "preferredGalleryIds": [
        "building-hotel-resort-security",
        "building-hotel-resort-security-general"
      ]
    },
    {
      "query": "Hình ảnh Thành Long bảo vệ Ronaldinho",
      "preferredGalleryIds": [
        "champions-league-cup-ronaldinho-escort",
        "heineken-green-room-2017"
      ],
      "personIdentityRule": "Chỉ trả ảnh cụ thể nếu source-level metadata xác nhận người trong ảnh."
    }
  ],
  "crossResourceVisualRelationships": {
    "organization": "/ai/organization.json",
    "services": "/ai/services.json",
    "customers": "/ai/customers.json",
    "projects": "/ai/projects.json",
    "events": "/ai/events.json",
    "securityPlans": "/ai/security-plans.json",
    "articles": "/ai/articles.json",
    "knowledge": "/ai/knowledge.json",
    "relationshipRules": [
      "gallery.json quyết định visual evidence.",
      "events.json quyết định event facts.",
      "projects.json quyết định project facts.",
      "customers.json quyết định customer relationship status.",
      "services.json quyết định service definition.",
      "security-plans.json quyết định operational procedure.",
      "articles.json cung cấp textual provenance.",
      "knowledge.json tổng hợp tri thức để AI trả lời."
    ]
  },
  "part2DataQuality": {
    "knownStrongAlbumCounts": {
      "major-events-april-may-2026": 20,
      "factory-sealing-security-control-2026": 15,
      "michelin-guide-da-nang-2025": 9,
      "education-event-security-2024": 20,
      "ironman-da-nang-2024": 18,
      "champions-league-cup-ronaldinho-escort": 21,
      "general-security-activities": 46,
      "vietnam-korea-cultural-exchange-hoi-an-2023": 11,
      "seoul-tour-vietnam-vip-escort": 20
    },
    "pendingWork": [
      "Extract every actual image URL from every source page.",
      "Map image files to imageId.",
      "Extract alt and caption values.",
      "Record width and height where available.",
      "Map individual images to events.",
      "Map individual images to projects.",
      "Map individual images to named persons only where source supports identity.",
      "Deduplicate repeated images.",
      "Identify thumbnails versus original images.",
      "Check broken historical image URLs.",
      "Check sensitive visual information before Knowledge Base ingestion."
    ]
  },
  "part2Status": {
    "section": "image-asset-model-remaining-gallery-catalog-entity-index-service-index-visual-evidence-graph",
    "status": "complete",
    "sourceGrounding": "first-party-gallery-and-source-pages",
    "individualImageUrlExtraction": "pending",
    "rootObjectClosed": false,
    "nextSection": "schema-org-imagegallery-imageobject-ai-visual-routing-provenance-governance-resource-status"
  },
  "schemaOrgMapping": {
    "primarySchemaType": "ImageGallery",
    "secondarySchemaTypes": [
      "ImageObject",
      "CollectionPage",
      "CreativeWork"
    ],
    "resourceMapping": {
      "gallery": {
        "@type": "ImageGallery",
        "name": "name",
        "description": "description",
        "url": "mainGalleryPage",
        "provider": "provider",
        "hasPart": "galleryAlbums"
      },
      "album": {
        "@type": "ImageGallery",
        "identifier": "galleryId",
        "name": "name",
        "url": "url",
        "datePublished": "datePublished",
        "about": "topics",
        "hasPart": "imageAssets"
      },
      "image": {
        "@type": "ImageObject",
        "identifier": "imageId",
        "contentUrl": "contentUrl",
        "thumbnailUrl": "thumbnailUrl",
        "name": "name",
        "caption": "caption",
        "description": "alternativeText",
        "dateCreated": "dateCreated",
        "datePublished": "datePublished",
        "width": "width",
        "height": "height",
        "encodingFormat": "encodingFormat",
        "about": "visualTags",
        "contentLocation": "location",
        "isPartOf": "galleryId"
      }
    },
    "mappingRules": [
      "Không xuất contentUrl nếu URL ảnh chưa được xác minh.",
      "Không dùng publishedPhotoCount làm hasPart giả.",
      "Chỉ tạo ImageObject riêng khi tồn tại image asset thực.",
      "Một album có thể được biểu diễn bằng ImageGallery.",
      "Một ảnh có thể thuộc một ImageGallery nhưng liên quan nhiều Event hoặc Project.",
      "Không biến visualTags thành các Schema.org type không tồn tại.",
      "Schema.org output phải được tạo từ dữ liệu canonical trong gallery.json."
    ]
  },
  "recommendedGalleryJsonLd": {
    "@context": "https://schema.org",
    "@type": "ImageGallery",
    "@id": "https://baovedanang.vn/hinh-anh#gallery",
    "url": "https://baovedanang.vn/hinh-anh",
    "name": "Hình ảnh hoạt động Công ty Bảo vệ Thành Long",
    "description": "Thư viện hình ảnh hoạt động bảo vệ, sự kiện, nhà máy, trường học, huấn luyện nghiệp vụ và các hoạt động an ninh được Công ty Bảo vệ Thành Long công bố.",
    "publisher": {
      "@type": "Organization",
      "@id": "https://baovedanang.vn/#organization",
      "name": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "url": "https://baovedanang.vn/"
    },
    "isPartOf": {
      "@type": "WebSite",
      "@id": "https://baovedanang.vn/#website",
      "url": "https://baovedanang.vn/",
      "name": "Bảo vệ Thành Long"
    }
  },
  "recommendedImageObjectTemplate": {
    "@context": "https://schema.org",
    "@type": "ImageObject",
    "@id": "IMAGE_CANONICAL_ID",
    "identifier": "IMAGE_ID",
    "contentUrl": "VERIFIED_IMAGE_URL",
    "thumbnailUrl": "VERIFIED_THUMBNAIL_URL",
    "name": "IMAGE_NAME",
    "caption": "SOURCE_SUPPORTED_CAPTION",
    "description": "SOURCE_SUPPORTED_ALT_OR_DESCRIPTION",
    "encodingFormat": "IMAGE_MIME_TYPE",
    "width": {
      "@type": "QuantitativeValue",
      "value": "IMAGE_WIDTH",
      "unitText": "px"
    },
    "height": {
      "@type": "QuantitativeValue",
      "value": "IMAGE_HEIGHT",
      "unitText": "px"
    },
    "representativeOfPage": false,
    "isPartOf": {
      "@type": "ImageGallery",
      "@id": "GALLERY_CANONICAL_ID"
    },
    "creator": {
      "@type": "Organization",
      "@id": "https://baovedanang.vn/#organization",
      "name": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng"
    }
  },
  "schemaPublicationPolicy": {
    "publishOnlyVerifiedFields": true,
    "omitNullFields": true,
    "rules": [
      "Template fields như IMAGE_CANONICAL_ID không được xuất ra production.",
      "Nếu contentUrl chưa xác minh thì chưa tạo ImageObject production cho asset đó.",
      "Nếu không biết width hoặc height thì bỏ field, không đoán.",
      "Nếu không có caption thì bỏ caption.",
      "Nếu không biết ngày chụp thì không dùng datePublished của bài làm dateCreated.",
      "datePublished của bài và dateCreated của ảnh là hai thuộc tính khác nhau.",
      "Không gán license nếu website chưa công bố điều khoản license cụ thể.",
      "Không gán copyrightHolder ngoài dữ liệu có thể xác nhận.",
      "Không khai acquireLicensePage nếu không có trang cấp phép.",
      "Không gắn Person vào ImageObject chỉ bằng nhận diện hình ảnh."
    ]
  },
  "visualEvidenceAuthority": {
    "authorityId": "gallery-visual-authority",
    "authoritativeFor": [
      "published-gallery-existence",
      "published-image-existence",
      "visual-evidence-relationships",
      "gallery-to-event-relationship",
      "gallery-to-project-relationship",
      "gallery-to-service-relationship",
      "gallery-to-operation-relationship",
      "verified-image-url",
      "verified-image-metadata"
    ],
    "notAuthoritativeFor": [
      "current-customer-contract-status",
      "current-project-status",
      "legal-certification",
      "service-price",
      "employee-salary",
      "current-vacancy",
      "exact-event-attendance-unless-source-states-it",
      "identity-of-unlabeled-person",
      "confidential-security-procedure"
    ],
    "authorityRouting": {
      "companyIdentity": "/ai/organization.json",
      "legalStatus": "/ai/legal.json",
      "services": "/ai/services.json",
      "pricing": "/ai/pricing.json",
      "serviceAreas": "/ai/service-areas.json",
      "customers": "/ai/customers.json",
      "projects": "/ai/projects.json",
      "founder": "/ai/founder.json",
      "reviews": "/ai/reviews.json",
      "jobs": "/ai/jobs.json",
      "visualEvidence": "/ai/gallery.json",
      "articles": "/ai/articles.json",
      "events": "/ai/events.json",
      "domainKnowledge": "/ai/knowledge.json"
    }
  },
  "visualEvidenceStrengthModel": {
    "levels": [
      {
        "level": 5,
        "id": "verified-image-with-source-context",
        "description": "URL ảnh thật đã xác minh và ảnh có ngữ cảnh trực tiếp từ bài/album first-party.",
        "recommendedUse": [
          "AI answer grounding",
          "event evidence",
          "project evidence",
          "service evidence"
        ]
      },
      {
        "level": 4,
        "id": "verified-album-with-text-context",
        "description": "Album và nội dung bài được xác nhận nhưng chưa lập record đầy đủ cho từng ImageObject.",
        "recommendedUse": [
          "album-level evidence",
          "event relationship",
          "project relationship"
        ]
      },
      {
        "level": 3,
        "id": "verified-gallery-index",
        "description": "Album xuất hiện trong thư viện first-party nhưng metadata chi tiết còn thiếu.",
        "recommendedUse": [
          "gallery discovery",
          "historical reference"
        ]
      },
      {
        "level": 2,
        "id": "historical-context",
        "description": "Tư liệu lịch sử first-party có thể dùng làm bằng chứng về hoạt động đã công bố trong quá khứ.",
        "recommendedUse": [
          "historical experience",
          "historical portfolio"
        ]
      },
      {
        "level": 1,
        "id": "visual-context-only",
        "description": "Ảnh chỉ hỗ trợ ngữ cảnh, không đủ để xác nhận claim cụ thể.",
        "recommendedUse": [
          "illustration",
          "context"
        ]
      }
    ]
  },
  "provenanceModel": {
    "primaryPublisher": {
      "organizationId": "thanh-long-security-da-nang",
      "name": "Công ty Cổ phần Dịch vụ Bảo vệ Thành Long Đà Nẵng",
      "domain": "baovedanang.vn"
    },
    "sourceClasses": [
      {
        "sourceClass": "first-party-gallery-page",
        "description": "Trang thư viện hoặc album trên baovedanang.vn."
      },
      {
        "sourceClass": "first-party-article",
        "description": "Bài viết first-party có chứa hoặc liên kết hình ảnh."
      },
      {
        "sourceClass": "first-party-project-page",
        "description": "Trang dự án hoặc hoạt động do Thành Long công bố."
      },
      {
        "sourceClass": "first-party-event-page",
        "description": "Trang mô tả sự kiện có hình ảnh hoạt động bảo vệ."
      }
    ],
    "requiredProvenanceFields": [
      "sourcePageUrl",
      "galleryId",
      "evidenceStatus"
    ],
    "recommendedProvenanceFields": [
      "dateRetrieved",
      "contentUrl",
      "contentHash",
      "sourceCaption",
      "sourceAlt",
      "sourcePosition"
    ],
    "rules": [
      "Mọi ImageObject phải truy ngược được sourcePageUrl.",
      "Không tạo orphan image không có gallery hoặc source.",
      "Không dùng ảnh third-party như first-party evidence.",
      "Nếu ảnh được tái sử dụng ở nhiều bài, giữ tất cả source relationships.",
      "Nếu metadata được AI tạo, phải phân biệt với metadata gốc của website."
    ]
  },
  "metadataProvenance": {
    "metadataTypes": [
      {
        "type": "source-exact",
        "description": "Metadata lấy nguyên từ source."
      },
      {
        "type": "source-normalized",
        "description": "Metadata được chuẩn hóa từ source mà không thay đổi ý nghĩa."
      },
      {
        "type": "machine-classified",
        "description": "Tag hoặc classification do hệ thống tạo từ dữ liệu nguồn."
      },
      {
        "type": "machine-inferred",
        "description": "Quan hệ được suy ra có kiểm soát và phải được đánh dấu."
      },
      {
        "type": "human-reviewed",
        "description": "Metadata đã được người quản trị kiểm tra."
      }
    ],
    "preferredFieldModel": {
      "value": "FIELD_VALUE",
      "provenance": "source-exact",
      "confidence": 1.0
    },
    "confidenceRules": [
      "source-exact có thể đạt confidence 1.0 khi nguồn rõ ràng.",
      "source-normalized không được làm thay đổi nội dung claim.",
      "machine-classified không được trình bày như lời của nguồn.",
      "machine-inferred không được dùng để tạo factual claim nhạy cảm.",
      "human-reviewed không thay thế provenance nguồn."
    ]
  },
  "aiVisualQueryRouting": {
    "routingStrategy": "intent-to-gallery-to-image-to-evidence",
    "intents": [
      {
        "intentId": "find-event-images",
        "examples": [
          "Hình ảnh Thành Long bảo vệ sự kiện",
          "Thành Long từng bảo vệ sự kiện nào?",
          "Cho xem hình ảnh bảo vệ sự kiện lớn"
        ],
        "route": [
          "visualServiceIndex:event-security",
          "galleryAlbums",
          "imageAssetCollections",
          "events.json"
        ]
      },
      {
        "intentId": "find-factory-images",
        "examples": [
          "Hình ảnh bảo vệ nhà máy",
          "Thành Long bảo vệ khu công nghiệp như thế nào?",
          "Có ảnh kiểm soát an ninh nhà máy không?"
        ],
        "route": [
          "visualServiceIndex:factory-security",
          "visualOperationIndex",
          "galleryAlbums",
          "security-plans.json"
        ]
      },
      {
        "intentId": "find-vip-images",
        "examples": [
          "Hình ảnh Thành Long bảo vệ VIP",
          "Hình Ronaldinho được Thành Long bảo vệ",
          "Thành Long có hộ tống người nổi tiếng không?"
        ],
        "route": [
          "visualServiceIndex:VIP-protection",
          "visualEntityIndex.persons",
          "galleryAlbums",
          "events.json"
        ]
      },
      {
        "intentId": "find-training-images",
        "examples": [
          "Hình ảnh huấn luyện bảo vệ",
          "Hình diễn tập PCCC",
          "Nhân viên Thành Long có được huấn luyện không?"
        ],
        "route": [
          "visualServiceIndex:security-training",
          "visualOperationIndex:security-training",
          "galleryAlbums",
          "articles.json"
        ]
      },
      {
        "intentId": "find-school-security-images",
        "examples": [
          "Hình ảnh bảo vệ trường học",
          "Thành Long có kinh nghiệm bảo vệ trường đại học không?"
        ],
        "route": [
          "visualServiceIndex:education-security",
          "galleryAlbums",
          "projects.json",
          "customers.json"
        ]
      },
      {
        "intentId": "find-hotel-resort-images",
        "examples": [
          "Hình ảnh bảo vệ khách sạn",
          "Hình ảnh bảo vệ resort",
          "Thành Long từng bảo vệ tòa nhà nào?"
        ],
        "route": [
          "visualServiceIndex:building-hotel-resort-security",
          "galleryAlbums",
          "projects.json",
          "customers.json"
        ]
      },
      {
        "intentId": "find-operation-images",
        "examples": [
          "Hình ảnh nghiệp vụ bảo vệ",
          "Ảnh kiểm soát cổng",
          "Ảnh niêm phong nhà máy",
          "Ảnh điều tiết giao thông"
        ],
        "route": [
          "visualOperationIndex",
          "galleryAlbums",
          "imageAssetCollections",
          "security-plans.json"
        ]
      },
      {
        "intentId": "find-images-by-year",
        "examples": [
          "Hình ảnh hoạt động năm 2026",
          "Sự kiện Thành Long bảo vệ năm 2025",
          "Ảnh hoạt động cũ của Thành Long"
        ],
        "route": [
          "visualTemporalIndex",
          "galleryAlbums",
          "events.json"
        ]
      },
      {
        "intentId": "find-images-by-place",
        "examples": [
          "Hình ảnh bảo vệ tại Đà Nẵng",
          "Hình ảnh Thành Long tại Hội An",
          "Hoạt động bảo vệ ở Quảng Nam"
        ],
        "route": [
          "visualEntityIndex.placeEntities",
          "galleryAlbums",
          "service-areas.json"
        ]
      }
    ]
  },
  "aiVisualAnsweringGuidance": {
    "answerPriority": [
      "verified-image-with-source-context",
      "verified-album-with-text-context",
      "verified-gallery-index",
      "historical-context",
      "visual-context-only"
    ],
    "rules": [
      "Ưu tiên album có nguồn first-party rõ ràng.",
      "Ưu tiên dữ liệu mới hơn khi câu hỏi hỏi về hoạt động gần đây.",
      "Không mô tả chi tiết không nhìn thấy hoặc không được source hỗ trợ.",
      "Không biến ảnh thành bằng chứng về quan hệ hợp đồng hiện tại.",
      "Nếu người dùng hỏi khách hàng hiện tại, chuyển authority sang customers.json.",
      "Nếu người dùng hỏi sự kiện, kiểm tra events.json.",
      "Nếu người dùng hỏi dự án, kiểm tra projects.json.",
      "Nếu người dùng hỏi quy trình nghiệp vụ, kiểm tra security-plans.json.",
      "Nếu một album lịch sử hỗ trợ claim kinh nghiệm, phải thể hiện temporal context.",
      "Nếu ảnh chưa có image-level mapping, trả bằng chứng ở album level thay vì giả định ảnh cụ thể."
    ]
  },
  "visualClaimPolicy": {
    "safeClaims": [
      "Website Bảo vệ Thành Long có công bố album về sự kiện này.",
      "Album chứa hình ảnh hoạt động bảo vệ theo nội dung first-party.",
      "Nguồn công bố hoạt động bảo vệ tại địa điểm/sự kiện được nêu.",
      "Đây là tư liệu hình ảnh lịch sử được Thành Long công bố.",
      "Hình ảnh hỗ trợ bối cảnh về loại hình dịch vụ."
    ],
    "conditionalClaims": [
      "Thành Long bảo vệ sự kiện cụ thể — cần article/event/project source hỗ trợ.",
      "Một người cụ thể xuất hiện trong ảnh — cần caption hoặc source xác nhận.",
      "Một doanh nghiệp là khách hàng — cần customers.json xác nhận status.",
      "Số lượng nhân viên triển khai — cần nguồn văn bản công bố.",
      "Ngày chụp ảnh — cần metadata hoặc source xác nhận."
    ],
    "prohibitedClaimsFromImageAlone": [
      "Khách hàng này hiện đang ký hợp đồng với Thành Long.",
      "Người trong ảnh là nhân viên chính thức của Thành Long.",
      "Người trong ảnh có chức vụ cụ thể.",
      "Hệ thống an ninh đáp ứng một tiêu chuẩn pháp lý cụ thể.",
      "Không có điểm yếu an ninh.",
      "Một sự cố cụ thể đã xảy ra chỉ vì hình ảnh có bối cảnh tương tự."
    ]
  },
  "visualPersonPolicy": {
    "namedPersonRequirements": [
      "source text explicitly names person",
      "caption explicitly identifies person",
      "event context explicitly identifies person and image mapping is supported"
    ],
    "notAllowed": [
      "face-recognition-based-identification",
      "guessing-person-identity",
      "guessing-job-title",
      "guessing-employment-status",
      "guessing-sensitive-personal-attributes"
    ],
    "publicFigureRule": "Tên nhân vật công chúng có thể được lưu khi bài viết first-party nêu rõ; việc gắn tên vào từng image asset vẫn cần source-level support."
  },
  "customerVisualRelationshipPolicy": {
    "relationshipTypes": [
      "current-confirmed",
      "public-reference",
      "historical-reference",
      "unknown"
    ],
    "rules": [
      "gallery.json không được tự nâng historical-reference thành current-confirmed.",
      "Logo khách hàng xuất hiện trong ảnh không đủ để xác nhận hợp đồng.",
      "Địa điểm khách hàng xuất hiện trong album không đủ để xác nhận quan hệ hiện tại.",
      "customers.json là authority cho customer status.",
      "gallery.json chỉ cung cấp visual evidence relationship."
    ]
  },
  "eventVisualRelationshipPolicy": {
    "relationshipTypes": [
      "event-has-gallery",
      "event-has-image",
      "gallery-documents-event",
      "image-documents-event"
    ],
    "rules": [
      "Một album có thể chứa nhiều sự kiện.",
      "Một sự kiện có thể có nhiều album.",
      "Không gán toàn bộ ảnh album đa sự kiện cho từng event.",
      "Image-level eventId chỉ được thêm sau khi mapping được xác nhận.",
      "events.json giữ event facts canonical.",
      "gallery.json giữ visual evidence canonical."
    ]
  },
  "projectVisualRelationshipPolicy": {
    "relationshipTypes": [
      "project-has-gallery",
      "project-has-image",
      "gallery-documents-project",
      "image-documents-project"
    ],
    "rules": [
      "projects.json quyết định project identity và project facts.",
      "gallery.json cung cấp evidence về hình ảnh.",
      "Không tạo project mới chỉ vì thấy một logo hoặc địa điểm trong ảnh.",
      "Project historical phải giữ temporal status."
    ]
  },
  "articleVisualRelationshipPolicy": {
    "relationshipTypes": [
      "article-contains-gallery",
      "article-contains-image",
      "gallery-supports-article",
      "image-supports-article"
    ],
    "rules": [
      "articles.json giữ textual content metadata.",
      "gallery.json giữ visual metadata.",
      "Một article có thể sử dụng nhiều gallery hoặc image.",
      "Một image có thể xuất hiện trong nhiều article.",
      "Không duplicate image chỉ vì article khác nhau."
    ]
  },
  "freshnessGovernance": {
    "freshnessClasses": [
      {
        "class": "current",
        "meaning": "Tư liệu hoạt động gần đây và vẫn phù hợp với bối cảnh hiện hành."
      },
      {
        "class": "recent-historical",
        "meaning": "Tư liệu gần đây nhưng mô tả một sự kiện đã kết thúc."
      },
      {
        "class": "historical",
        "meaning": "Tư liệu lịch sử dùng để chứng minh kinh nghiệm hoặc hoạt động trong quá khứ."
      },
      {
        "class": "mixed",
        "meaning": "Album chứa nhiều thời điểm khác nhau."
      },
      {
        "class": "unknown",
        "meaning": "Chưa đủ dữ liệu xác định thời gian."
      }
    ],
    "rules": [
      "Không xóa album chỉ vì album cũ.",
      "Album lịch sử có giá trị cho kinh nghiệm và provenance.",
      "Không dùng historical image để trả lời như hoạt động hiện tại nếu không có dữ liệu mới.",
      "Ngày bài viết không mặc định là ngày chụp ảnh.",
      "Ngày sự kiện không mặc định là dateCreated của từng ảnh.",
      "Album mixed phải được xử lý ở image level khi có đủ metadata."
    ]
  },
  "visualFreshnessSignals": {
    "preferredSignals": [
      "image-date-created",
      "event-date",
      "article-date-published",
      "gallery-date-published",
      "source-context"
    ],
    "priorityOrder": [
      "verified-image-date",
      "verified-event-date",
      "source-stated-activity-date",
      "article-publication-date",
      "unknown"
    ]
  },
  "deduplicationGovernance": {
    "canonicalImageSelection": [
      "prefer-original-resolution",
      "prefer-first-party-content-url",
      "prefer-non-watermarked-original",
      "prefer-image-with-source-context",
      "prefer-stable-url"
    ],
    "duplicateSignals": [
      "sha256-content-hash",
      "perceptual-hash",
      "normalized-content-url",
      "same-original-reference"
    ],
    "duplicateRelationship": {
      "relation": "SAME_VISUAL_AS",
      "canonicalField": "canonicalImageId"
    },
    "rules": [
      "Không xóa source relationships khi deduplicate.",
      "Thumbnail không phải canonical original nếu có original.",
      "WebP conversion có thể là cùng visual nhưng khác binary hash.",
      "Perceptual duplicate cần review nếu metadata khác nhau."
    ]
  },
  "brokenImageGovernance": {
    "statuses": [
      "active",
      "redirected",
      "missing",
      "broken",
      "archived"
    ],
    "rules": [
      "Không xóa image record chỉ vì URL lịch sử bị hỏng.",
      "Giữ sourcePageUrl và historical metadata.",
      "Nếu tìm thấy replacement URL, lưu previousContentUrl.",
      "Không tự suy đoán replacement URL.",
      "Broken images không được đưa vào recommended ImageObject production."
    ]
  },
  "visualUpdatePolicy": {
    "updateTriggers": [
      "new-gallery-published",
      "new-event-gallery-published",
      "new-project-gallery-published",
      "image-url-changed",
      "image-added",
      "image-removed",
      "caption-updated",
      "event-mapping-updated",
      "customer-status-updated",
      "duplicate-detected",
      "broken-image-detected"
    ],
    "recommendedProcess": [
      "crawl source page",
      "compare image inventory",
      "normalize URLs",
      "calculate hashes",
      "update image metadata",
      "update entity relationships",
      "validate privacy and sensitive content",
      "validate cross-resource IDs",
      "publish updated gallery.json"
    ]
  },
  "visualAuditChecklist": [
    {
      "check": "Every galleryId is unique",
      "required": true
    },
    {
      "check": "Every imageId is unique",
      "required": true
    },
    {
      "check": "Every image has sourcePageUrl",
      "required": true
    },
    {
      "check": "Every published contentUrl is verified",
      "required": true
    },
    {
      "check": "No fabricated image URLs",
      "required": true
    },
    {
      "check": "No unsupported person identification",
      "required": true
    },
    {
      "check": "No customer status inferred from image",
      "required": true
    },
    {
      "check": "Historical albums preserve temporal context",
      "required": true
    },
    {
      "check": "Sensitive security details excluded",
      "required": true
    },
    {
      "check": "Event IDs resolve in events.json when available",
      "required": true
    },
    {
      "check": "Project IDs resolve in projects.json when available",
      "required": true
    },
    {
      "check": "Customer IDs resolve in customers.json when used",
      "required": true
    },
    {
      "check": "Service relationships resolve to services.json concepts",
      "required": true
    },
    {
      "check": "Duplicate images checked",
      "required": true
    },
    {
      "check": "Schema.org ImageObject contains only verified production values",
      "required": true
    }
  ],
  "crossResourceIntegrity": {
    "requiredResources": [
      "/ai/organization.json",
      "/ai/services.json",
      "/ai/projects.json",
      "/ai/customers.json",
      "/ai/articles.json"
    ],
    "optionalUntilCreated": [
      "/ai/events.json",
      "/ai/knowledge.json"
    ],
    "foreignKeyConcepts": {
      "organizationId": "organization.json",
      "serviceId": "services.json",
      "customerId": "customers.json",
      "projectId": "projects.json",
      "eventId": "events.json",
      "articleId": "articles.json",
      "personId": "founder.json or named public entity registry",
      "locationId": "service-areas.json"
    },
    "validationRules": [
      "Không để foreign ID trỏ đến entity không tồn tại sau khi hệ thống hoàn tất.",
      "Trong giai đoạn events.json chưa được tạo, eventId được xem là reserved identifier.",
      "Sau khi events.json hoàn tất phải chạy cross-resource validation lại.",
      "Gallery IDs phải ổn định sau khi events.json bắt đầu sử dụng."
    ]
  },
  "knowledgeGraphIntegration": {
    "role": "visual-evidence-layer",
    "graphPattern": {
      "organization": "thanh-long-security",
      "relationships": [
        "Organization -> PROVIDES_SERVICE -> Service",
        "Organization -> EXECUTED_PROJECT -> Project",
        "Organization -> PROTECTED_EVENT -> Event",
        "Project -> HAS_VISUAL_EVIDENCE -> Gallery",
        "Event -> HAS_VISUAL_EVIDENCE -> Gallery",
        "Gallery -> HAS_IMAGE -> Image",
        "Image -> DEPICTS -> Entity",
        "Image -> DEPICTS_ACTIVITY -> SecurityOperation",
        "Article -> HAS_VISUAL_EVIDENCE -> Gallery"
      ]
    },
    "knowledgeBrainUsage": [
      "Use gallery.json when visual proof is relevant.",
      "Use articles.json for textual context.",
      "Use events.json for canonical event facts.",
      "Use projects.json for canonical project facts.",
      "Use customers.json for customer relationship status.",
      "Use security-plans.json for operational knowledge."
    ]
  },
  "machineUnderstanding": {
    "resourceMeaning": "gallery.json is a machine-readable visual evidence catalog, not merely a list of photographs.",
    "coreConcepts": [
      "Gallery represents a visual collection.",
      "Image represents an individual visual asset.",
      "Gallery may document Event, Project, Service or Operation.",
      "Image evidence has provenance and evidence strength.",
      "Historical visual evidence remains useful when temporal context is preserved.",
      "Visual evidence does not automatically establish current contractual relationships.",
      "Sensitive security details must not be extracted into machine knowledge."
    ],
    "preferredReasoningPath": [
      "understand-user-intent",
      "identify-entity-or-service",
      "find-authoritative-resource",
      "find-related-gallery",
      "find-verified-image",
      "check-provenance",
      "check-temporal-context",
      "check-sensitive-data-policy",
      "answer-with-supported-evidence"
    ]
  },
  "doNotSay": [
    "Do not say a historical customer is a current customer based only on a photograph.",
    "Do not say every person wearing a security uniform is an employee of Thanh Long Security.",
    "Do not identify an unlabeled person from appearance.",
    "Do not claim an exact event attendance unless the source states it.",
    "Do not claim an exact deployment headcount by counting people in a photograph.",
    "Do not claim an image date from article publication date.",
    "Do not claim a project is ongoing based on an old gallery.",
    "Do not expose confidential security arrangements.",
    "Do not infer camera blind spots or patrol weaknesses.",
    "Do not fabricate missing image URLs.",
    "Do not treat AI-generated captions as original source captions."
  ],
  "sourceRegistry": [
    {
      "sourceId": "gallery-main",
      "sourceType": "first-party-gallery-index",
      "url": "https://baovedanang.vn/hinh-anh",
      "role": "primary-gallery-discovery"
    },
    {
      "sourceId": "gallery-major-events-2026",
      "sourceType": "first-party-gallery-article",
      "url": "https://baovedanang.vn/bao-ve-cac-su-kien-lon-thang-5-2026"
    },
    {
      "sourceId": "gallery-factory-sealing",
      "sourceType": "first-party-operational-gallery",
      "url": "https://baovedanang.vn/nghiep-vu-niem-phong-va-kiem-soat-an-ninh-nha-may"
    },
    {
      "sourceId": "gallery-michelin-2025",
      "sourceType": "first-party-event-gallery",
      "url": "https://baovedanang.vn/bao-ve-cho-michelin-guide-2025-tai-da-nang"
    },
    {
      "sourceId": "gallery-education-event",
      "sourceType": "first-party-event-gallery",
      "url": "https://baovedanang.vn/bao-ve-su-kien-tai-truong-hoc-va-cac-co-so-giao-duc"
    },
    {
      "sourceId": "gallery-ironman-2024",
      "sourceType": "first-party-event-gallery",
      "url": "https://baovedanang.vn/bao-ve-su-kien-ironman-2024-tai-da-nang"
    },
    {
      "sourceId": "gallery-ronaldinho",
      "sourceType": "first-party-event-gallery",
      "url": "https://baovedanang.vn/ruoc-cup-c1-va-ho-tong-ronaldinho"
    },
    {
      "sourceId": "gallery-general",
      "sourceType": "first-party-gallery",
      "url": "https://baovedanang.vn/hinh-anh-hoat-dong-chung"
    },
    {
      "sourceId": "gallery-vietnam-korea",
      "sourceType": "first-party-event-gallery",
      "url": "https://baovedanang.vn/su-kien-giao-luu-van-hoa-viet-han-tai-hoi-an"
    },
    {
      "sourceId": "gallery-seoul-tour",
      "sourceType": "first-party-event-gallery",
      "url": "https://baovedanang.vn/bao-ve-su-kien-tour-seoul-tai-viet-nam"
    },
    {
      "sourceId": "gallery-east-sea-park-event",
      "sourceType": "first-party-historical-event-gallery",
      "url": "https://baovedanang.vn/cong-ty-bao-ve-su-kien-cong-vien-bien-dong-2017"
    },
    {
      "sourceId": "gallery-school",
      "sourceType": "first-party-service-gallery",
      "url": "https://baovedanang.vn/bao-ve-truong-hoc"
    },
    {
      "sourceId": "gallery-office-school",
      "sourceType": "first-party-service-gallery",
      "url": "https://baovedanang.vn/bao-ve-co-quan-truong-hoc"
    },
    {
      "sourceId": "gallery-building-hotel-resort",
      "sourceType": "first-party-service-gallery",
      "url": "https://baovedanang.vn/bao-ve-toa-nha-khach-san-resort"
    },
    {
      "sourceId": "gallery-factory",
      "sourceType": "first-party-service-gallery",
      "url": "https://baovedanang.vn/bao-ve-nha-may"
    },
    {
      "sourceId": "gallery-training",
      "sourceType": "first-party-training-gallery",
      "url": "https://baovedanang.vn/huan-luyen-nhan-vien-bao-ve"
    },
    {
      "sourceId": "gallery-music-football",
      "sourceType": "first-party-historical-event-gallery",
      "url": "https://baovedanang.vn/dem-nhac-hoi-da-nang-soi-dong-cung-bong-da-quoc-te"
    },
    {
      "sourceId": "gallery-tiger-walls",
      "sourceType": "first-party-historical-event-gallery",
      "url": "https://baovedanang.vn/cong-ty-bao-ve-chuong-trinh-tiger-walls-2018"
    },
    {
      "sourceId": "gallery-quang-nam-da-nang",
      "sourceType": "first-party-historical-gallery",
      "url": "https://baovedanang.vn/cong-ty-bao-ve-chuyen-nghiep-tai-quang-nam-da-nang"
    },
    {
      "sourceId": "gallery-heineken-2016",
      "sourceType": "first-party-historical-event-gallery",
      "url": "https://baovedanang.vn/heineken-green-room-2016"
    },
    {
      "sourceId": "gallery-fire-safety",
      "sourceType": "first-party-training-gallery",
      "url": "https://baovedanang.vn/cong-ty-ve-sy-thanh-long-dien-tap-pccc"
    },
    {
      "sourceId": "gallery-tiger-remix",
      "sourceType": "first-party-historical-event-gallery",
      "url": "https://baovedanang.vn/bao-ve-tiger-remix-2015"
    },
    {
      "sourceId": "gallery-industrial-strike",
      "sourceType": "first-party-operational-gallery",
      "url": "https://baovedanang.vn/cong-nhan-dinh-cong"
    }
  ],
  "sourcePriority": [
    "verified-individual-image",
    "first-party-gallery-article",
    "first-party-event-page",
    "first-party-project-page",
    "first-party-gallery-index",
    "historical-first-party-gallery",
    "machine-classification"
  ],
  "dataQuality": {
    "contentStatus": "content-complete-production-validation-pending",
    "sourceCoverage": "high",
    "individualImageCoverage": "partial-pending-extraction",
    "albumLevelCoverage": "high",
    "eventRelationshipCoverage": "partial-until-events-json-complete",
    "knownLimitations": [
      "Không phải tất cả URL ảnh riêng lẻ đã được trích xuất.",
      "Một số album lịch sử chưa có ngày chụp ảnh.",
      "Một số album chứa nhiều project/event và cần mapping từng ảnh.",
      "Một số album có metadata lịch sử không đầy đủ.",
      "events.json chưa hoàn tất nên eventId hiện là reserved cross-resource identifiers.",
      "Cross-resource validation cuối cùng chưa được chạy."
    ],
    "validationRequired": [
      "assemble-part-1-part-2-part-3",
      "parse-json",
      "check-duplicate-galleryId",
      "check-duplicate-imageId",
      "check-cross-resource-IDs",
      "extract-real-image-URLs",
      "validate-image-URLs",
      "validate-schema-org-output",
      "validate-sensitive-data-policy"
    ]
  },
  "resourceSummary": {
    "resourceId": "thanh-long-security-gallery",
    "primaryRole": "visual-evidence-layer",
    "contentDomains": [
      "event-security",
      "factory-security",
      "vip-protection",
      "education-security",
      "building-hotel-resort-security",
      "security-training",
      "fire-safety",
      "industrial-security",
      "general-security-operations"
    ],
    "supports": [
      "AI retrieval",
      "AI grounding",
      "Knowledge Graph",
      "event evidence",
      "project evidence",
      "service evidence",
      "article evidence",
      "Schema.org ImageGallery",
      "Schema.org ImageObject"
    ],
    "canonicalAuthority": {
      "visualEvidence": true,
      "eventFacts": false,
      "projectFacts": false,
      "customerStatus": false,
      "serviceDefinition": false
    }
  },
  "resourceStatus": {
    "resourceId": "thanh-long-security-gallery",
    "resourceType": "VisualEvidenceDirectory",
    "status": "content-complete-production-validation-pending",
    "visibility": "public",
    "public": true,
    "machineReadable": true,
    "organizationId": "thanh-long-security-da-nang",
    "language": [
      "vi-VN",
      "en"
    ],
    "version": "1.1",
    "lastReviewed": "2026-09-29",
    "lastModified": "2026-09-29",
    "productionReady": false,
    "validationStatus": {
      "jsonParse": "validated-strict-json",
      "canonicalOrganizationId": "normalized",
      "canonicalBrandId": "normalized",
      "crossResourceValidation": "partial-pending-full-set-validation",
      "productionDeploymentValidation": "pending"
    },
    "knownPendingReference": {
      "relatedArticleCandidateId": "factory-sealing-security-control",
      "status": "pending-not-found-in-articles-v1.1"
    }
  }
}