Plan Dalszej Refaktoryzacji
Etap 1 - Walidacja Wejścia
- Dodać helpery walidacji JSON.
- Ujednolicić odpowiedzi błędów.
- Usunąć
request.jsonna rzeczrequest.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 migratelokalnie i osobnego joba migracyjnego w produkcji. - Nie uruchamiać migracji w entrypoincie każdej repliki web.
- Usunąć potrzebę
AUTO_CREATE_DBpoza 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.pyzostał usunięty, - aktywne trasy są w blueprintach,
- część duplikowanej logiki została usunięta,
openai_service.pyzostał 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.