Projekt aplikacji BCSO (Blaine County Sheriff's Office)
Wymagania funkcjonalne
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).
Panel główny:
- Podsumowanie kluczowych informacji:
- Aktualne zgłoszenia.
- Lista poszukiwanych osób w regionie.
- Statystyki działania (np. liczba zgłoszeń, zatrzymań).
- Podsumowanie kluczowych informacji:
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.
- Rejestr przestępców z możliwością:
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.
- Rejestracja zgłoszeń od mieszkańców Blaine County:
Raporty z patroli:
- Rejestracja patroli:
- Rozpoczęcie i zakończenie zmiany.
- Opis zdarzeń z patrolu.
- Informacje o podjętych działaniach.
- Rejestracja patroli:
Powiadomienia:
- Automatyczne powiadomienia o nowych zgłoszeniach lub aktualizacjach bazy przestępców.
- Możliwość wysyłania powiadomień do wybranych funkcjonariuszy przez szeryfa.
Historia i statystyki:
- Przegląd działań BCSO:
- Liczba zgłoszeń, patroli i zatrzymań.
- Statystyki indywidualne dla funkcjonariuszy (np. aktywność w ciągu tygodnia).
- Przegląd działań BCSO:
Architektura aplikacji
Struktura bazy danych
Tabela: tablet_BCSOCriminalRecords
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
name | VARCHAR(100) | Imię i nazwisko |
crime_type | VARCHAR(100) | Typ przestępstwa |
officer_id | INT | ID funkcjonariusza |
date | DATETIME | Data zdarzenia |
status | VARCHAR(50) | Status (np. Zatrzymany, Poszukiwany) |
Tabela: tablet_BCSOReports
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
patrol_id | INT | ID patrolu |
report_text | TEXT | Treść raportu |
created_at | DATETIME | Data utworzenia |
Tabela: tablet_BCSOPatrols
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
officer_id | INT | ID funkcjonariusza |
start_time | DATETIME | Czas rozpoczęcia patrolu |
end_time | DATETIME | Czas zakończenia patrolu |
area | VARCHAR(100) | Obszar patrolu |
Tabela: tablet_BCSOIncidents
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
location | VARCHAR(100) | Lokalizacja zdarzenia |
description | TEXT | Szczegóły zdarzenia |
status | VARCHAR(50) | Status (np. W toku, Zakończone) |
assigned_to | INT | ID jednostki przypisanej |
reported_at | DATETIME | Data zgłoszenia |
Backend w Lua
Przykładowe funkcje serwera:
- 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)
- 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)
- 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)
- 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:
- Panel główny:
- Statystyki regionalne i aktywne zgłoszenia.
- Lista poszukiwanych osób.
- Baza danych przestępców:
- Wyszukiwanie i edycja danych.
- System zgłoszeń:
- Podgląd i przypisywanie zgłoszeń do jednostek.
- Raporty z patroli:
- Tworzenie i przegląd raportów z zakończonych patroli.
- Historia działań:
- Przegląd historii działań BCSO i statystyk funkcjonariuszy.
Mechanizmy wymiany danych
Autoryzacja użytkowników:
- Token JWT przesyłany z każdym zapytaniem do API.
Synchronizacja danych:
- Dane o zgłoszeniach, przestępcach i patrolach są aktualizowane w czasie rzeczywistym.
Powiadomienia:
- Automatyczne powiadomienia o nowych zgłoszeniach lub aktualizacjach w bazie danych.