Skip to content

Projekt aplikacji DOJ (Department of Justice)

Wymagania funkcjonalne

  1. 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).
  2. Panel główny:

    • Podsumowanie kluczowych informacji:
      • Aktywne sprawy sądowe.
      • Oczekujące wnioski o nakazy.
      • Harmonogram rozpraw.
  3. 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.
  4. System wniosków o nakazy:

    • Tworzenie i przeglądanie wniosków:
      • Nakazy aresztowania.
      • Nakazy przeszukania.
    • Akceptowanie lub odrzucanie wniosków przez sędziego.
  5. Harmonogram rozpraw:

    • Planowanie rozpraw sądowych:
      • Data i godzina.
      • Lista uczestników (oskarżyciel, obrońca, świadkowie).
      • Przypisany sędzia.
  6. Rejestr wyroków:

    • Przechowywanie wyroków w bazie danych.
    • Przypisywanie wyroków do odpowiednich akt spraw.
  7. 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

PoleTypOpis
idINTKlucz główny
case_nameVARCHAR(100)Nazwa sprawy
defendantVARCHAR(100)Oskarżony
prosecutor_idINTID prokuratora
statusVARCHAR(50)Status (np. W toku, Zakończona)
created_atDATETIMEData utworzenia

Tabela: tablet_DOJWarrants

PoleTypOpis
idINTKlucz główny
typeVARCHAR(50)Typ nakazu (np. Areszt, Przeszukanie)
descriptionTEXTPowód nakazu
statusVARCHAR(50)Status (np. Oczekuje, Zatwierdzony)
judge_idINTID sędziego
created_atDATETIMEData wniosku

Tabela: tablet_DOJSchedule

PoleTypOpis
idINTKlucz główny
case_idINTID sprawy
dateDATETIMEData rozprawy
judge_idINTID sędziego
participantsTEXTLista uczestników

Tabela: tablet_DOJVerdicts

PoleTypOpis
idINTKlucz główny
case_idINTID sprawy
verdictTEXTTreść wyroku
dateDATETIMEData wyroku

Backend w Lua

Przykładowe funkcje serwera:

  1. 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)
  1. 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)
  1. 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)
  1. 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:

  1. Panel główny:
    • Lista aktywnych spraw i wniosków.
    • Podsumowanie harmonogramu rozpraw.
  2. System akt spraw:
    • Wyszukiwanie i edycja akt spraw.
  3. Wnioski o nakazy:
    • Lista wniosków z opcjami zatwierdzania/odrzucania.
    • Formularz tworzenia nowych wniosków.
  4. Harmonogram:
    • Widok kalendarza z zaplanowanymi rozprawami.
  5. Rejestr wyroków:
    • Przegląd wyroków dla zakończonych spraw.

Mechanizmy wymiany danych

  1. Autoryzacja użytkowników:

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

    • Dane są aktualizowane na żądanie lub w czasie rzeczywistym (np. powiadomienia o nowych wnioskach).
  3. Integracja z LSPD:

    • Automatyczne pobieranie danych z systemu mandatów i zgłoszeń LSPD.