Files
crmPRO/REFACTORING_PLAN.md

3.5 KiB

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)

  • 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> 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).