Projekt aplikacji Zarządzanie JOBEM/Własną firmą
Wymagania funkcjonalne
Tworzenie firmy:
- Gracze mogą zakładać własne firmy, wybierając nazwę, typ działalności oraz rejestrować się w systemie.
Zarządzanie pracownikami:
- Właściciele firm mogą zatrudniać i zwalniać pracowników.
- Ustalanie rang i ról (np. Menedżer, Pracownik).
- Monitorowanie obecności i aktywności pracowników.
Zarządzanie finansami firmy:
- Przegląd przychodów i wydatków.
- Wypłaty dla pracowników (ustalanie pensji).
- Możliwość dodawania faktur i transakcji.
Zarządzanie zasobami firmy:
- Ewidencja pojazdów, sprzętu i materiałów.
- Przypisywanie zasobów pracownikom.
Tworzenie zleceń i raportów:
- Możliwość dodawania zleceń dla pracowników.
- Generowanie raportów z wykonanych zleceń.
Panel pracownika:
- Pracownicy mają dostęp do swojego grafiku, listy zleceń i wyników pracy.
Architektura aplikacji
Struktura bazy danych
Tabela: tablet_Companies
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
owner_id | INT | ID właściciela firmy |
name | VARCHAR(100) | Nazwa firmy |
type | VARCHAR(50) | Typ działalności |
created_at | DATETIME | Data założenia firmy |
Tabela: tablet_Employees
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
company_id | INT | ID firmy |
user_id | INT | ID gracza |
role | VARCHAR(50) | Rola pracownika (np. Menedżer) |
salary | INT | Wynagrodzenie |
Tabela: tablet_Transactions
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
company_id | INT | ID firmy |
type | VARCHAR(50) | Typ transakcji (przychód/wydatek) |
amount | INT | Kwota |
description | TEXT | Opis transakcji |
created_at | DATETIME | Data transakcji |
Tabela: tablet_Tasks
Pole | Typ | Opis |
---|---|---|
id | INT | Klucz główny |
company_id | INT | ID firmy |
employee_id | INT | ID pracownika wykonującego |
description | TEXT | Opis zlecenia |
status | VARCHAR(50) | Status zlecenia (np. W toku, Zakończone) |
created_at | DATETIME | Data utworzenia zlecenia |
Relacje:
tablet_Companies.owner_id
to klucz obcy odnoszący się doTabletAccounts.id
.tablet_Employees.company_id
to klucz obcy odnoszący się dotablet_Companies.id
.tablet_Transactions.company_id
to klucz obcy odnoszący się dotablet_Companies.id
.tablet_Tasks.company_id
itablet_Tasks.employee_id
odnoszą się dotablet_Companies.id
oraztablet_Employees.id
.
Backend w Lua
Funkcje serwera:
- Tworzenie firmy:
lua
RegisterServerEvent('company:createCompany')
AddEventHandler('company:createCompany', function(name, type)
local owner_id = source
local query = [[INSERT INTO tablet_Companies (owner_id, name, type, created_at) VALUES (?, ?, ?, NOW())]]
MySQL.insert.await(query, {owner_id, name, type})
end)
- Dodawanie pracownika:
lua
RegisterServerEvent('company:addEmployee')
AddEventHandler('company:addEmployee', function(company_id, user_id, role, salary)
local query = [[INSERT INTO tablet_Employees (company_id, user_id, role, salary) VALUES (?, ?, ?, ?)]]
MySQL.insert.await(query, {company_id, user_id, role, salary})
end)
- Zarządzanie finansami:
lua
RegisterServerEvent('company:addTransaction')
AddEventHandler('company:addTransaction', function(company_id, type, amount, description)
local query = [[INSERT INTO tablet_Transactions (company_id, type, amount, description, created_at) VALUES (?, ?, ?, ?, NOW())]]
MySQL.insert.await(query, {company_id, type, amount, description})
end)
- Tworzenie zlecenia:
lua
RegisterServerEvent('company:createTask')
AddEventHandler('company:createTask', function(company_id, employee_id, description)
local query = [[INSERT INTO tablet_Tasks (company_id, employee_id, description, status, created_at) VALUES (?, ?, ?, 'W toku', NOW())]]
MySQL.insert.await(query, {company_id, employee_id, description})
end)
- Edycja zlecenia:
lua
RegisterServerEvent('company:updateTaskStatus')
AddEventHandler('company:updateTaskStatus', function(task_id, status)
local query = [[UPDATE tablet_Tasks SET status = ? WHERE id = ?]]
MySQL.update.await(query, {status, task_id})
end)
Frontend (Vue.js)
Widoki:
Panel właściciela firmy:
- Lista pracowników z opcjami zarządzania (awans, zwolnienie, ustalanie pensji).
- Podsumowanie finansowe firmy.
Panel pracownika:
- Lista przydzielonych zleceń.
- Status wynagrodzenia.
Formularze:
- Tworzenie nowej firmy.
- Dodawanie nowych transakcji i zleceń.
Komponenty wspólne:
- Modal do potwierdzania akcji (np. zwolnienie pracownika).
- Powiadomienia o nowych zadaniach lub zmianach w firmie.
Mechanizmy wymiany danych
Autoryzacja użytkowników:
- Token JWT przesyłany z każdym zapytaniem do API.
Ładowanie danych:
- Dane firmy i pracowników ładowane są na żądanie podczas otwierania panelu zarządzania.
Powiadomienia:
- Powiadomienia w czasie rzeczywistym o nowych zleceniach lub zmianach w strukturze firmy.