# Asystent IT - Dokumentacja Systemu

## 1. Opis Projektu
**Asystent IT** to nowoczesna aplikacja webowa służąca do zbierania i kategoryzowania zgłoszeń serwisowych oraz zapotrzebowań sprzętowych w organizacji. System prowadzi użytkownika krok po kroku przez proces zgłaszania problemu, co pozwala na zebranie wszystkich niezbędnych informacji i precyzyjne skierowanie zgłoszenia do odpowiedniej grupy wsparcia.

## 2. Główne Funkcje

### 2.1. Bezpieczeństwo i Autoryzacja
- **Hybrydowe MFA**: Użytkownik może wybrać drugą metodę weryfikacji:
  - **Aplikacja Authenticator (TOTP)**: Google, Microsoft, itp.
  - **Kod na E-mail**: Jednorazowe kody wysyłane na adres mailowy użytkownika.
- **Weryfikowana Rejestracja**: Nowy użytkownik musi najpierw potwierdzić dostęp do swojej skrzynki pocztowej kodem OTP, zanim system pozwoli mu skonfigurować wybraną metodę MFA. Zapobiega to przejmowaniu kont na nieznane adresy e-mail.
- **Ochrona przed Brute-Force**: System posiada mechanizm blokady konta na 5 minut po 3 nieudanych próbach logowania.

### 2.2. Kreator Zgłoszeń (IT Wizard)
- Wielopoziomowa struktura kroków.
- Rozróżnienie na **Incydent (INC)** oraz **Zapotrzebowanie (REQ)**.
- Możliwość dołączania załączników (zdjęcia, logi, dokumenty).
- Przejrzysty interfejs zbudowany w oparciu o szklaną estetykę (Glassmorphism).

### 2.3. Panel Administratora
- Zarządzanie drzewem kategorii (dodawanie, edycja, usuwanie kroków).
- Możliwość definiowania, czy dany krok jest końcowy i jaki typ zgłoszenia generuje.

## 3. Instalacja i Konfiguracja

### 3.1. Baza Danych
Struktura bazy znajduje się w plikach:
- `wizard_steps.sql`: Definicja tabeli kroków.
- `sample_data.sql`: Przykładowe dane kategorii.
- Tabela `wizard_users` jest tworzona automatycznie przy pierwszym logowaniu.

### 3.2. Plik Konfiguracyjny (`db_config.php`)
Kluczowe parametry do ustawienia:
- `host`, `dbname`, `username`, `password`: Dane do bazy MySQL.
- `recipient_email`: Adres, na który trafiają zgłoszenia IT.
- `system_email`: Adres nadawcy dla maili systemowych (OTP).
- `smtp_host`, `smtp_port`: Konfiguracja serwera SMTP (domyślnie port 25, bez autoryzacji).

## 4. Architektura Techniczna

### 4.1. Serwer E-mail (SMTP)
System komunikuje się bezpośrednio z serwerem SMTP za pomocą socketów (`fsockopen`).
- **Maile systemowe (OTP)**: Wysyłane z adresu `assystentit@example.pl` (zdefiniowanego w configu).
- **Zgłoszenia**: Wykorzystują mechanizm spoofingu nadawcy, dzięki czemu w polu "Od" (From) widać adres zalogowanego użytkownika, co ułatwia bezpośrednią odpowiedź z systemów helpdesk.

### 4.2. Frontend
- Interfejs responsywny (Tailwind CSS).
- Dynamiczne ładowanie kroków za pomocą Fetch API.
- Reagowanie na błędy serwera (np. niedostępność SMTP) – proces rejestracji jest przerywany w przypadku błędów infrastruktury.

## 5. Struktura Plików

| Plik | Opis |
| :--- | :--- |
| `index.php` | Główny interfejs kreatora zgłoszeń. |
| `login.html` | Strona logowania, rejestracji i weryfikacji MFA. |
| `auth.php` | Logika autoryzacji, weryfikacji kodów i sesji. |
| `db_config.php` | Centralna konfiguracja i funkcje pomocnicze (DB, SMTP). |
| `send_ticket.php` | Skrypt procesujący i wysyłający zgłoszenie e-mailem. |
| `admin.php` | Panel do zarządzania krokami kreatora. |
| `GoogleAuthenticator.php` | Biblioteka do obsługi kodów TOTP. |

## 6. Rozwiązywanie Problemów
- **Błąd wysyłki OTP**: Sprawdź połączenie z serwerem SMTP na porcie 25 w pliku `db_config.php`.
- **Konto zablokowane**: Odczekaj 5 minut – blokada jest czasowa i resetuje się automatycznie.
- **Błąd bazy danych**: Upewnij się, że dane dostępowe w `db_config.php` są poprawne i użytkownik bazy ma uprawnienia `INSERT/UPDATE/DELETE`.

---
*Dokumentacja wygenerowana przez Antigravity.*
