// PATH: /src/app/sitemap.ts
import { MetadataRoute } from 'next';
import { supabase } from '@/lib/supabase';

/**
 * 🛰️ G.E.V. AI : SOVEREIGN_SITEMAP_v4.1.2 [PRODUCTION_STABILIZED]
 * ROLE: UNIFIED DISCOVERY : STATIC, PROGRAMMATIC & PRESS MANIFEST SPLICING
 * STATUS: ISR_ENABLED [NO_FORCE_DYNAMIC]
 * CONSTRAINT: ZERO EM DASHES [ENFORCED]
 */

// ISR: Regenerate sitemap every 12 hours. This is much faster than 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 SEO Buffers with error handling
    const { data: seoNodes, error: seoError } = 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, error: pressError } = await supabase
      .from('press_manifests')
      .select('id, created_at')
      .eq('status', 'live');

    if (seoError || pressError) {
        console.error('[SEO_SITEMAP_FETCH_ERROR]', { seoError, pressError });
    }

    const mappedDynamicManifest: MetadataRoute.Sitemap = (seoNodes || []).map((node) => ({
      // URL Encoding prevents rejection due to illegal characters in slugs
      url: `${baseUrl}/analysis/${encodeURIComponent(node.industry_category.toLowerCase())}/${encodeURIComponent(node.generated_slug)}`,
      lastModified: node.published_at ? new Date(node.published_at) : new Date(),
      changeFrequency: 'monthly',
      priority: 0.7,
    }));

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

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

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