Projekt aplikacji LSPD (Los Santos Police Department)
Wymagania funkcjonalne
System logowania i autoryzacji:
- Dostęp tylko dla członków LSPD.
- Logowanie na podstawie konta tabletu.
- Przydzielanie uprawnień na podstawie rangi (np. Kadet, Oficer, Dowódca).
Panel główny:
- Podsumowanie kluczowych informacji, takich jak:
- Aktywne zgłoszenia.
- Lista poszukiwanych osób.
- Statystyki (np. liczba aresztowań, mandaty).
- Podsumowanie kluczowych informacji, takich jak:
Baza danych przestępców:
- Rejestr osób aresztowanych z możliwością:
- Dodawania nowych wpisów.
- Aktualizacji danych (np. status wyroku).
- Wyszukiwania po nazwisku, numerze ID lub innych danych.
- Rejestr osób aresztowanych z możliwością:
System mandatów:
- Możliwość wystawiania mandatów:
- Automatyczny zapis w bazie danych.
- Opcja wyszukiwania i edytowania wystawionych mandatów.
- Możliwość wystawiania mandatów:
Wsparcie dla patroli:
- Rejestracja rozpoczęcia i zakończenia zmiany patrolowej.
- Tworzenie raportów z patroli:
- Miejsce zdarzenia.
- Opis sytuacji.
- Podjęte działania.
System zgłoszeń:
- Przyjmowanie i zarządzanie zgłoszeniami od obywateli:
- Podgląd lokalizacji zgłoszenia.
- Przypisywanie zgłoszeń do jednostek w terenie.
- Oznaczanie zgłoszeń jako zakończone.
- Przyjmowanie i zarządzanie zgłoszeniami od obywateli:
Powiadomienia:
- Automatyczne powiadomienia o nowych zgłoszeniach lub poszukiwaniach.
- Możliwość ręcznego wysyłania powiadomień przez dowódców.
Historia i statystyki:
- Przegląd działań LSPD:
- Raporty z patroli.
- Liczba mandatów i aresztowań.
- Statystyki indywidualne dla funkcjonariuszy (np. aktywność w ciągu tygodnia).
- Przegląd działań LSPD:
Architektura aplikacji
Struktura bazy danych
Tabela: tablet_LSPDCriminalRecords
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_LSPDFines
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
citizen_id | INT | ID obywatela |
officer_id | INT | ID funkcjonariusza |
amount | INT | Kwota mandatu |
reason | TEXT | Powód wystawienia |
issued_at | DATETIME | Data wystawienia |
Tabela: tablet_LSPDPatrols
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 |
report | TEXT | Raport z patrolu |
Tabela: tablet_LSPDIncidents
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
location | VARCHAR(100) | Lokalizacja zdarzenia |
description | TEXT | Opis zdarzenia |
status | VARCHAR(50) | Status (np. W toku, Zakończone) |
assigned_to | INT | ID funkcjonariusza przypisanego |
reported_at | DATETIME | Data zgłoszenia |
Backend w Lua
Przykładowe funkcje serwera:
- Dodawanie przestępcy do rejestru:
lua
RegisterServerEvent('lspd:addCriminalRecord')
AddEventHandler('lspd:addCriminalRecord', function(name, crime_type, officer_id, status)
local query = [[INSERT INTO tablet_LSPDCriminalRecords (name, crime_type, officer_id, date, status) VALUES (?, ?, ?, NOW(), ?)]]
MySQL.insert.await(query, {name, crime_type, officer_id, status})
end)
- Wystawianie mandatu:
lua
RegisterServerEvent('lspd:issueFine')
AddEventHandler('lspd:issueFine', function(citizen_id, officer_id, amount, reason)
local query = [[INSERT INTO tablet_LSPDFines (citizen_id, officer_id, amount, reason, issued_at) VALUES (?, ?, ?, ?, NOW())]]
MySQL.insert.await(query, {citizen_id, officer_id, amount, reason})
end)
- Rejestracja patrolu:
lua
RegisterServerEvent('lspd:startPatrol')
AddEventHandler('lspd:startPatrol', function(officer_id)
local query = [[INSERT INTO tablet_LSPDPatrols (officer_id, start_time) VALUES (?, NOW())]]
MySQL.insert.await(query, {officer_id})
end)
RegisterServerEvent('lspd:endPatrol')
AddEventHandler('lspd:endPatrol', function(patrol_id, report)
local query = [[UPDATE tablet_LSPDPatrols SET end_time = NOW(), report = ? WHERE id = ?]]
MySQL.update.await(query, {report, patrol_id})
end)
Frontend (Vue.js)
Widoki:
- Panel główny:
- Statystyki dzienne i aktywne zgłoszenia.
- Baza danych przestępców:
- Wyszukiwanie i edytowanie danych.
- System mandatów:
- Lista wystawionych mandatów.
- Formularz wystawiania nowego mandatu.
- Patrole:
- Rejestrowanie zmiany i dodawanie raportów.
- Zgłoszenia:
- Podgląd i przypisywanie zgłoszeń do funkcjonariuszy.