Skip to content

Projekt aplikacji DOC (Department of Correction)

Wymagania funkcjonalne

  1. System logowania i autoryzacji:

    • Dostęp tylko dla członków DOC.
    • Logowanie na podstawie konta tabletu.
    • Przydzielanie uprawnień na podstawie rangi (np. Strażnik, Kierownik Zmiany, Dyrektor).
  2. Panel główny:

    • Podsumowanie kluczowych informacji:
      • Lista aktualnych więźniów.
      • Harmonogram zmian strażników.
      • Status cel i sprzętu (np. monitoring, stan zamków).
  3. Rejestr więźniów:

    • Dodawanie i aktualizacja informacji o więźniach:
      • Dane personalne (np. imię, nazwisko, numer ID).
      • Powód osadzenia i czas wyroku.
      • Aktualny status (np. w celi, na spacerze, w izolatce).
  4. Harmonogramy:

    • Planowanie zmian strażników:
      • Data i godzina zmiany.
      • Przypisanie obowiązków (np. monitoring, patrol).
  5. Rejestr zdarzeń:

    • Zapisywanie zdarzeń w placówce:
      • Incydenty (np. bójki, próby ucieczki).
      • Opis działań podjętych przez strażników.
  6. System zgłoszeń:

    • Zarządzanie zgłoszeniami od strażników:
      • Potrzeby sprzętowe.
      • Problemy techniczne (np. awarie zamków).
      • Zgłoszenia dotyczące więźniów (np. złe zachowanie).
  7. Powiadomienia:

    • Automatyczne powiadomienia o ważnych wydarzeniach (np. nowe zgłoszenia, zmiany w harmonogramach).
    • Możliwość ręcznego wysyłania powiadomień przez kierowników zmiany.

Architektura aplikacji

Struktura bazy danych

Tabela: tablet_DOCInmates

PoleTypOpis
idINTKlucz główny
nameVARCHAR(100)Imię i nazwisko
inmate_idVARCHAR(50)Numer ID więźnia
reasonTEXTPowód osadzenia
sentence_startDATETIMEData rozpoczęcia wyroku
sentence_endDATETIMEData zakończenia wyroku
statusVARCHAR(50)Status (np. W celi, Izolatka)

Tabela: tablet_DOCShifts

PoleTypOpis
idINTKlucz główny
guard_idINTID strażnika
shift_startDATETIMEPoczątek zmiany
shift_endDATETIMEKoniec zmiany
assigned_dutyVARCHAR(100)Przypisane zadanie

Tabela: tablet_DOCEvents

PoleTypOpis
idINTKlucz główny
inmate_idINTID więźnia
descriptionTEXTOpis zdarzenia
reported_byINTID strażnika zgłaszającego
dateDATETIMEData zdarzenia

Tabela: tablet_DOCRequests

PoleTypOpis
idINTKlucz główny
guard_idINTID strażnika
typeVARCHAR(50)Typ zgłoszenia (np. Techniczne, Sprzętowe)
descriptionTEXTSzczegóły zgłoszenia
statusVARCHAR(50)Status (np. Oczekuje, Zakończone)
created_atDATETIMEData zgłoszenia

Backend w Lua

Przykładowe funkcje serwera:

  1. Dodawanie więźnia:
lua
RegisterServerEvent('doc:addInmate')
AddEventHandler('doc:addInmate', function(name, inmate_id, reason, sentence_start, sentence_end, status)
    local query = [[INSERT INTO tablet_DOCInmates (name, inmate_id, reason, sentence_start, sentence_end, status) VALUES (?, ?, ?, ?, ?, ?)]]
    MySQL.insert.await(query, {name, inmate_id, reason, sentence_start, sentence_end, status})
end)
  1. Planowanie zmiany:
lua
RegisterServerEvent('doc:scheduleShift')
AddEventHandler('doc:scheduleShift', function(guard_id, shift_start, shift_end, assigned_duty)
    local query = [[INSERT INTO tablet_DOCShifts (guard_id, shift_start, shift_end, assigned_duty) VALUES (?, ?, ?, ?)]]
    MySQL.insert.await(query, {guard_id, shift_start, shift_end, assigned_duty})
end)
  1. Dodawanie zdarzenia:
lua
RegisterServerEvent('doc:addEvent')
AddEventHandler('doc:addEvent', function(inmate_id, description, reported_by)
    local query = [[INSERT INTO tablet_DOCEvents (inmate_id, description, reported_by, date) VALUES (?, ?, ?, NOW())]]
    MySQL.insert.await(query, {inmate_id, description, reported_by})
end)
  1. Tworzenie zgłoszenia:
lua
RegisterServerEvent('doc:createRequest')
AddEventHandler('doc:createRequest', function(guard_id, type, description)
    local query = [[INSERT INTO tablet_DOCRequests (guard_id, type, description, status, created_at) VALUES (?, ?, ?, 'Oczekuje', NOW())]]
    MySQL.insert.await(query, {guard_id, type, description})
end)

Frontend (Vue.js)

Widoki:

  1. Panel główny:
    • Lista więźniów i zgłoszeń.
    • Harmonogram zmian strażników.
  2. Rejestr więźniów:
    • Wyszukiwanie i aktualizacja danych więźniów.
    • Przegląd historii zdarzeń dla wybranego więźnia.
  3. Harmonogram:
    • Widok zaplanowanych zmian strażników.
  4. Zarządzanie zgłoszeniami:
    • Lista zgłoszeń z opcją zmiany statusu.
  5. Rejestr zdarzeń:
    • Przegląd i dodawanie nowych zdarzeń w placówce.

Mechanizmy wymiany danych

  1. Autoryzacja użytkowników:

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

    • Dane więźniów, harmonogramów i zdarzeń są synchronizowane na bieżąco w czasie rzeczywistym.
  3. Powiadomienia:

    • Automatyczne powiadomienia o nowych zgłoszeniach i zmianach w harmonogramach.