//! 4 sabit ana grup (DATA_MODEL.md §2). Değiştirilemez, silinemez; veritabanında değil kodda. use serde::{Deserialize, Serialize}; use ts_rs::TS; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, TS)] #[serde(rename_all = "lowercase")] #[ts(export)] pub enum Group { /// 🏠 Zorunlu Needs, /// 🛍️ İstek Wants, /// 📚 Kültürel Culture, /// ⚡ Beklenmeyen Unexpected, } impl Group { pub const ALL: [Group; 4] = [ Group::Needs, Group::Wants, Group::Culture, Group::Unexpected, ]; pub fn as_str(self) -> &'static str { match self { Group::Needs => "needs", Group::Wants => "wants", Group::Culture => "culture", Group::Unexpected => "unexpected", } } /// Türkçe ad (CSV dışa/içe aktarma; arayüz metinleri `frontend/src/lib/groups.ts`) pub fn label(self) -> &'static str { match self { Group::Needs => "Zorunlu", Group::Wants => "İstek", Group::Culture => "Kültürel", Group::Unexpected => "Beklenmeyen", } } /// Ekranda gösterim sırası pub fn order(self) -> usize { Self::ALL.iter().position(|g| *g == self).unwrap_or(0) } }