/**
 * DEMO DATA — DEVELOPMENT ONLY.
 *
 * This module exists purely so the UI is reviewable before Phase 6
 * (RSS ingestion) and Phase 2's schema are wired together with a real
 * database. It must never be imported in a code path that could reach
 * production, and every consumer must visibly label it as demo content
 * per spec §34.
 *
 * `getArticleBySlug` / `listArticles` are written as the seam where
 * Phase 6+ swaps in real `prisma.article.findUnique(...)` calls without
 * changing any calling component.
 */
import type { ArticleCardData, ArticleDetailData } from "@/types/article";

const now = Date.now();

export const DEMO_ARTICLES: ArticleDetailData[] = [
  {
    slug: "demo-gold-prices",
    title: "[تجريبي] ارتفاع جديد في أسعار الذهب مع تصاعد التوترات العالمية",
    originalTitle: "[تجريبي] الذهب يسجل ارتفاعاً ملحوظاً وسط ترقب الأسواق",
    summary:
      "ملخص تجريبي: تشير التقارير إلى ارتفاع الأسعار في تعاملات اليوم مقارنة بإغلاق أمس، مع توقعات بمزيد من التذبذب خلال الأسبوع الجاري.",
    category: "economy",
    sourceName: "مصدر تجريبي",
    sourceUrl: "https://example.com/demo/gold-prices",
    publishedAt: new Date(now - 15 * 60_000).toISOString(),
    readingTimeMinutes: 2,
    views: 4210,
    isBreaking: true,
    tags: ["الذهب", "الأسواق", "الاقتصاد العالمي"],
    relatedTopics: ["أسعار العملات", "التضخم"],
    coverage: [
      { sourceName: "[تجريبي] مصدر ب", sourceUrl: "https://example.com/demo/gold-prices-b" },
      { sourceName: "[تجريبي] مصدر ج", sourceUrl: "https://example.com/demo/gold-prices-c" },
    ],
    relatedSlugs: ["demo-ai-chip", "demo-weather-warning"],
  },
  {
    slug: "demo-football-match",
    title: "[تجريبي] نتيجة مباراة مهمة في الدوري",
    originalTitle: "[تجريبي] تفاصيل المباراة المرتقبة بين الفريقين",
    summary: "ملخص تجريبي لأبرز أحداث المباراة وردود فعل الجماهير عقب صافرة النهاية.",
    category: "sports",
    sourceName: "مصدر تجريبي",
    sourceUrl: "https://example.com/demo/football-match",
    publishedAt: new Date(now - 45 * 60_000).toISOString(),
    readingTimeMinutes: 3,
    views: 1876,
    tags: ["كرة القدم", "الدوري"],
    relatedTopics: ["نتائج المباريات"],
    coverage: [],
    relatedSlugs: ["demo-gold-prices"],
  },
  {
    slug: "demo-ai-chip",
    title: "[تجريبي] إطلاق معالج جديد مخصص للذكاء الاصطناعي",
    originalTitle: "[تجريبي] شركة تقنية تكشف عن معالجها الجديد للذكاء الاصطناعي",
    summary: "ملخص تجريبي حول مواصفات المعالج الجديد وتطبيقاته المحتملة في مراكز البيانات.",
    category: "technology",
    sourceName: "مصدر تجريبي",
    sourceUrl: "https://example.com/demo/ai-chip",
    publishedAt: new Date(now - 2 * 3600_000).toISOString(),
    readingTimeMinutes: 4,
    views: 987,
    tags: ["ذكاء اصطناعي", "معالجات", "تقنية"],
    relatedTopics: ["أشباه الموصلات"],
    coverage: [{ sourceName: "[تجريبي] مصدر د", sourceUrl: "https://example.com/demo/ai-chip-d" }],
    relatedSlugs: ["demo-gold-prices", "demo-health-study"],
  },
  {
    slug: "demo-health-study",
    title: "[تجريبي] دراسة جديدة حول فوائد النوم الجيد",
    originalTitle: "[تجريبي] باحثون ينشرون نتائج دراسة حول جودة النوم",
    summary: "ملخص تجريبي لأبرز نتائج الدراسة وتوصيات الباحثين للحفاظ على نوم صحي.",
    category: "health",
    sourceName: "مصدر تجريبي",
    sourceUrl: "https://example.com/demo/health-study",
    publishedAt: new Date(now - 5 * 3600_000).toISOString(),
    readingTimeMinutes: 3,
    views: 654,
    tags: ["الصحة", "النوم", "أبحاث"],
    relatedTopics: [],
    coverage: [],
    relatedSlugs: ["demo-weather-warning"],
  },
  {
    slug: "demo-weather-warning",
    title: "[تجريبي] تحذير من موجة طقس غير مستقرة خلال الأيام المقبلة",
    originalTitle: "[تجريبي] الأرصاد الجوية تصدر تحذيراً من تقلبات جوية",
    summary: "ملخص تجريبي حول توقعات الأرصاد ونصائح للسلامة خلال الأيام القادمة.",
    category: "misc",
    sourceName: "مصدر تجريبي",
    sourceUrl: "https://example.com/demo/weather-warning",
    publishedAt: new Date(now - 8 * 3600_000).toISOString(),
    readingTimeMinutes: 2,
    views: 1203,
    tags: ["طقس", "تحذيرات"],
    relatedTopics: ["الأرصاد الجوية"],
    coverage: [],
    relatedSlugs: ["demo-gold-prices", "demo-football-match"],
  },
];

export function listArticles(): ArticleCardData[] {
  return DEMO_ARTICLES;
}

export function getArticleBySlug(slug: string): ArticleDetailData | undefined {
  return DEMO_ARTICLES.find((a) => a.slug === slug);
}

export function getRelatedArticles(article: ArticleDetailData, limit = 4): ArticleCardData[] {
  const byRelation = article.relatedSlugs
    .map((slug) => DEMO_ARTICLES.find((a) => a.slug === slug))
    .filter((a): a is ArticleDetailData => Boolean(a));

  const byCategory = DEMO_ARTICLES.filter(
    (a) => a.slug !== article.slug && a.category === article.category && !byRelation.includes(a)
  );

  return [...byRelation, ...byCategory].slice(0, limit);
}

export function getMostRead(limit = 5): ArticleCardData[] {
  return [...DEMO_ARTICLES].sort((a, b) => b.views - a.views).slice(0, limit);
}
