# 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/class.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/class.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 `<style>` do `layout/style.scss` pod `#billing-summary`.

## Etap 4: Migracja domeny finansów (NASTĘPNY)
- Wyodrębnić `Domain/Finances/FinancesRepository.php`.
- Migrować małymi krokami (po 1-2 metody):
  - `operation_save`
  - `operation_delete`
  - metody listujące
- Po każdej grupie metod dodawać testy.

## Etap 5: Uporządkowanie struktury widoków (NASTĘPNY)
- Ustandaryzować mapowanie widoków pod `autoload/Views/*` (iteracyjnie).
- Zachować działanie starych ścieżek templatek do końca pełnej migracji.

## Polityka testów
- Każda zmigrowana metoda/funkcja musi mieć co najmniej jeden test automatyczny.
- `tests/run.php` pozostaje prostym, głównym entrypointem testów projektu.
- Dla zachowań UI (aktualizacje AJAX) dodać testy integracyjne/e2e, gdy pojawi się narzędzie testowe.

## Zasady migracji
- Bez zmian typu big-bang.
- Jeden ograniczony obszar funkcjonalny na commit.
- Najpierw kompatybilność, adaptery usuwać dopiero po pełnej migracji.
