import { MetadataRoute } from 'next';
import { supabase } from '@/lib/supabase';

/**
 * 🛰️ G.E.V. AI : SOVEREIGN_SITEMAP_v4.1.0 [INDUSTRIAL_UNIFICATION]
 * ROLE: UNIFIED DISCOVERY : STATIC, PROGRAMMATIC & PRESS MANIFEST SPLICING
 * UPDATE: Integrated real-time Press Manifest status for autonomous crawler discovery
 */

export const dynamic = 'force-dynamic';
export const revalidate = 43200; 

export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
  const baseUrl = 'https://forfilmmakers.com';

  const staticRoutes = [
    '', '/ai', '/manifest', '/app', '/free-pdf', '/forfilmmakers-oracle', 
    '/CommandCenter', '/about', '/admin-terminal', '/contact', '/intel', 
    '/how-to', '/log', '/laboratory', '/pricing', '/login', '/authorize', 
    '/update-password', '/dnarefinery', '/synthesis-node', '/loglineauditor', 
    '/intelligencecouncil', '/vscoreoracle', '/universalpulse', '/discoveryarchitect', 
    '/discoveryheatmap', '/livehunt', '/franchisepotential', '/aestheticvault', 
    '/brandinjection', '/trailerarchitect', '/stripboardlogistics', '/castingarchitect', 
    '/dossierarchitect', '/scopematrix', '/production-handshake', '/waterfalllogic', 
    '/legalshield', '/forensicaudit', '/riskshield', '/submissionbench', 
    '/reward-orbit', '/legal', '/terms', '/privacy', '/refunds', '/press'
  ];

  const mappedStaticManifest: MetadataRoute.Sitemap = staticRoutes.map((route) => ({
    url: `${baseUrl}${route}`,
    lastModified: new Date(),
    changeFrequency: ['/', '/ai', '/app'].includes(route) ? 'daily' : 'weekly',
    priority: ['/', '/ai', '/app'].includes(route) ? 1.0 : 0.8,
  }));

  try {
    // 1. Fetch Programmatic SEO Buffers
    const { data: seoNodes } = await supabase
      .from('seo_content_buffer')
      .select('industry_category, generated_slug, published_at')
      .eq('is_published', true);

    // 2. Fetch Live Press Manifests
    const { data: pressNodes } = await supabase
      .from('press_manifests')
      .select('id, created_at')
      .eq('status', 'live');

    const mappedDynamicManifest = (seoNodes || []).map((node) => ({
      url: `${baseUrl}/analysis/${node.industry_category.toLowerCase()}/${node.generated_slug}`,
      lastModified: node.published_at ? new Date(node.published_at) : new Date(),
      changeFrequency: 'monthly' as const,
      priority: 0.7,
    }));

    const mappedPressManifest = (pressNodes || []).map((node) => ({
      url: `${baseUrl}/press/${node.id}`,
      lastModified: new Date(node.created_at),
      changeFrequency: 'weekly' as const,
      priority: 0.8,
    }));

    return [...mappedStaticManifest, ...mappedDynamicManifest, ...mappedPressManifest];

  } catch (error) {
    console.error('[SEO_SITEMAP_CRASH] Falling back to static manifest.', error);
    return mappedStaticManifest;
  }
}
