// πŸ“ ν•œκ΅­μ–΄ μƒνƒœ ν…”λ ˆλ©”νŠΈλ¦¬ 뢄석기 (korean_telemetry.rs) use std::collections::HashMap; #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)] pub enum PhaseGroup { Excited, // ν₯뢄계 (β–², β–³) Quiescent, // νœ΄μ§€κ³„ (Β·, 빈칸) Inhibited, // μ–΅μ œκ³„ (β–Ό, β–½) } pub struct TelemetryReporter; impl TelemetryReporter { pub fn analyze(phases: &[f32], avg_energy: f32, tick: usize) -> String { let total = phases.len() as f32; let mut excited_count = 0; let mut quiescent_count = 0; let mut inhibited_count = 0; for &val in phases { if val > 0.3 { excited_count += 1; } else if val < -0.3 { inhibited_count += 1; } else { quiescent_count += 1; } } let excited_pct = (excited_count as f32 / total) * 100.0; let quiescent_pct = (quiescent_count as f32 / total) * 100.0; let inhibited_pct = (inhibited_count as f32 / total) * 100.0; let status_summary = if excited_pct > 50.0 { "κ³ μ—λ„ˆμ§€ ν™œμ„± 상전이(Excited Phase) μš°μ„Έ μƒνƒœ" } else if inhibited_pct > 50.0 { "μ•ˆμ •μ  μ–΅μ œ 상전이(Inhibited Phase) 수렴 μƒνƒœ" } else { "κ· ν˜•μ  μ€€μ•ˆμ • νœ΄μ§€(Quiescent Homeostasis) μƒνƒœ" }; format!( "⏱️ [Tick {:02} 뢄석 리포트]\n\ β”œβ”€ μ‹œμŠ€ν…œ μƒνƒœ: {}\n\ β”œβ”€ 평균 계면 μ—λ„ˆμ§€: {:.4}\n\ └─ μœ„μƒ 점유율: ν₯뢄계 {:.1}% | μ–΅μ œκ³„ {:.1}% | νœ΄μ§€κ³„ {:.1}%\n", tick, status_summary, avg_energy, excited_pct, inhibited_pct, quiescent_pct ) } }