📄 InvoiceGizmo

Specyfikacja Systemu Fakturowania

1. Wprowadzenie

System InvoiceGizmo umożliwia generowanie faktur wraz z odpowiednimi danymi oraz zapisywanie ich w Firebase.

2. Wymagania Użytkownika (URS)

2.1. Podstawowe wymaganie

  • URS-001: Generowanie faktur wraz z odpowiednimi danymi oraz zapisywanie ich w Firebase

3. Specyfikacja Funkcjonalna (FS)

Projekt będzie oparty na Cloudflare Workers + Firebase (Storage + Firestore).

3.1. Wygląd faktury (FS-001)

Dla faktury imiennej (osoba fizyczna)

  • Imię i nazwisko kupującego
  • Adres kupującego
  • Pozostałe standardowe dane faktury

Dla faktury na firmę

  • Nazwa firmy
  • Numer NIP
  • Adres siedziby firmy
  • Pozostałe standardowe dane faktury
Uwaga: W przypadku faktury na firmę zamiast danych osoby fizycznej (imię, nazwisko, adres kupującego) powinna być: nazwa firmy, numer NIP, adres siedziby firmy.

3.2. Generowanie faktury (FS-002)

Faktura jest generowana na podstawie przekazanych danych (dane kupującego, produkty, kwoty, daty).

3.3. Dostępność faktur (FS-003)

Wygenerowane faktury są natychmiast dostępne w systemie po zapisaniu w Firebase.

3.4. Zapis faktur w Firebase (FS-004)

3.5. Proces przepływu faktury (FS-005)

Generowanie faktury z odpowiednimi danymi → Zapis PDF w Firebase Storage → Zapis metadanych w Firestore

4. Scenariusze Testowe i Implementacyjne (NFS)

4.1. Scenariusz 1: Generowanie faktury (NFS-001)

Proces generowania faktury z odpowiednimi danymi:

  1. System otrzymuje dane do wygenerowania faktury.
  2. Faktura jest generowana z odpowiednimi danymi (dane kupującego, produkty, kwoty).
  3. Faktura jest zapisywana w systemie (Firebase Storage + Firestore).
  4. Faktura jest dostępna do wyświetlenia.

4.2. Scenariusz 2: Zapis faktury w Firebase (NFS-002)

Proces zapisu faktury w Firebase:

  1. Po wygenerowaniu faktury, plik PDF jest zapisywany w Firebase Storage.
  2. Metadane faktury są zapisywane w Firestore.
  3. Faktura jest dostępna w systemie przez unikalny identyfikator.
  4. System weryfikuje poprawność zapisu danych.

5. Przyszłe Funkcjonalności

5.1. Integracja z KSeF (FUTURE-001)

Przesyłanie faktur do KSeF (Krajowy System e-Faktur).

  • Faktury na firmę z numerem NIP nabywcy muszą być przesyłane do KSeF w dniu wystawienia faktury.
  • Status: Do implementacji w przyszłości.

6. Specyfikacja Techniczna (DS - Design Specification)

6.0. Proponowany Stack Technologiczny

DS-000: Rekomendowane technologie do implementacji:

  • Backend: Cloudflare Workers (TypeScript)
  • Generowanie PDF: PDFKit lub @react-pdf/renderer
  • Przechowywanie plików: Firebase Storage
  • Baza danych: Firebase Firestore (NoSQL) - dla metadanych faktur
  • Wysyłka e-mail: Resend API lub SendGrid
  • Autoryzacja: API Keys (przechowywane w Cloudflare Secrets)

Uzasadnienie:

  • Cloudflare Workers zapewnia edge computing i szybkie odpowiedzi
  • TypeScript dla type safety i lepszego DX
  • Firebase Storage dla niezawodnego przechowywania plików PDF
  • Firestore dla elastycznych metadanych faktur (NoSQL, łatwa integracja)
  • Resend/SendGrid dla niezawodnej wysyłki e-mail

6.1. Architektura systemu (DS-001)

System będzie wdrożony na platformie Cloudflare Workers.

6.1.1. Komponenty systemu

6.1.2. Przepływ danych

Aplikacja → Cloudflare Worker (API) → Firebase Storage (pliki PDF)   /   Firebase Firestore (metadane)

6.2. Bezpieczeństwo (DS-002)

6.2.1. Autoryzacja

6.2.2. HTTPS i CORS

6.2.3. Ochrona danych

6.3. Endpointy API (DS-003)

Worker udostępnia endpoint do tworzenia i zapisu faktury.

6.3.1. Tworzenie faktury

6.4. Przechowywanie plików faktur (DS-004)

6.4.1. Struktura przechowywania

6.4.2. Dostęp do plików

6.5. Integracja z aplikacją (DS-005)

Aplikacja komunikuje się z Workerem przez REST API.

6.5.1. Scenariusz użycia

  1. Użytkownik otwiera zakładkę „Faktury”
    Aplikacja wywołuje GET /api/invoices?userId={userId}, a Worker zwraca listę faktur użytkownika.
  2. Użytkownik przegląda szczegóły faktury
    Aplikacja wywołuje GET /api/invoices/:invoiceId?format=json i wyświetla metadane faktury.
  3. Użytkownik pobiera fakturę jako PDF
    Aplikacja wywołuje GET /api/invoices/:invoiceId/download, Worker zwraca plik PDF.

6.5.2. Obsługa błędów

6.6. Wymagania wydajnościowe (DS-006)

6.7. Środowiska (DS-007)

Każde środowisko posiada osobne klucze API, Firebase projekty/buckets (opcjonalnie) oraz konfiguracje domen/routes.

6.8. Monitoring i logowanie (DS-008)

7. Załączniki

Załącznik nr 1

Czytelna wersja faktury (wizualizacja) – do uzupełnienia na podstawie dokumentacji graficznej.

8. Wymagania Niefunkcjonalne

8.1. Bezpieczeństwo

8.2. Wydajność

8.3. Audyt

9. Pytania do doprecyzowania

  1. Numeracja faktur – jaki system numeracji ma być zastosowany? (ciągła, roczna, miesięczna?).
  2. Czy istnieje szablon graficzny faktury do zaimportowania?
  3. Jakie statusy faktury mają być obsługiwane? (oczekująca, zatwierdzona, wysłana, anulowana?).
  4. Czy potrzebna jest historia zmian faktury?
  5. Czy autoryzacja przez Magdę jest obowiązkowa dla wszystkich faktur, czy tylko w trybie testowym?
  6. Jak rozróżnić faktury testowe od produkcyjnych w kontekście numeracji?
  7. Jakie dane sprzedawcy (firmy) mają być wyświetlane na fakturze?
  8. Czy faktura ma zawierać informacje o metodzie płatności?
  9. Czy system obsługuje wiele walut?
  10. W jakich językach mają być generowane faktury?

10. Słownik pojęć

11. Plan działania i forma dostarczenia

11.1. Etapy realizacji projektu

ETAP-001: Setup i podstawowa infrastruktura

  • Konfiguracja Cloudflare Workers + Firebase (Storage + Firestore)
  • Podstawowa struktura projektu (TypeScript)
  • Implementacja endpointów API (health check, lista faktur, pobieranie faktury)
  • Autoryzacja przez API Key

ETAP-002: Generowanie i przechowywanie faktur

  • Implementacja generowania PDF faktur (imiennych i na firmę)
  • Zapis faktur do Firebase Storage
  • Zapis metadanych do Firestore
  • System statusów faktur (oczekująca, zatwierdzona, wysłana)

ETAP-003: Integracja i weryfikacja

  • Integracja z Firebase (Storage + Firestore)
  • Weryfikacja poprawności zapisu faktur
  • Testy i wdrożenie na Production

11.2. Forma dostarczenia projektu

DELIVERY-001: Kod źródłowy i konfiguracja

  • Repozytorium Git z kodem (TypeScript)
  • Pliki konfiguracyjne (wrangler.toml)
  • README.md z instrukcjami setupu i wdrożenia

DELIVERY-002: Wdrożenie

  • Wdrożony system na Cloudflare (Production)
  • Przekazane dane dostępowe (API Keys, konfiguracja Firebase)
  • Podstawowe testy działają

DELIVERY-003: Dokumentacja

  • Instrukcje obsługi systemu autoryzacji faktur dla Magdy
  • Dokumentacja API (endpointy, przykłady użycia)

11.3. Kryteria akceptacji

ACCEPTANCE-001: Funkcjonalność

  • Wszystkie wymagania z sekcji 2 (URS) działają
  • Faktury są generowane z odpowiednimi danymi (URS-001)
  • Faktury są zapisywane w Firebase (Storage + Firestore) (URS-001)
  • System poprawnie zapisuje zarówno pliki PDF jak i metadane

ACCEPTANCE-002: Bezpieczeństwo i wydajność

  • Autoryzacja przez API Key działa
  • Faktury dostępne tylko dla autoryzowanych
  • System działa stabilnie (Cloudflare zapewnia 99.9% uptime)
Dokument wygenerowany na podstawie: Flow - fakturowanie.docx
Data ostatniej aktualizacji: 2025-11-25