# nie można wycofać treści z archiwum

- Board: BIP
- Łącznie: 0 zł
- Nieukończone: 0 zł
- Godziny: 0 h
- Postęp: 0 z 0 zadań

## Opis

Diagnoza

- To nie jest błąd pojedynczej akcji, tylko obecny kontrakt workflow:w PagesTable i BipPublicationsTable jest akcja archive, ale brak akcji typu restore/unarchive(PagesTable.php,BipPublicationsTable.php)po statusie archived edycja nie resetuje rekordu do draft, bo shouldResetWorkflow() działa tylko dla review i published(EditPage.php,EditBipPublication.php)model zdarzeń workflow ma ACTION\_ARCHIVE, ale nie ma akcji przywrócenia(ContentWorkflowEvent.php)matryca uprawnień ma Archive, ale nie ma osobnej czynności „Przywrócenie z archiwum”(PermissionAction.php)
  - w PagesTable i BipPublicationsTable jest akcja archive, ale brak akcji typu restore/unarchive(PagesTable.php,BipPublicationsTable.php)
  - po statusie archived edycja nie resetuje rekordu do draft, bo shouldResetWorkflow() działa tylko dla review i published(EditPage.php,EditBipPublication.php)
  - model zdarzeń workflow ma ACTION\_ARCHIVE, ale nie ma akcji przywrócenia(ContentWorkflowEvent.php)
  - matryca uprawnień ma Archive, ale nie ma osobnej czynności „Przywrócenie z archiwum”(PermissionAction.php)

Podstawa biznesowa

- W baseline przejść stanów nie ma przejścia Archiwalna -> ..., więc archiwum jest potraktowane jako stan końcowy:Opublikowana -> Archiwalnabrak „powrotu z archiwum”(3\_funkcjonalnosci-systemu-cms-baseline.md)
  - Opublikowana -> Archiwalna
  - brak „powrotu z archiwum”(3\_funkcjonalnosci-systemu-cms-baseline.md)

- Dla publicznego widoku:Page na /strona/{slug} wymaga published, a archiwalna treść idzie osobną ścieżką /archiwum/strona/{slug}(PublicBipHomeController.php,web.php)BipPublication obecnie i tak nie ma docelowego publicznego renderowania jak Page (to też wzmacnia odczucie „znikania”).
  - Page na /strona/{slug} wymaga published, a archiwalna treść idzie osobną ścieżką /archiwum/strona/{slug}(PublicBipHomeController.php,web.php)
  - BipPublication obecnie i tak nie ma docelowego publicznego renderowania jak Page (to też wzmacnia odczucie „znikania”).

Dlaczego masz problem z obowiązkowymi treściami

- System dziś pozwala zarchiwizować rekord nawet jeśli biznesowo jest „obowiązkowy”.

- Nie ma ochrony typu „nie archiwizuj obowiązkowej treści”.

- Nie ma ścieżki cofnięcia archiwizacji, więc obowiązkowy rekord może utknąć poza bieżącą publikacją.

Rekomendowane rozwiązanie przed wdrożeniem

1. Dodać twardą blokadę archiwizacji dla is\_required = true (i analogicznie wycofania, jeśli ma dotyczyć).

2. Dodać nową akcję workflow Przywróć z archiwum dla ról publikacyjnych:proponowany kierunek: Archived -> Review (bez automatycznej publikacji, z zachowaniem rozdziału obowiązków),alternatywa: Archived -> Draft (więcej pracy redakcyjnej, ale bezpieczniej formalnie).

3. Dodać walidację spójności: przed archiwizacją sprawdzać, czy po zmianie zostanie co najmniej jedna opublikowana treść obowiązkowa danego typu.

4. Dla już zarchiwizowanych obowiązkowych rekordów: jednorazowa akcja naprawcza (przywrócenie do review), żeby nie robić ręcznych obejść.

Dodatkowa uwaga: baseline ma też przejście Wycofana -> Robocza, a w aktualnym kodzie nie ma osobnej akcji, która to realizuje wprost. Warto to domknąć przy tej samej zmianie, żeby workflow był spójny.

Jeśli chcesz, przygotuję teraz krótki plan wdrożenia (zakres plików + testy) w wariancie minimalnym, bez nadmiarowej przebudowy.

## Listy zadań

### Otwarte

_Brak zadań_
