update
This commit is contained in:
291
.paul/phases/97-project-generation/97-01-PLAN.md
Normal file
291
.paul/phases/97-project-generation/97-01-PLAN.md
Normal file
@@ -0,0 +1,291 @@
|
||||
---
|
||||
phase: 97-project-generation
|
||||
plan: 01
|
||||
type: execute
|
||||
wave: 1
|
||||
depends_on: []
|
||||
files_modified:
|
||||
- database/migrations/20260412_000097_add_project_generation.sql
|
||||
- src/Modules/Settings/ProjectMappingController.php
|
||||
- src/Modules/Settings/ProjectMappingRepository.php
|
||||
- resources/views/settings/project-mappings.php
|
||||
- resources/scss/modules/_project-mappings.scss
|
||||
- routes/web.php
|
||||
- resources/lang/pl.php
|
||||
- .claude/commands/wygeneruj-projekty.md
|
||||
autonomous: false
|
||||
delegation: off
|
||||
---
|
||||
|
||||
<objective>
|
||||
## Goal
|
||||
Półautomat do generowania projektów graficznych (PSD) na podstawie danych klientów z zamówień. Claude Code jest silnikiem generowania — analizuje personalizację produktów, normalizuje dane klienta (rozumiejąc niuanse, literówki, różne formaty zapisu) i uruchamia odpowiedni skrypt Photoshop API.
|
||||
|
||||
## Purpose
|
||||
Eliminacja ręcznej pracy przy tworzeniu projektów graficznych. Claude rozumie kontekst lepiej niż sztywny parser — potrafi zinterpretować "Kasia i Tomek 30 kwietnia", "Imiona: Kasia, Tomek\nData: 30.04.2026" i inne warianty jako te same dane wejściowe.
|
||||
|
||||
## Output
|
||||
- Tabela DB `project_mappings` — mapowanie nazwy produktu → skrypt generujący
|
||||
- Kolumna `project_generated` w `order_items` — flaga statusu generacji
|
||||
- Strona w panelu: Ustawienia → Mapowanie projektów (CRUD)
|
||||
- Komenda Claude Code `/wygeneruj-projekty` — skill uruchamiający cały przepływ
|
||||
</objective>
|
||||
|
||||
<context>
|
||||
## Project Context
|
||||
@.paul/PROJECT.md
|
||||
@.paul/ROADMAP.md
|
||||
@.paul/STATE.md
|
||||
|
||||
## Source Files
|
||||
@routes/web.php
|
||||
@src/Modules/Settings/CompanySettingsController.php (wzorzec CRUD settings)
|
||||
@src/Modules/Orders/OrdersRepository.php
|
||||
@resources/views/settings/statuses.php (wzorzec widoku settings)
|
||||
@tools/generowanie/buteleczki_wzor1.py (istniejący skrypt generujący)
|
||||
|
||||
## Technical Context
|
||||
- Personalizacja produktów w `order_items.personalization` jako plain text (linie \n)
|
||||
- Klienci piszą dane różnie — Claude interpretuje je kontekstowo
|
||||
- Skrypty w `tools/generowanie/` przyjmują parametry CLI (--imie_zenskie, --imie_meskie, --data, --klient itd.)
|
||||
- Skrypty wymagają uruchomionego Photoshopa (COM API)
|
||||
- DB dostępne przez Medoo (PHP panel) i przez mysql CLI (Claude)
|
||||
- Dane środowiskowe DB w .env (DB_HOST, DB_NAME, DB_USER, DB_PASS)
|
||||
|
||||
## Architektura przepływu
|
||||
```
|
||||
Użytkownik: /wygeneruj-projekty
|
||||
↓
|
||||
Claude: SELECT z DB → zamówienia "w realizacji", project_generated=0
|
||||
↓
|
||||
Claude: Sprawdź project_mappings → czy jest skrypt dla tego produktu
|
||||
↓
|
||||
Claude: Przeczytaj personalizację + dane kupującego
|
||||
↓
|
||||
Claude: Zinterpretuj dane (AI) → imie_zenskie, imie_meskie, data, zyczenia, klient
|
||||
↓
|
||||
Claude: python tools/generowanie/{skrypt}.py --parametry
|
||||
↓
|
||||
Claude: UPDATE order_items SET project_generated=1
|
||||
↓
|
||||
Claude: Raport — co wygenerowano, co się nie udało
|
||||
```
|
||||
</context>
|
||||
|
||||
<acceptance_criteria>
|
||||
|
||||
## AC-1: Tabela mapowań w bazie danych
|
||||
```gherkin
|
||||
Given baza danych orderPRO
|
||||
When uruchomiona migracja 20260412_000097
|
||||
Then istnieje tabela `project_mappings` z kolumnami: id, product_name_pattern, script_name, output_dir, is_active, created_at, updated_at
|
||||
And istnieje kolumna `project_generated` (TINYINT DEFAULT 0) w tabeli `order_items`
|
||||
And istnieje kolumna `project_generated_at` (DATETIME NULL) w tabeli `order_items`
|
||||
```
|
||||
|
||||
## AC-2: CRUD mapowań w panelu ustawień
|
||||
```gherkin
|
||||
Given zalogowany użytkownik w panelu
|
||||
When przechodzi do Ustawienia → Mapowanie projektów
|
||||
Then widzi listę istniejących mapowań (wzorzec nazwy produktu → skrypt)
|
||||
And może dodać nowe mapowanie (formularz: wzorzec nazwy, skrypt z dropdown, katalog wyjściowy)
|
||||
And może edytować i usuwać istniejące mapowania
|
||||
And może włączyć/wyłączyć mapowanie (is_active)
|
||||
```
|
||||
|
||||
## AC-3: Komenda Claude Code /wygeneruj-projekty
|
||||
```gherkin
|
||||
Given komenda /wygeneruj-projekty zdefiniowana jako Claude Code skill
|
||||
When użytkownik uruchamia /wygeneruj-projekty
|
||||
Then Claude odpytuje bazę: zamówienia "w realizacji" z produktami gdzie project_generated=0
|
||||
And dla każdego produktu sprawdza czy istnieje aktywne mapowanie (LIKE match)
|
||||
And jeśli mapowanie istnieje — pobiera personalizację i dane kupującego
|
||||
And Claude interpretuje dane kontekstowo (AI normalizacja)
|
||||
And prezentuje użytkownikowi co zamierza wygenerować (imiona, data, klient) i czeka na potwierdzenie
|
||||
And po potwierdzeniu uruchamia odpowiedni skrypt Python
|
||||
And po sukcesie aktualizuje project_generated=1, project_generated_at=NOW()
|
||||
And na końcu wyświetla raport: ile wygenerowano, ile pominięto, błędy
|
||||
```
|
||||
|
||||
</acceptance_criteria>
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 1: Migracja DB — tabela project_mappings + kolumna project_generated</name>
|
||||
<files>database/migrations/20260412_000097_add_project_generation.sql</files>
|
||||
<action>
|
||||
Utwórz migrację SQL:
|
||||
|
||||
1. Tabela `project_mappings`:
|
||||
- `id` INT AUTO_INCREMENT PRIMARY KEY
|
||||
- `product_name_pattern` VARCHAR(255) NOT NULL — wzorzec nazwy produktu (do LIKE match, np. "%buteleczk%")
|
||||
- `script_name` VARCHAR(255) NOT NULL — nazwa pliku skryptu w tools/generowanie/ (np. "buteleczki_wzor1.py")
|
||||
- `output_dir` VARCHAR(500) NULL — ścieżka do katalogu wyjściowego
|
||||
- `is_active` TINYINT(1) DEFAULT 1
|
||||
- `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
- `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
|
||||
2. ALTER TABLE `order_items`:
|
||||
- ADD `project_generated` TINYINT(1) DEFAULT 0 AFTER `payload_json`
|
||||
- ADD `project_generated_at` DATETIME NULL AFTER `project_generated`
|
||||
|
||||
Wzorzec: CREATE TABLE IF NOT EXISTS, ALTER TABLE z IF NOT EXISTS check
|
||||
</action>
|
||||
<verify>Migracja wykonuje się bez błędów na stronie /settings/database</verify>
|
||||
<done>AC-1 satisfied: tabela project_mappings istnieje, kolumna project_generated dodana do order_items</done>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 2: CRUD Mapowań projektów (backend + widok)</name>
|
||||
<files>
|
||||
src/Modules/Settings/ProjectMappingController.php,
|
||||
src/Modules/Settings/ProjectMappingRepository.php,
|
||||
resources/views/settings/project-mappings.php,
|
||||
resources/scss/modules/_project-mappings.scss,
|
||||
routes/web.php,
|
||||
resources/lang/pl.php
|
||||
</files>
|
||||
<action>
|
||||
1. ProjectMappingRepository — klasa final z Medoo:
|
||||
- getAll(): array — lista wszystkich mapowań
|
||||
- getById(int $id): ?array
|
||||
- create(array $data): int
|
||||
- update(int $id, array $data): bool
|
||||
- delete(int $id): bool
|
||||
- toggleActive(int $id): bool
|
||||
|
||||
2. ProjectMappingController — wzorzec jak CompanySettingsController:
|
||||
- index() — lista mapowań + formularz dodawania
|
||||
- store() — zapis nowego mapowania (walidacja: product_name_pattern i script_name wymagane)
|
||||
- update() — edycja
|
||||
- delete() — usuwanie z potwierdzeniem OrderProAlerts
|
||||
- toggleActive() — włącz/wyłącz
|
||||
- Skanuj katalog tools/generowanie/*.py i wyświetl jako dropdown w formularzu
|
||||
|
||||
3. Widok resources/views/settings/project-mappings.php:
|
||||
- Tabela: wzorzec nazwy produktu | skrypt | katalog wyjściowy | aktywny | akcje
|
||||
- Formularz dodawania/edycji inline
|
||||
- Dropdown ze skryptami z tools/generowanie/
|
||||
- Wzorzec UI jak inne strony ustawień (kompaktowy)
|
||||
|
||||
4. Routing w web.php:
|
||||
- GET /settings/project-mappings → index
|
||||
- POST /settings/project-mappings → store
|
||||
- POST /settings/project-mappings/{id}/update → update
|
||||
- POST /settings/project-mappings/{id}/delete → delete
|
||||
- POST /settings/project-mappings/{id}/toggle → toggleActive
|
||||
|
||||
5. Dodaj pozycję w menu ustawień
|
||||
|
||||
Nie dodawaj natywnych alert()/confirm() — użyj OrderProAlerts.
|
||||
Style w SCSS, nie w widoku. CSRF: pole _token.
|
||||
</action>
|
||||
<verify>Strona /settings/project-mappings wyświetla się, CRUD działa</verify>
|
||||
<done>AC-2 satisfied: CRUD mapowań działa w panelu ustawień</done>
|
||||
</task>
|
||||
|
||||
<task type="checkpoint:human-verify" gate="blocking">
|
||||
<what-built>Migracja DB + CRUD mapowań w panelu ustawień</what-built>
|
||||
<how-to-verify>
|
||||
1. Uruchom migrację na /settings/database
|
||||
2. Przejdź do Ustawienia → Mapowanie projektów
|
||||
3. Dodaj mapowanie: wzorzec "%buteleczk%" → skrypt "buteleczki_wzor1.py"
|
||||
4. Sprawdź edycję, toggle aktywności, usuwanie
|
||||
5. Potwierdź że UI jest spójne z resztą panelu
|
||||
</how-to-verify>
|
||||
<resume-signal>Type "approved" to continue, or describe issues to fix</resume-signal>
|
||||
</task>
|
||||
|
||||
<task type="auto">
|
||||
<name>Task 3: Komenda Claude Code /wygeneruj-projekty</name>
|
||||
<files>.claude/commands/wygeneruj-projekty.md</files>
|
||||
<action>
|
||||
Utwórz plik `.claude/commands/wygeneruj-projekty.md` — skill Claude Code.
|
||||
|
||||
Treść komendy powinna instruować Claude aby:
|
||||
|
||||
1. Wczytał dane połączenia DB z .env (DB_HOST, DB_NAME, DB_USER, DB_PASS)
|
||||
|
||||
2. Odpytał bazę (mysql CLI):
|
||||
- Pobierz aktywne mapowania z project_mappings
|
||||
- Pobierz zamówienia "w realizacji": JOIN orders + order_items + order_addresses
|
||||
WHERE orders.status IN (kody statusów z grupy "w realizacji")
|
||||
AND order_items.project_generated = 0
|
||||
- Dla każdego produktu sprawdź LIKE match z product_name_pattern
|
||||
|
||||
3. Dla znalezionych produktów:
|
||||
- Wyświetl listę: zamówienie, produkt, personalizacja, dane kupującego
|
||||
- Zinterpretuj personalizację AI-em (wyciągnij imiona, datę, życzenia)
|
||||
- Pokaż co zamierza wygenerować i zapytaj o potwierdzenie
|
||||
|
||||
4. Po potwierdzeniu:
|
||||
- Uruchom skrypt: python tools/generowanie/{script_name} --parametry
|
||||
- Po sukcesie: UPDATE order_items SET project_generated=1, project_generated_at=NOW() WHERE id={item_id}
|
||||
|
||||
5. Wyświetl raport końcowy
|
||||
|
||||
Ważne w instrukcji:
|
||||
- Photoshop musi być uruchomiony — sprawdź przed generowaniem
|
||||
- Dane klienta (--klient) to imię i nazwisko z order_addresses (type=customer)
|
||||
- Zawsze pytaj o potwierdzenie przed generowaniem
|
||||
- Przy błędzie skryptu — nie oznaczaj jako wygenerowane, pokaż błąd
|
||||
</action>
|
||||
<verify>Komenda /wygeneruj-projekty pojawia się w dostępnych komendach Claude Code</verify>
|
||||
<done>AC-3 satisfied: komenda działa, Claude jest silnikiem generowania</done>
|
||||
</task>
|
||||
|
||||
<task type="checkpoint:human-verify" gate="blocking">
|
||||
<what-built>Pełny przepływ generowania projektów z komendą /wygeneruj-projekty</what-built>
|
||||
<how-to-verify>
|
||||
1. Upewnij się że Photoshop jest uruchomiony
|
||||
2. W panelu dodaj mapowanie: "%buteleczk%" → "buteleczki_wzor1.py"
|
||||
3. Upewnij się że jest zamówienie "w realizacji" z produktem "buteleczka" i personalizacją
|
||||
4. Uruchom /wygeneruj-projekty w Claude Code
|
||||
5. Sprawdź: Claude znalazł zamówienie, poprawnie zinterpretował dane, zapytał o potwierdzenie
|
||||
6. Po potwierdzeniu: PSD wygenerowany, project_generated=1 w bazie
|
||||
</how-to-verify>
|
||||
<resume-signal>Type "approved" to continue, or describe issues to fix</resume-signal>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<boundaries>
|
||||
|
||||
## DO NOT CHANGE
|
||||
- tools/generowanie/buteleczki_wzor1.py (istniejący skrypt — nie modyfikuj)
|
||||
- src/Modules/Orders/OrdersController.php (nie zmieniaj istniejącej logiki)
|
||||
- Istniejące tabele DB (nie modyfikuj struktury orders, order_addresses)
|
||||
- Szablony PSD (nie modyfikuj plików projektowych)
|
||||
|
||||
## SCOPE LIMITS
|
||||
- Tylko CRUD mapowań + komenda Claude Code — brak serwisu PHP do generowania
|
||||
- Generowanie uruchamiane ręcznie komendą — brak crona/automatyzacji
|
||||
- Brak podglądu wygenerowanych projektów w panelu
|
||||
- Brak zmian w widoku listy zamówień (project_generated nie wyświetlane)
|
||||
|
||||
</boundaries>
|
||||
|
||||
<verification>
|
||||
Before declaring plan complete:
|
||||
- [ ] Migracja wykonuje się bez błędów
|
||||
- [ ] CRUD mapowań działa (dodaj, edytuj, usuń, toggle)
|
||||
- [ ] Komenda /wygeneruj-projekty poprawnie odpytuje DB
|
||||
- [ ] Claude interpretuje personalizację i prezentuje dane do potwierdzenia
|
||||
- [ ] Po potwierdzeniu — skrypt generuje PSD z poprawnymi danymi
|
||||
- [ ] project_generated = 1 po udanej generacji
|
||||
- [ ] Brak natywnych alert()/confirm() — OrderProAlerts
|
||||
- [ ] Style w SCSS, nie inline
|
||||
- [ ] CSRF w formularzach (_token)
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- Wszystkie zadania ukończone
|
||||
- Wszystkie weryfikacje przechodzą
|
||||
- Wygenerowany PSD ma poprawne dane i zachowane pozycje warstw
|
||||
- System gotowy do rozszerzenia o nowe skrypty generujące
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
After completion, create `.paul/phases/97-project-generation/97-01-SUMMARY.md`
|
||||
</output>
|
||||
152
.paul/phases/97-project-generation/97-01-SUMMARY.md
Normal file
152
.paul/phases/97-project-generation/97-01-SUMMARY.md
Normal file
@@ -0,0 +1,152 @@
|
||||
---
|
||||
phase: 97-project-generation
|
||||
plan: 01
|
||||
subsystem: automation
|
||||
tags: [photoshop, python, psd, project-generation, smart-object]
|
||||
|
||||
requires: []
|
||||
provides:
|
||||
- project_mappings table and CRUD UI
|
||||
- project_generated flag on order_items
|
||||
- Claude Code /wygeneruj-projekty command
|
||||
- Photoshop API script for PSD generation
|
||||
- Project status badges on order list and details
|
||||
affects: [future product-specific generators]
|
||||
|
||||
tech-stack:
|
||||
added: [photoshop-python-api]
|
||||
patterns: [claude-as-engine, photoshop-com-api, smart-object-text-replace]
|
||||
|
||||
key-files:
|
||||
created:
|
||||
- tools/generowanie/buteleczki_wzor1.py
|
||||
- src/Modules/Settings/ProjectMappingController.php
|
||||
- src/Modules/Settings/ProjectMappingRepository.php
|
||||
- resources/views/settings/project-mappings.php
|
||||
- .claude/commands/wygeneruj-projekty.md
|
||||
- database/migrations/20260412_000097_add_project_generation.sql
|
||||
- database/migrations/20260412_000098_rename_external_status_id_to_status_code.sql
|
||||
modified:
|
||||
- routes/web.php
|
||||
- resources/views/layouts/app.php
|
||||
- resources/lang/pl.php
|
||||
- src/Modules/Orders/OrdersController.php
|
||||
- src/Modules/Orders/OrdersRepository.php
|
||||
- resources/views/orders/show.php
|
||||
|
||||
key-decisions:
|
||||
- "Claude as generation engine — AI interprets client personalization instead of rigid PHP parser"
|
||||
- "Rename external_status_id to status_code — column held internal status, name was misleading"
|
||||
- "Position preservation via bounds+translate — Photoshop API ignores textItem.position assignment"
|
||||
|
||||
patterns-established:
|
||||
- "Smart Object text editing: save bounds before, translate after change"
|
||||
- "Claude Code command as workflow engine for semi-automated processes"
|
||||
|
||||
duration: ~120min
|
||||
started: 2026-04-12T00:00:00Z
|
||||
completed: 2026-04-12T01:30:00Z
|
||||
---
|
||||
|
||||
# Phase 97 Plan 01: Project Generation Summary
|
||||
|
||||
**Polautomatyczne generowanie projektow graficznych PSD z danych zamowien — Claude jako silnik interpretacji danych klienta, Photoshop API do podmiany tekstow w Smart Objects.**
|
||||
|
||||
## Performance
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Duration | ~120min |
|
||||
| Started | 2026-04-12 |
|
||||
| Completed | 2026-04-12 |
|
||||
| Tasks | 5 completed (3 auto + 2 checkpoints) |
|
||||
| Files created | 8 |
|
||||
| Files modified | 15+ (including rename refactor) |
|
||||
|
||||
## Acceptance Criteria Results
|
||||
|
||||
| Criterion | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| AC-1: Tabela project_mappings + kolumna project_generated | Pass | Migracja 000097 + 000098 |
|
||||
| AC-2: CRUD mapowan w panelu | Pass | Ustawienia > Mapowanie projektow |
|
||||
| AC-3: Komenda /wygeneruj-projekty | Pass | Test end-to-end z zamowieniem OP000000159 |
|
||||
|
||||
## Accomplishments
|
||||
|
||||
- Skrypt Python `buteleczki_wzor1.py` generuje PSD przez Photoshop COM API z zachowaniem pozycji warstw
|
||||
- CRUD mapowan produktow na skrypty w panelu ustawien
|
||||
- Komenda Claude Code `/wygeneruj-projekty` — Claude odpytuje DB, interpretuje personalizacje AI-em, uruchamia skrypt, oznacza w bazie
|
||||
- Flagi statusu projektow na liscie zamowien (zielona/zolta/szara ikonka) i w szczegolach (badge przy produkcie)
|
||||
- Rename `external_status_id` → `status_code` w 13+ plikach PHP — poprawka mylacej nazwy kolumny
|
||||
- Detekcja Photoshopa przed generowaniem (tasklist)
|
||||
|
||||
## Files Created/Modified
|
||||
|
||||
| File | Change | Purpose |
|
||||
|------|--------|---------|
|
||||
| `tools/generowanie/buteleczki_wzor1.py` | Created | Skrypt Photoshop API — buteleczki weselne Wzor 1 |
|
||||
| `database/migrations/20260412_000097_add_project_generation.sql` | Created | Tabela project_mappings + kolumny project_generated |
|
||||
| `database/migrations/20260412_000098_rename_external_status_id_to_status_code.sql` | Created | Rename kolumny statusu |
|
||||
| `src/Modules/Settings/ProjectMappingRepository.php` | Created | CRUD repository dla mapowan |
|
||||
| `src/Modules/Settings/ProjectMappingController.php` | Created | Kontroler CRUD mapowan |
|
||||
| `resources/views/settings/project-mappings.php` | Created | Widok ustawien mapowan |
|
||||
| `resources/scss/modules/_project-mappings.scss` | Created | Style mapowan + badge projektow |
|
||||
| `.claude/commands/wygeneruj-projekty.md` | Created | Komenda Claude Code |
|
||||
| `routes/web.php` | Modified | Routing + instancjacja kontrolera |
|
||||
| `resources/views/layouts/app.php` | Modified | Link w sidebar menu |
|
||||
| `resources/lang/pl.php` | Modified | Tlumaczenia |
|
||||
| `resources/scss/app.scss` | Modified | Import SCSS modulu |
|
||||
| `src/Modules/Orders/OrdersRepository.php` | Modified | projects_done/total w query + rename |
|
||||
| `src/Modules/Orders/OrdersController.php` | Modified | projectBadge() + productsHtml() |
|
||||
| `resources/views/orders/show.php` | Modified | Badge przy produkcie |
|
||||
| `src/Modules/Orders/OrderImportRepository.php` | Modified | Rename |
|
||||
| `src/Modules/Automation/OrderStatusAgedService.php` | Modified | Rename |
|
||||
| `src/Modules/Automation/AutomationService.php` | Modified | Rename |
|
||||
| `src/Modules/Settings/AllegroOrderImportService.php` | Modified | Rename |
|
||||
| `src/Modules/Settings/AllegroStatusSyncService.php` | Modified | Rename |
|
||||
| `src/Modules/Settings/ShopproStatusSyncService.php` | Modified | Rename |
|
||||
| `src/Modules/Settings/ShopproPaymentStatusSyncService.php` | Modified | Rename |
|
||||
| `src/Modules/Settings/ShopproOrderMapper.php` | Modified | Rename |
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
### Summary
|
||||
|
||||
| Type | Count | Impact |
|
||||
|------|-------|--------|
|
||||
| Scope additions | 2 | Valuable improvements |
|
||||
| Auto-fixed | 3 | Import namespace fixes |
|
||||
|
||||
### Scope Additions
|
||||
|
||||
1. **Rename `external_status_id` → `status_code`** — odkryto podczas testow komendy ze nazwa kolumny jest mylaca. Refactor 13+ plikow + migracja.
|
||||
|
||||
2. **Flagi statusu projektow na liscie/szczegolach** — uzytkownik poprosil o wizualna informacje o statusie generacji. Dodano ikonki i badge.
|
||||
|
||||
### Auto-fixed Issues
|
||||
|
||||
1. **Bledne importy w ProjectMappingController** — `App\Core\Template\Template` → `App\Core\View\Template`, `App\Core\Translation\Translator` → `App\Core\I18n\Translator`, `App\Core\Session\Flash` → `App\Core\Support\Flash`
|
||||
|
||||
## Decisions Made
|
||||
|
||||
| Decision | Rationale | Impact |
|
||||
|----------|-----------|--------|
|
||||
| Claude jako silnik generowania | AI lepiej interpretuje rozne formaty personalizacji niz sztywny parser PHP | Komenda zamiast serwisu PHP |
|
||||
| Rename external_status_id | Kolumna trzyma wewnetrzny status, nazwa mylaca | 13+ plikow zmienionych, czytelniejszy kod |
|
||||
| Bounds+translate dla pozycji | textItem.position nie dziala w Photoshop API | Niezawodne zachowanie pozycji warstw |
|
||||
|
||||
## Next Phase Readiness
|
||||
|
||||
**Ready:**
|
||||
- System gotowy do rozszerzenia o nowe skrypty (kubki, pudełka, itp.)
|
||||
- Mapowania w panelu — latwe dodawanie nowych produktow
|
||||
- Struktura warstw PSD uporzadkowana (imie_zenskie, imie_meskie, data, zyczenia)
|
||||
|
||||
**Concerns:**
|
||||
- Kazdy nowy produkt wymaga osobnego skryptu Python + uporządkowania warstw PSD
|
||||
|
||||
**Blockers:** None
|
||||
|
||||
---
|
||||
*Phase: 97-project-generation, Plan: 01*
|
||||
*Completed: 2026-04-12*
|
||||
Reference in New Issue
Block a user