# Riau Harmoni — Architecture Plan

## Arsitektur

Portal artikel murni memakai Node.js CommonJS, Express, EJS, MySQL melalui `mysql2/promise`, session login, bcrypt, permission granular, SQL migration, dan worker cron terpisah. Database default adalah `riau_harmoni`.

## Modul

- Portal publik, detail artikel, kategori, wilayah, tag, pencarian, RSS, sitemap dan SEO.
- Login redaksi dan workflow `idea → needs_review → fact_check → approved → published`.
- Artikel, revisi, sumber, keyword, raw news, cluster, fakta, konflik, prompt, AI run, media metadata dan analytics schema.
- Collector RSS/sitemap dengan URL normalization, sanitasi, rate/size/timeout guard dan perlindungan SSRF.
- Provider AI OpenAI/mock, budget limit dan structured response.

## Route

Publik: `/`, `/berita/:slug`, `/kategori/:slug`, `/wilayah/:slug`, `/tag/:slug`, `/cari`, `/rss.xml`, `/sitemap.xml`, `/news-sitemap.xml`, `/robots.txt`. Redaksi: `/login`, `/admin/newsroom`, `/admin/news`, `/admin/sources`, `/admin/keywords`, `/admin/raw-news`, `/admin/categories`, `/admin/regions`, `/admin/tags`, `/admin/ai-runs`.

## Deployment dan rollback

Backup database, jalankan migration 001/002 dan seed 002, install dependency, test, lalu restart. Automation tetap mati sampai sumber diverifikasi. Rollback aman dilakukan melalui feature flag; penghapusan tabel hanya setelah backup dan maintenance window.
