Skip to content

Projekt aplikacji BCSO (Blaine County Sheriff's Office)

Wymagania funkcjonalne

  1. System logowania i autoryzacji:

    • Dostęp tylko dla członków BCSO.
    • Logowanie na podstawie konta tabletu.
    • Przydzielanie uprawnień na podstawie rangi (np. Kadet, Zastępca Szeryfa, Szeryf).
  2. Panel główny:

    • Podsumowanie kluczowych informacji:
      • Aktualne zgłoszenia.
      • Lista poszukiwanych osób w regionie.
      • Statystyki działania (np. liczba zgłoszeń, zatrzymań).
  3. Baza danych lokalnych przestępców:

    • Rejestr przestępców z możliwością:
      • Dodawania nowych wpisów.
      • Aktualizacji danych (np. status poszukiwań).
      • Wyszukiwania po nazwisku, ID lub typie przestępstwa.
  4. System zgłoszeń:

    • Rejestracja zgłoszeń od mieszkańców Blaine County:
      • Lokalizacja zdarzenia.
      • Opis sytuacji.
    • Przypisywanie zgłoszeń do jednostek terenowych.
    • Oznaczanie zgłoszeń jako zakończone.
  5. Raporty z patroli:

    • Rejestracja patroli:
      • Rozpoczęcie i zakończenie zmiany.
      • Opis zdarzeń z patrolu.
      • Informacje o podjętych działaniach.
  6. Powiadomienia:

    • Automatyczne powiadomienia o nowych zgłoszeniach lub aktualizacjach bazy przestępców.
    • Możliwość wysyłania powiadomień do wybranych funkcjonariuszy przez szeryfa.
  7. Historia i statystyki:

    • Przegląd działań BCSO:
      • Liczba zgłoszeń, patroli i zatrzymań.
    • Statystyki indywidualne dla funkcjonariuszy (np. aktywność w ciągu tygodnia).

Architektura aplikacji

Struktura bazy danych

Tabela: tablet_BCSOCriminalRecords

PoleTypOpis
idINTKlucz główny
nameVARCHAR(100)Imię i nazwisko
crime_typeVARCHAR(100)Typ przestępstwa
officer_idINTID funkcjonariusza
dateDATETIMEData zdarzenia
statusVARCHAR(50)Status (np. Zatrzymany, Poszukiwany)

Tabela: tablet_BCSOReports

PoleTypOpis
idINTKlucz główny
patrol_idINTID patrolu
report_textTEXTTreść raportu
created_atDATETIMEData utworzenia

Tabela: tablet_BCSOPatrols

PoleTypOpis
idINTKlucz główny
officer_idINTID funkcjonariusza
start_timeDATETIMECzas rozpoczęcia patrolu
end_timeDATETIMECzas zakończenia patrolu
areaVARCHAR(100)Obszar patrolu

Tabela: tablet_BCSOIncidents

PoleTypOpis
idINTKlucz główny
locationVARCHAR(100)Lokalizacja zdarzenia
descriptionTEXTSzczegóły zdarzenia
statusVARCHAR(50)Status (np. W toku, Zakończone)
assigned_toINTID jednostki przypisanej
reported_atDATETIMEData zgłoszenia

Backend w Lua

Przykładowe funkcje serwera:

  1. Dodawanie przestępcy do rejestru:
lua
RegisterServerEvent('bcso:addCriminalRecord')
AddEventHandler('bcso:addCriminalRecord', function(name, crime_type, officer_id, status)
    local query = [[INSERT INTO tablet_BCSOCriminalRecords (name, crime_type, officer_id, date, status) VALUES (?, ?, ?, NOW(), ?)]]
    MySQL.insert.await(query, {name, crime_type, officer_id, status})
end)
  1. Rejestracja patrolu:
lua
RegisterServerEvent('bcso:startPatrol')
AddEventHandler('bcso:startPatrol', function(officer_id, area)
    local query = [[INSERT INTO tablet_BCSOPatrols (officer_id, start_time, area) VALUES (?, NOW(), ?)]]
    MySQL.insert.await(query, {officer_id, area})
end)

RegisterServerEvent('bcso:endPatrol')
AddEventHandler('bcso:endPatrol', function(patrol_id, end_time)
    local query = [[UPDATE tablet_BCSOPatrols SET end_time = NOW() WHERE id = ?]]
    MySQL.update.await(query, {patrol_id})
end)
  1. Dodawanie raportu z patrolu:
lua
RegisterServerEvent('bcso:addReport')
AddEventHandler('bcso:addReport', function(patrol_id, report_text)
    local query = [[INSERT INTO tablet_BCSOReports (patrol_id, report_text, created_at) VALUES (?, ?, NOW())]]
    MySQL.insert.await(query, {patrol_id, report_text})
end)
  1. Przyjmowanie zgłoszenia:
lua
RegisterServerEvent('bcso:acceptIncident')
AddEventHandler('bcso:acceptIncident', function(incident_id, unit_id)
    local query = [[UPDATE tablet_BCSOIncidents SET status = 'W toku', assigned_to = ? WHERE id = ?]]
    MySQL.update.await(query, {unit_id, incident_id})
end)

Frontend (Vue.js)

Widoki:

  1. Panel główny:
    • Statystyki regionalne i aktywne zgłoszenia.
    • Lista poszukiwanych osób.
  2. Baza danych przestępców:
    • Wyszukiwanie i edycja danych.
  3. System zgłoszeń:
    • Podgląd i przypisywanie zgłoszeń do jednostek.
  4. Raporty z patroli:
    • Tworzenie i przegląd raportów z zakończonych patroli.
  5. Historia działań:
    • Przegląd historii działań BCSO i statystyk funkcjonariuszy.

Mechanizmy wymiany danych

  1. Autoryzacja użytkowników:

    • Token JWT przesyłany z każdym zapytaniem do API.
  2. Synchronizacja danych:

    • Dane o zgłoszeniach, przestępcach i patrolach są aktualizowane w czasie rzeczywistym.
  3. Powiadomienia:

    • Automatyczne powiadomienia o nowych zgłoszeniach lub aktualizacjach w bazie danych.