#include "fiko/analiz/dfm.hpp" #include namespace fiko::analiz { namespace { // Şiddet sıralama rütbesi (büyük = önce). int rutbe(DfmSiddet s) { switch (s) { case DfmSiddet::Kritik: return 2; case DfmSiddet::Uyari: return 1; case DfmSiddet::Bilgi: return 0; } return 0; } } // namespace DfmRapor dfmRaporla(std::vector bulgular) { DfmRapor r; for (const DfmBulgu& b : bulgular) { switch (b.siddet) { case DfmSiddet::Kritik: ++r.kritikSayisi; break; case DfmSiddet::Uyari: ++r.uyariSayisi; break; case DfmSiddet::Bilgi: ++r.bilgiSayisi; break; } } // Şiddet azalan, kararlı (aynı şiddette girdi sırası korunur). std::stable_sort(bulgular.begin(), bulgular.end(), [](const DfmBulgu& a, const DfmBulgu& b) { return rutbe(a.siddet) > rutbe(b.siddet); }); r.bulgular = std::move(bulgular); int p = 100 - 20 * r.kritikSayisi - 5 * r.uyariSayisi - 1 * r.bilgiSayisi; r.puan = p < 0 ? 0 : p; r.gecti = (r.kritikSayisi == 0); return r; } } // namespace fiko::analiz