3.5 KiB
3.5 KiB
Plan Refaktoryzacji CRM PRO
Cel
- Przenieść logikę biznesową i dostęp do danych z warstwy
factorydoautoload/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\ProjectszWorkTimeRepository(czas liczony bezpośrednio w repozytorium Domain). - Dodano testy:
tests/Domain/Tasks/WorkTimeRepositoryTest.phptests/run.php
Etap 2: Standaryzacja kontrolerów (W TOKU)
- Dodano
autoload/Controllers/TasksController.php. - Przeniesiono akcję czasu pracy do nowego kontrolera:
TasksController::workTime(). - Zostawiono adapter kompatybilności w
autoload/controls/class.Tasks.php. - Oznaczono starą metodę
controls\Tasks::work_time()jako deprecated. - Nowy kontroler korzysta bezpośrednio z Domain (
WorkTimeRepository) zamiast factory. - 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>dolayout/style.scsspod#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_saveoperation_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.phppozostaje 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).