Files
crmPRO/REFACTORING_PLAN.md

71 lines
3.5 KiB
Markdown

# 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 `<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.
## Ostatnie wdrozenia (2026-02-06)
- Popup zadania: dodano zarzadzanie zalacznikami (dodawanie, edycja nazwy, usuwanie).
- Upload zalacznikow: obsluga wielu plikow w jednym wyslaniu (attachments[] + multiple).
- UX uploadu: dodano loader na przycisku ("Wysylanie..."), blokade wielokliku i odblokowanie po zakonczeniu requestu.
- Poprawiono krytyczny blad JS: dodano brakujaca funkcje is_task_popup_works_time_open().
- Ujednolicono napisy UI dla popupu i listy zadan (usuniecie "krzaczkow" przez encje HTML tam, gdzie to potrzebne).