fix: align stage preland picker and demo layout
deploy-preland / deploy barbariskatest (push) Skipped
deploy-preland / deploy zoomstage.online (push) Successful in 19s
deploy-preland / deploy zoompixel.online (push) Skipped
deploy-preland / deploy zoompixel.ru (push) Skipped

This commit is contained in:
Panfilov Konstantin committed 2026-10-17 07:39:37 +03:00
1 parent 4fa9eebcfb
commit 45e20ed0cd
128 files changed
+196 -13

No files matched your search

@@ -0,0 +1,53 @@
# Preland stage: picker, UTM и структура примеров — план реализации
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** На `zoomstage.online` синхронизировать список файлов с Index, гарантировать полный resolved-набор UTM при claim-переходе и привести размещение demo-ассетов к Index.
**Architecture:** Preland остаётся единственным источником resolved UTM: `index.php` нормализует собственные семь меток, сохраняет внешние параметры и передаёт их в claim. Форма имеет полноценный синхронный `accept`, а API policy только подтверждает/актуализирует его. Демонстрационные файлы получают тот же layout, что и Index: `images/demo/<example>/` и `images/demo-N/<example>/`.
**Tech Stack:** PHP 8.2, inline JavaScript, Git, Gitea Actions staging deployment, Docker PHP checks.
**Spec:** пользовательское поручение от 2026-10-17 в текущем чате.
## Global Constraints
- Публиковать только ветку `staging`; `main` и production-домены не менять.
- В переходе сохранять семь параметров `indpic`, `theme`, `degr`, `registration`, `bchoice`, `chb`, `tp` и все внешние scalar query-параметры, кроме `key`.
- Поддерживаемые picker-форматы определяются тем же API contract, что и Index; drop остаётся server-side content gate.
- Ассеты не конвертировать и не переименовывать; переместить без потери файлов.
## Review Focus
- Первый клик по picker до завершения `fetch(upload-policy)` всё равно предлагает PDF и raster-набор.
- Type-in без UTM передаёт все семь default-значений в адрес claim.
- `rnd` разрешается до редиректа и не утекает как `rnd`.
- Внешняя `utm_source` и произвольный `subid` сохраняются в claim URL.
- `indpic=2` читает ассеты из `images/demo-2/`, а `indpic=1` — из `images/demo/`.
### Task 1: Контракт picker и UTM
**Files:**
- Modify: `components/form.php`, `tests/check-upload-admission.php`
- Create: `tests/check-utm-redirect-contract.php`
- [ ] Написать проверки синхронного PDF/raster `accept` и полного type-in resolved URL; увидеть RED.
- [ ] Добавить PDF в fallback `accept` и при необходимости явный единый builder query; увидеть GREEN.
### Task 2: Структура demo-ассетов
**Files:**
- Move: `images/demo/1/*` → `images/demo/*`, `images/demo/2/*` → `images/demo-2/*`
- Modify: `template.php`, `components/examples.php`
- Create: `tests/check-demo-layout.php`
- [ ] Написать проверку Index-совместимого layout и путей рендеринга; увидеть RED.
- [ ] Переместить файлы и заменить построение путей; увидеть GREEN.
### Task 3: Документация, stage-release и регрессия
**Files:**
- Modify: `README.md`, `../known-base/Проекты/Преленд — anton-preland.md`, `../known-base/Инфраструктура/Версионируемый конфиг ZoomPixel Preland.md`
- [ ] Зафиксировать resolved UTM contract и asset layout.
- [ ] Прогнать все Preland PHP checks в Docker, push только `staging`, проверить опубликованный stage HTML и assets.