JARVIS Docs

Plan Dalszej Refaktoryzacji

Etap 1 - Walidacja Wejścia

  • Dodać helpery walidacji JSON.
  • Ujednolicić odpowiedzi błędów.
  • Usunąć request.json na rzecz request.get_json(silent=True).
  • Wydzielić walidację rejestracji, logowania i chatu.

Etap 2 - Serwisy Domenowe

  • AuthService:
  • rejestracja,
  • logowanie,
  • reCAPTCHA verification.
  • UserService:
  • pobieranie użytkowników,
  • aktualizacja profilu,
  • zmiana hasła,
  • usuwanie konta.
  • ChatService:
  • tworzenie konwersacji,
  • pobieranie historii,
  • aktualizacja konfiguracji,
  • generowanie odpowiedzi.
  • BugReportService:
  • Azure Boards,
  • Discord notification.

Etap 3 - Konfiguracje Środowisk

Dodać klasy:

  • BaseConfig,
  • DevelopmentConfig,
  • TestingConfig,
  • ProductionConfig.

Etap 4 - Migracje

  • Używać docker compose --profile migrations run --rm migrate lokalnie i osobnego joba migracyjnego w produkcji.
  • Nie uruchamiać migracji w entrypoincie każdej repliki web.
  • Usunąć potrzebę AUTO_CREATE_DB poza lokalnym/dev scenariuszem.

Etap 5 - Frontend

  • Dodać base.html.
  • Wydzielić wspólny layout.
  • Uporządkować CSS/JS.
  • Usunąć martwe assety.

Etap 6 - CI/CD

  • Przenieść wszystkie sekrety do Azure secret variables.
  • Rozszerzyć quality gate o dependency scanning.
  • Dodać image vulnerability scanning jako jawny gate.
  • Ujednolicić wersję Pythona między lokalnym dev, CI i Dockerem.

Przydatne Komendy

Lokalna Walidacja

.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\python.exe -m flake8 backend tests
.\.venv\Scripts\python.exe -m mypy backend tests

Build i Test Stacka Compose

docker compose config
docker compose up -d --build db redis mockserver web
$env:CONTAINER_TEST_BASE_URL = "http://localhost:8000"
.\.venv\Scripts\python.exe -m pytest tests\integration -q
docker compose down -v --remove-orphans

Sprawdzenie, że Obraz Produkcyjny Nie Ma Pytest

docker compose run --rm --entrypoint python web -c "import pytest"

Oczekiwany wynik:

ModuleNotFoundError: No module named 'pytest'

Status

Repozytorium jest po pierwszych etapach refaktoryzacji:

  • monolit backend/routes.py został usunięty,
  • aktywne trasy są w blueprintach,
  • część duplikowanej logiki została usunięta,
  • openai_service.py został oczyszczony z tras HTTP,
  • testy, lint i typowanie przechodzą,
  • finalny obraz produkcyjny jest smoke-testowany z zewnątrz.

Dokument powinien być aktualizowany razem z kolejnymi etapami refaktoryzacji.