/* ─────────────────────────────────────────────────────────────
   Posts / articles content layer (نوشته‌ها).
   Each post opens a detail page at /posts/:id with cover, rich body
   (paragraphs + charts/figures), comments, and a floating "related"
   sidebar. Mock data — swap for panel/API (GET /api/articles) later.
   ───────────────────────────────────────────────────────────── */

export type PostBlock =
  | { type: 'p'; fa: string; en: string }
  | { type: 'h'; fa: string; en: string }
  | { type: 'chart'; chart: 'pareto' | 'bars' }
  | { type: 'figure'; img: string; fa: string; en: string }

export type CommentTag = { fa: string; en: string }

export type PostComment = {
  id: string
  name: string
  roleFa: string
  roleEn: string
  avatar?: string
  date: string
  tags: CommentTag[]
  fa: string
  en: string
}

export type RelatedPost = {
  id: string
  img: string
  fa: { title: string; excerpt: string; date: string }
  en: { title: string; excerpt: string; date: string }
}

export type Post = {
  id: string
  cover: string
  category: { fa: string; en: string }
  fa: { title: string; author: string; date: string; lead: string }
  en: { title: string; author: string; date: string; lead: string }
  body: PostBlock[]
  comments: PostComment[]
  related: RelatedPost[]
}

const IMG = (n: string) => `/news/${n}`

const REL_EXCERPT_FA = 'گذار به سوخت‌های پاک و کاهش وابستگی به…'
const REL_EXCERPT_EN = 'The shift to clean fuels and reduced dependency…'

const RELATED: RelatedPost[] = [
  { id: 'p2', img: IMG('photo-1504307651254-35680f356dfd.jpg'),
    fa: { title: 'آینده‌ی زیرساخت‌های سوختی در …', excerpt: REL_EXCERPT_FA, date: 'اردیبهشت ۱۴۰۵' },
    en: { title: 'The future of fuel infrastructure …', excerpt: REL_EXCERPT_EN, date: 'May 2026' } },
  { id: 'p3', img: IMG('photo-1581092160607-ee22731c9b4e.jpg'),
    fa: { title: 'آینده‌ی زیرساخت‌های سوختی در …', excerpt: REL_EXCERPT_FA, date: 'اردیبهشت ۱۴۰۵' },
    en: { title: 'The future of fuel infrastructure …', excerpt: REL_EXCERPT_EN, date: 'May 2026' } },
  { id: 'p4', img: IMG('photo-1518770660439-4636190af475.jpg'),
    fa: { title: 'آینده‌ی زیرساخت‌های سوختی در …', excerpt: REL_EXCERPT_FA, date: 'اردیبهشت ۱۴۰۵' },
    en: { title: 'The future of fuel infrastructure …', excerpt: REL_EXCERPT_EN, date: 'May 2026' } },
  { id: 'p5', img: IMG('photo-1611273426858-450d8e3c9fce.jpg'),
    fa: { title: 'آینده‌ی زیرساخت‌های سوختی در …', excerpt: REL_EXCERPT_FA, date: 'اردیبهشت ۱۴۰۵' },
    en: { title: 'The future of fuel infrastructure …', excerpt: REL_EXCERPT_EN, date: 'May 2026' } },
  { id: 'p6', img: IMG('photo-1567789884554-0b844b597180.jpg'),
    fa: { title: 'آینده‌ی زیرساخت‌های سوختی در …', excerpt: REL_EXCERPT_FA, date: 'اردیبهشت ۱۴۰۵' },
    en: { title: 'The future of fuel infrastructure …', excerpt: REL_EXCERPT_EN, date: 'May 2026' } },
  { id: 'p7', img: IMG('photo-1611273426858-450d8e3c9fce.jpg'),
    fa: { title: 'آینده‌ی زیرساخت‌های سوختی در …', excerpt: REL_EXCERPT_FA, date: 'اردیبهشت ۱۴۰۵' },
    en: { title: 'The future of fuel infrastructure …', excerpt: REL_EXCERPT_EN, date: 'May 2026' } },
]

export const POSTS: Post[] = [
  {
    id: 'p1',
    cover: IMG('photo-1581092160607-ee22731c9b4e.jpg'),
    category: { fa: 'بازار و زنجیره فولاد', en: 'Market & Steel Chain' },
    fa: {
      title: 'پایش ماهواره‌ای کربن در صنعت فولاد',
      author: 'دکتر سارا احمدی',
      date: 'اردیبهشت ۱۴۰۵',
      lead: '',
    },
    en: {
      title: 'Satellite Carbon Monitoring in the Steel Industry',
      author: 'Dr. Sara Ahmadi',
      date: 'May 2026',
      lead: '',
    },
    body: [
      { type: 'p',
        fa: 'ابزارهای پایش فضایی، نحوه‌ی ارزیابی زیست‌محیطی صنایع سنگین را به‌صورت بنیادین دگرگون ساخته‌اند. پیش‌تر، سنجش میزان آلایندگی مجتمع‌های متالورژیکی عمدتاً بر تخمین‌های درون‌سازمانی، میانگین‌های ملی و محاسبات تئوریک استوار بود. اکنون، آژانس فضایی ناسا با توسعه و پرتاب ابزارهای پیشرفته تشخیص گازهای گلخانه‌ای، امکان نقشه‌برداری دقیق و نقطه‌ای انتشار متان و دی‌اکسیدکربن را فراهم می‌سازد. این تجهیزات مدرن در مدار زمین، مستر و با اندازه‌گیری دقیق میزان جذب نور خورشید در اتمسفر، اضافه‌ای طبق گازهای مختلف را شناسایی می‌کنند. داده‌های این پایشگرها، وضعیتی کاملاً عینی و مستقل از آمارهای محلی ارائه می‌دهند. این لایه شفافیت اطلاعاتی، نهادهای نظارتی را قادر می‌سازد تا حجم گازهای خروجی از دودکش کارخانجات را بدون اتکا به گزارش‌های زمینی بسنجند.',
        en: 'Space-based monitoring tools have fundamentally transformed environmental assessment of heavy industry.' },
      { type: 'p',
        fa: 'کانون اصلی این پایش‌های ماهواره‌ای، مناطقی با تراکم بالای مجتمع‌های متالورژیکی و قوانین اقلیمی سخت‌گیرانه است. نشریات علمی کوپرنیک در بررسی‌های خود نشان می‌دهند که قاره اروپا هدفی کلیدی برای این ارزیابی‌های اتمسفری محسوب می‌شود. ماهواره‌های نسل جدید با بهره‌گیری از طیف‌سنجی‌های مادون قرمز، توده‌های گاز ناشی از فرآیندهای صنعتی را در مقیاس‌های بسیار کوچک تفکیک می‌کنند. نقشه‌برداری دقیق از موقعیت کارخانه‌های فولاد، بستر لازم برای ایجاد یک پایگاه داده یکپارچه از منابع انتشار را فراهم می‌آورد. این ساختار یکپارچه به ناظران اجازه می‌دهد تا تغییرات غلظت گازها را مستقیماً به دارایی‌های فیزیکی مشخص متصل کنند. موقعیت مکانی این واحدهای صنعتی، چارچوب اصلی پایش فضایی را به روشنی مشخص می‌سازد. در همین راستا، شکل ۱ موقعیت جغرافیایی مجتمع‌های آهن و فولاد مورد بررسی را در کشورهای مختلف اروپایی به تصویر می‌کشد.',
        en: 'The focus of these satellite scans is regions with dense metallurgical clusters and strict climate regulations.' },
      { type: 'chart', chart: 'pareto' },
      { type: 'p',
        fa: 'پیش از توسعه این مأموریت‌های فضایی، مجتمع‌های صنعتی، داده‌های آلایندگی خود را با روش‌های سنتی و ناهمگون به سامانه ثبت انتشار آلاینده‌های اروپا (EPRTR-European Pollutant Release and Transfer Register) ارسال می‌کردند. مستندات علمی نشان می‌دهند که کارخانجات از الزامات فنی یکسانی برای خوداظهاری تبعیت نمی‌کنند. این از واحدها میزان خروجی را مستقیماً اندازه‌گیری می‌کنند و گروهی دیگر بر محاسبات و تخمین‌های مهندسی متکی هستند. این تفاوت‌های روش‌شناختی سبب بروز عدم قطعیت در پایگاه‌های داده اقلیمی کلان شده و امکان مقایسه دقیق عملکرد کارخانه‌ها را سلب می‌نماید. بنابراین دقیق داده‌های تاریخی نیازمند درک قاعده‌مند است. شناسایی این الگوهای ناپایدار در گزارش‌های رسمی، ضرورت عبور از روش‌های سنتی حساب‌رسی را اثبات می‌کند. برای واکاوی این ناهمگونی، شکل ۲ روش‌های مختلف گزارش‌دهی انتشار مونوکسید کربن را در این تأسیسات از سال ۲۰۱۷ تا ۲۰۳۱ میلادی نشان می‌دهد.',
        en: 'Before these space missions, industrial complexes reported their pollution data through inconsistent legacy methods.' },
      { type: 'chart', chart: 'bars' },
    ],
    comments: [
      { id: 'c1', name: 'دکتر احسان محبی', roleFa: 'پژوهشگر ارشد اقتصاد محیط زیست', roleEn: 'Senior environmental economist', date: '۵ روز پیش',
        tags: [{ fa: 'خلأ قانونی', en: 'Legal gap' }, { fa: 'شفافیت داده‌ها', en: 'Data transparency' }],
        fa: 'تحلیل بسیار جامع و عمیقی بود. با ورود پایش‌های ماهواره‌ای ناسا، بالاخره دوران آمارسازی و دستکاری گزارش‌های محیط‌زیستی کارخانه‌ها تمام می‌شود و شرکت‌هایی که واقعاً روی تکنولوژی سبز سرمایه‌گذاری کرده‌اند، برنده می‌گردند.',
        en: 'A very comprehensive analysis. With NASA satellite monitoring, the era of fudged environmental reports is over.' },
      { id: 'c2', name: 'سارا نیک‌نام', roleFa: 'مدیر توسعه پایدار', roleEn: 'Sustainability lead', date: '۵ روز پیش',
        tags: [{ fa: 'چالش دوران گذار', en: 'Transition challenge' }, { fa: 'اقتصاد سبز', en: 'Green economy' }],
        fa: 'مطلب دقیقی بود، اما یک نگرانی بزرگ: الان تو صنعت وجود داره؛ اگه اختلاف آمار دقیق ماهواره با خوداظهاری‌های سال‌های قبل ما خیلی زیاد باشد، آیا قرار بابت گذشته هم جریمه بشیم؟ این چالش حقوقی باید زودتر شفاف بشه.',
        en: 'A precise piece, but one big concern: if satellite data differs sharply from past self-reports, will we be fined retroactively?' },
    ],
    related: RELATED,
  },
]

export function getPost(id: string): Post | undefined {
  return POSTS.find(p => p.id === id) || POSTS[0]
}

const PANEL_API = (import.meta as ImportMeta & { env?: Record<string, string> }).env?.VITE_PANEL_API || ''

/**
 * Replace the static POSTS with articles from the panel.
 * The DB article model is monolingual with a single `body` text blob, so we
 * split it into paragraph blocks; charts/figures/comments exist only in the
 * static mock and are dropped when DB content is present. Falls back to the
 * static list when the panel is offline or has no articles.
 */
export async function bootstrapPosts(): Promise<void> {
  try {
    const res = await fetch(`${PANEL_API}/api/articles`)
    if (!res.ok) return
    const fetched = await res.json()
    if (!Array.isArray(fetched) || fetched.length === 0) return
    POSTS.length = 0
    POSTS.push(...fetched.map((a: Record<string, unknown>) => {
      // drop the KEY_DATA appendix some importers add to the body
      const bodyText = String(a.body ?? '').split('---KEY_DATA---')[0]
      const body: PostBlock[] = bodyText
        .split(/\n{2,}/).map(s => s.trim()).filter(Boolean)
        .map(p => ({ type: 'p' as const, fa: p, en: '' }))
      const title = String(a.title ?? '')
      const author = String(a.author ?? '')
      const date = String(a.publishDate ?? '')
      const lead = String(a.summary ?? '')
      const cat = String(a.category ?? '')
      return {
        id: String(a.id),
        cover: String(a.coverImage ?? '') || IMG('photo-1581092160607-ee22731c9b4e.jpg'),
        category: { fa: cat, en: cat },
        fa: { title, author, date, lead },
        en: { title, author, date, lead },
        body,
        comments: [],
        related: RELATED,
      }
    }))
  } catch { /* panel offline → keep static fallback */ }
}
