153 lines
6.7 KiB
Markdown
153 lines
6.7 KiB
Markdown
---
|
|
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*
|