# Plan Refaktoryzacji CRM PRO ## Cel - Przenieść logikę biznesową i dostęp do danych z warstwy `factory` do `autoload/Domain/*`. - Zachować kompatybilność wsteczną przez warstwy adapterów/fasad (`controls`, `factory`) podczas migracji. - Kończyć każdy etap migracji testami regresyjnymi. ## Aktualny status - Ostatnia aktualizacja: 2026-02-06 - Etap: 2 w toku (standaryzacja kontrolerów) - Obszar Czas pracy: zmigrowany i ustabilizowany ## Etap 1: Tasks / Czas pracy (ZROBIONE) - Dodano `autoload/Domain/Tasks/WorkTimeRepository.php`. - `factory\Tasks::work_time_clients()` deleguje teraz do repozytorium Domain. - Usunięto limit 3 miesięcy: repozytorium zwraca wszystkie istotne miesiące. - Uwzględniono statusy zadań: - `do rozliczenia` (`3`) - `do sprawdzenia` (`1`) - Usunięto zależność `\factory\Projects` z `WorkTimeRepository` (czas liczony bezpośrednio w repozytorium Domain). - Dodano testy: - `tests/Domain/Tasks/WorkTimeRepositoryTest.php` - `tests/run.php` ## Etap 2: Standaryzacja kontrolerów (W TOKU) - [x] Dodano `autoload/Controllers/TasksController.php`. - [x] Przeniesiono akcję czasu pracy do nowego kontrolera: `TasksController::workTime()`. - [x] Zostawiono adapter kompatybilności w `autoload/controls/class.Tasks.php`. - [x] Oznaczono starą metodę `controls\Tasks::work_time()` jako deprecated. - [x] Nowy kontroler korzysta bezpośrednio z Domain (`WorkTimeRepository`) zamiast factory. - [x] Dodano test kontrolera: - `tests/Controllers/TasksControllerTest.php` - [ ] Zmigrować kolejne metody z `controls\Tasks`: - `main_view()` - `main_view_by_ajax()` ## Etap 3: Porządki w UI Czasu pracy (ZROBIONE) - Nowy zbiorczy widok rozliczeń jest aktywny. - Usunięto zduplikowany/stary blok z `templates/tasks/work-time.php`. - Akcja „zamknij zadanie” działa przez AJAX bez pełnego przeładowania strony. - Dodano ładniejsze potwierdzenie (`jquery-confirm`) z fallbackiem. - Poprawiono hierarchię wizualną (Bootstrap + style pomocnicze). - Przeniesiono style widoku z inline `