Projekt aplikacji DOJ (Department of Justice)
Wymagania funkcjonalne
System logowania i autoryzacji:
- Dostęp tylko dla pracowników DOJ.
- Logowanie na podstawie konta tabletu.
- Przydzielanie uprawnień na podstawie rangi (np. Asystent, Prawnik, Prokurator, Sędzia).
Panel główny:
- Podsumowanie kluczowych informacji:
- Aktywne sprawy sądowe.
- Oczekujące wnioski o nakazy.
- Harmonogram rozpraw.
- Podsumowanie kluczowych informacji:
System akt spraw:
- Przechowywanie informacji o sprawach:
- Dane oskarżonych i świadków.
- Lista dowodów.
- Stan sprawy (np. w toku, zakończona).
- Możliwość przeglądania i aktualizacji akt.
- Przechowywanie informacji o sprawach:
System wniosków o nakazy:
- Tworzenie i przeglądanie wniosków:
- Nakazy aresztowania.
- Nakazy przeszukania.
- Akceptowanie lub odrzucanie wniosków przez sędziego.
- Tworzenie i przeglądanie wniosków:
Harmonogram rozpraw:
- Planowanie rozpraw sądowych:
- Data i godzina.
- Lista uczestników (oskarżyciel, obrońca, świadkowie).
- Przypisany sędzia.
- Planowanie rozpraw sądowych:
Rejestr wyroków:
- Przechowywanie wyroków w bazie danych.
- Przypisywanie wyroków do odpowiednich akt spraw.
Powiadomienia:
- Automatyczne powiadomienia o nowych wnioskach, terminach rozpraw i zmianach w aktach.
- Możliwość ręcznego wysyłania powiadomień przez sędziów i prokuratorów.
Architektura aplikacji
Struktura bazy danych
Tabela: tablet_DOJCases
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
case_name | VARCHAR(100) | Nazwa sprawy |
defendant | VARCHAR(100) | Oskarżony |
prosecutor_id | INT | ID prokuratora |
status | VARCHAR(50) | Status (np. W toku, Zakończona) |
created_at | DATETIME | Data utworzenia |
Tabela: tablet_DOJWarrants
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
type | VARCHAR(50) | Typ nakazu (np. Areszt, Przeszukanie) |
description | TEXT | Powód nakazu |
status | VARCHAR(50) | Status (np. Oczekuje, Zatwierdzony) |
judge_id | INT | ID sędziego |
created_at | DATETIME | Data wniosku |
Tabela: tablet_DOJSchedule
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
case_id | INT | ID sprawy |
date | DATETIME | Data rozprawy |
judge_id | INT | ID sędziego |
participants | TEXT | Lista uczestników |
Tabela: tablet_DOJVerdicts
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
case_id | INT | ID sprawy |
verdict | TEXT | Treść wyroku |
date | DATETIME | Data wyroku |
Backend w Lua
Przykładowe funkcje serwera:
- Tworzenie sprawy:
lua
RegisterServerEvent('doj:createCase')
AddEventHandler('doj:createCase', function(case_name, defendant, prosecutor_id)
local query = [[INSERT INTO tablet_DOJCases (case_name, defendant, prosecutor_id, status, created_at) VALUES (?, ?, ?, 'W toku', NOW())]]
MySQL.insert.await(query, {case_name, defendant, prosecutor_id})
end)
- Dodawanie wniosku o nakaz:
lua
RegisterServerEvent('doj:addWarrant')
AddEventHandler('doj:addWarrant', function(type, description, judge_id)
local query = [[INSERT INTO tablet_DOJWarrants (type, description, status, judge_id, created_at) VALUES (?, ?, 'Oczekuje', ?, NOW())]]
MySQL.insert.await(query, {type, description, judge_id})
end)
- Planowanie rozprawy:
lua
RegisterServerEvent('doj:scheduleHearing')
AddEventHandler('doj:scheduleHearing', function(case_id, date, judge_id, participants)
local query = [[INSERT INTO tablet_DOJSchedule (case_id, date, judge_id, participants) VALUES (?, ?, ?, ?)]]
MySQL.insert.await(query, {case_id, date, judge_id, participants})
end)
- Dodawanie wyroku:
lua
RegisterServerEvent('doj:addVerdict')
AddEventHandler('doj:addVerdict', function(case_id, verdict)
local query = [[INSERT INTO tablet_DOJVerdicts (case_id, verdict, date) VALUES (?, ?, NOW())]]
MySQL.insert.await(query, {case_id, verdict})
end)
Frontend (Vue.js)
Widoki:
- Panel główny:
- Lista aktywnych spraw i wniosków.
- Podsumowanie harmonogramu rozpraw.
- System akt spraw:
- Wyszukiwanie i edycja akt spraw.
- Wnioski o nakazy:
- Lista wniosków z opcjami zatwierdzania/odrzucania.
- Formularz tworzenia nowych wniosków.
- Harmonogram:
- Widok kalendarza z zaplanowanymi rozprawami.
- Rejestr wyroków:
- Przegląd wyroków dla zakończonych spraw.
Mechanizmy wymiany danych
Autoryzacja użytkowników:
- Token JWT przesyłany z każdym zapytaniem do API.
Synchronizacja danych:
- Dane są aktualizowane na żądanie lub w czasie rzeczywistym (np. powiadomienia o nowych wnioskach).
Integracja z LSPD:
- Automatyczne pobieranie danych z systemu mandatów i zgłoszeń LSPD.