Skip to content

Latest commit

 

History

History
317 lines (265 loc) · 19.3 KB

File metadata and controls

317 lines (265 loc) · 19.3 KB

Statistike i Izveštaji

Svrha

Statistike služe za:

  1. Praćenje efikasnosti sistema - Da li responderi reaguju brzo?
  2. Identifikaciju "vrućih tačaka" - Gde se incidenti dešavaju?
  3. Dokumentovanje za institucije - Pritisak na policiju sa podacima
  4. Motivaciju volontera - Vidljiv doprinos

Dashboard - Mesečni pregled

┌─────────────────────────────────────────────────────────────────────────────┐
│  📊 IZVEŠTAJ: Januar 2026                              [PDF] [CSV] [PRINT]  │
│  📍 OŠ Ivan Goran Kovačić, Beograd                                          │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  SUMARNO                                                                    │
│  ═══════════════════════════════════════════════════════════════════════   │
│                                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐        │
│  │     12      │  │     9       │  │     2       │  │     1       │        │
│  │   ALARMA    │  │   REŠENO    │  │   LAŽNIH    │  │  ESKALIRAN  │        │
│  │   ukupno    │  │   uspešno   │  │   alarma    │  │  do nivoa 2 │        │
│  └─────────────┘  └─────────────┘  └─────────────┘  └─────────────┘        │
│                                                                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐                          │
│  │    52 sek   │  │   4 min     │  │     8       │                          │
│  │  PROSEČNO   │  │  PROSEČNO   │  │  AKTIVNIH   │                          │
│  │  do reakcije│  │ do rešenja  │  │ respondera  │                          │
│  └─────────────┘  └─────────────┘  └─────────────┘                          │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Distribucija po vremenu

┌─────────────────────────────────────────────────────────────────────────────┐
│  DISTRIBUCIJA PO VREMENU (kada se incidenti dešavaju)                       │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Alarmi po satu:                                                            │
│                                                                             │
│   5│                              ▓▓                                        │
│   4│                              ▓▓                                        │
│   3│              ▓▓              ▓▓   ▓▓                                   │
│   2│              ▓▓   ▓▓        ▓▓   ▓▓                                   │
│   1│   ▓▓        ▓▓   ▓▓        ▓▓   ▓▓   ▓▓                              │
│   0└──────────────────────────────────────────────────                      │
│      07  08  09  10  11  12  13  14  15  16  17  18                         │
│                                                                             │
│  🔴 KRITIČNO VREME: 14:00 - 15:00 (5 alarma - 42%)                          │
│     Preporuka: Pojačati patrole u ovom periodu                              │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Mapa "vrućih tačaka"

┌─────────────────────────────────────────────────────────────────────────────┐
│  DISTRIBUCIJA PO LOKACIJI                                                   │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌────────────────────────────────────────────────────┐                     │
│  │                                                    │                     │
│  │            🏫                                      │                     │
│  │           ŠKOLA                                    │                     │
│  │              ╲                                     │                     │
│  │               ╲   🔴🔴🔴 (5 alarma)               │                     │
│  │                ╲  "Kod fontane"                    │                     │
│  │                 ╲                                  │                     │
│  │                  ●───────────────                  │                     │
│  │                        │                           │                     │
│  │                  🔴🔴  │                           │                     │
│  │              "Iza škole"│                          │                     │
│  │               (3 alarma)│                          │                     │
│  │                         │  🔴🔴🔴🔴               │                     │
│  │                         │  "Park/prodavnica"       │                     │
│  │                            (4 alarma)              │                     │
│  │                                                    │                     │
│  └────────────────────────────────────────────────────┘                     │
│                                                                             │
│  TOP 3 "VRUĆE TAČKE":                                                       │
│  1. Kod fontane (Vukov spomenik) - 5 alarma (42%)                           │
│  2. Park kod prodavnice - 4 alarma (33%)                                    │
│  3. Iza škole (parking) - 3 alarma (25%)                                    │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Tipovi incidenata

┌─────────────────────────────────────────────────────────────────────────────┐
│  TIPOVI INCIDENATA (na osnovu opisa)                                        │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Praćenje / zastrašivanje     ████████████████████  7 (58%)                 │
│  Pokušaj krađe                ████████              3 (25%)                 │
│  Fizički kontakt / guranje    ████                  1 (8%)                  │
│  Verbalne pretnje             ████                  1 (8%)                  │
│                                                                             │
│  NAPOMENA: Kategorizacija na osnovu opisa u alarmima                        │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Trend analiza

┌─────────────────────────────────────────────────────────────────────────────┐
│  TREND (poslednja 3 meseca)                                                 │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│                                                                             │
│  15│                                                                        │
│    │                                           ●  12                        │
│  10│                              ●  8        /                             │
│    │               ●  5          /           /                              │
│   5│              /             /           /                               │
│    │             /             /           /                                │
│   0└────────────●─────────────●───────────●─────────                        │
│              Nov           Dec          Jan                                 │
│                                                                             │
│  ⚠️ TREND: +50% rast incidenata u poslednja 2 meseca                        │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Efikasnost sistema

┌─────────────────────────────────────────────────────────────────────────────┐
│  EFIKASNOST SISTEMA                                                         │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  Prosečno vreme do reakcije respondera:                                     │
│                                                                             │
│  < 1 min    ████████████████████████████████  9 (75%)  ✅                   │
│  1-2 min    ████████                          2 (17%)  ⚠️                   │
│  > 2 min    ████                              1 (8%)   🔴 (eskaliran)       │
│                                                                             │
│  ─────────────────────────────────────────────────────────────────────      │
│                                                                             │
│  Pokrivenost smenama:                                                       │
│  • Jutarnji slot (07-09): 95% pokrivenost                                   │
│  • Podnevni slot (12-14): 87% pokrivenost                                   │
│  • Popodnevni slot (14-17): 92% pokrivenost  ← Najviše incidenata          │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Zvanični izveštaj za institucije

══════════════════════════════════════════════════════════════════════════════
IZVEŠTAJ O BEZBEDNOSNOJ SITUACIJI U OKOLINI
OŠ "IVAN GORAN KOVAČIĆ", BEOGRAD
Period: Januar 2026
══════════════════════════════════════════════════════════════════════════════

1. UVOD
──────
Ovaj izveštaj je generisan od strane aplikacije "Patrola" koju koristi
grupa roditelja OŠ "Ivan Goran Kovačić" za koordinaciju volonterskog
nadzora bezbednosti dece u okolini škole.

2. KLJUČNI PODACI
─────────────────
• Broj prijavljenih incidenata: 12
• Broj uspešno rešenih situacija: 9 (75%)
• Broj eskaliranih situacija: 1 (8%)
• Prosečno vreme reakcije volontera: 52 sekunde

3. LOKACIJE SA NAJVIŠE INCIDENATA
──────────────────────────────────
1) Okolina Vukovog spomenika / fontana
   Koordinate: 44.8125, 20.4612
   Broj incidenata: 5 (42%)

2) Park kod prodavnice "XYZ", ul. Njegoševa
   Koordinate: 44.8118, 20.4598
   Broj incidenata: 4 (33%)

4. VREMENSKI OKVIR INCIDENATA
─────────────────────────────
Kritičan period: 14:00 - 16:00 (završetak nastave)
72% svih incidenata dešava se u ovom vremenskom okviru.

5. OPIS TIPIČNOG INCIDENTA
──────────────────────────
Grupa od 4-6 maloletnika (procenjena starost 14-18) presreće učenike
na putu od škole do kuće. Incidenti uključuju praćenje, verbalne pretnje
i pokušaje krađe (telefoni, novac).

6. PREPORUKE
────────────
Na osnovu prikupljenih podataka, predlažemo:
• Pojačano prisustvo policije u periodu 14:00-16:00
• Fokus na lokaciju kod Vukovog spomenika
• Identifikacija i rad sa grupom maloletnih počinilaca

7. KONTAKT
─────────
Za dodatne informacije:
• Admin grupe: [ime], [telefon]
• Email: [email]

══════════════════════════════════════════════════════════════════════════════
Generisano: 19.01.2025. putem aplikacije Patrola (patrola.rs)
Ovaj izveštaj NE sadrži lične podatke dece.
══════════════════════════════════════════════════════════════════════════════

Export opcije

Format Sadržaj Namena
PDF Formatirani izveštaj Za policiju, školu, medije
CSV Sirovi podaci Za analizu u Excel-u
JSON Strukturirani podaci Za integraciju

Convex implementacija

// convex/stats.ts

export const getMonthlyStats = query({
  args: {
    group_id: v.id("groups"),
    year: v.number(),
    month: v.number(),
  },
  handler: async (ctx, { group_id, year, month }) => {

    const startOfMonth = new Date(year, month - 1, 1).getTime();
    const endOfMonth = new Date(year, month, 0, 23, 59, 59).getTime();

    // Svi alarmi u mesecu
    const alarms = await ctx.db
      .query("alarms")
      .withIndex("by_group", (q) => q.eq("group_id", group_id))
      .filter((q) =>
        q.and(
          q.gte(q.field("created_at"), startOfMonth),
          q.lte(q.field("created_at"), endOfMonth)
        )
      )
      .collect();

    // Agregacije
    const total = alarms.length;
    const resolved = alarms.filter(a => a.status === "RESOLVED").length;
    const falseAlarms = alarms.filter(a => a.status === "FALSE_ALARM").length;
    const escalated = alarms.filter(a => a.escalated_2_at !== undefined).length;

    // Prosečno vreme reakcije
    const responseTimes = alarms
      .filter(a => a.responded_at && a.created_at)
      .map(a => a.responded_at - a.created_at);

    const avgResponseTime = responseTimes.length > 0
      ? responseTimes.reduce((a, b) => a + b, 0) / responseTimes.length
      : 0;

    // Distribucija po satu
    const byHour: Record<number, number> = {};
    alarms.forEach(a => {
      const hour = new Date(a.created_at).getHours();
      byHour[hour] = (byHour[hour] || 0) + 1;
    });

    // Hotspots
    const hotspots = calculateHotspots(alarms);

    return {
      summary: { total, resolved, falseAlarms, escalated, avgResponseTime },
      byHour,
      hotspots,
      trend: await getThreeMonthTrend(ctx, group_id, year, month),
    };
  },
});

Privatnost

  • Izveštaji NE sadrže lične podatke dece
  • Lokacije su agregirane (ne individualne)
  • Export zahteva ADMIN pristup

Dokument kreiran: Januar 2026