[CL-PIX-7269] Доставка recovery-коммитов: фикс типа hiddenUI и разрешение merge-конфликта #918
No reviewers
Labels
No labels
ci-failing
duplicate
needs-rebase
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
europa-tech-srl/europatech!918
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "agent-fullstack/pix-7269-recovery"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
Доставлены восстановленные (recovery) коммиты ветки
agent-fullstack/pix-7269-recovery(задача PIX-7269) вmasterчерез PR. Разрешён merge-конфликт и устранён блокер доставки:hiddenUIв LI.FI-виджете возвращён к объектной форме{ poweredBy: true }(типHiddenUIConfigв@lifi/widget@4.0.0). Коммит5c42917b7ошибочно сменил его на массив['poweredBy'], что блокировалоtscвapp/и всю доставку. Файлы:app/src/components/p2p/SwapContent.tsx,app/src/pages/cabinet/SwapPage.tsx.api/src/__tests__/dotenv.setup.ts— объединены комментарий загрузки.envи проверкаREDIS_URL.api/vitest.config.ts— сохранены иGOOGLE_CLIENT_ID/APPLE_CLIENT_ID, иREDIS_URL.app/src/__tests__/public-compliance-claims.test.ts— сохранены guardrail-тесты PIX-7494.api/src/__tests__/rls.security.test.tsметкиsecurity-scan-ignoreперенесены на строки самих вызовов$queryRawUnsafe/$executeRawUnsafe(контролируемый тестовый SQL без пользовательского ввода) — иначе pre-commit security-scan блокировал коммит.Зачем
Recovery-коммиты IR/контент/тесты были зафиксированы локально, но не доезжали до
masterиз-за конфликта слияния и реальной ошибки типов. Это закрывает потерю доставленной работы (PIX-13302).План тестирования
Локальный pre-push гейт пройден полностью:
api tsc --noEmit,app tsc --noEmit,app build(176 маршрутов prerender),api vitest— 189 тестов passed. Финальную проверку выполнит CI Forgejo на PR.Где могу ошибаться
master— ~22 файла. Перед merge нужен зелёный CI.api/src/controllers/public.controller.tsв основном worktree принадлежит другому агенту и в доставку НЕ включена.## Что сделано Реализована поддержка hreflang тегов для всех 9 основных языков приложения (en, ru, fr, de, es, it, pt, ja, ko, zh). **Изменения:** 1. **app/src/utils/seo.ts** — обновлена функция `buildHreflang()`: - Генерирует hreflang для всех 9 языков + x-default - Каждый язык (кроме EN) использует формат /{lang}/path (301-редирект на /path?lang=xx) - x-default указывает на EN как fallback для нечисленных языков 2. **app/index.html** — добавлены статические hreflang теги: - 9 основных языков: ru, fr, de, es, it, pt, ja, ko, zh - EN (canonical) - x-default 3. **app/src/utils/__tests__/seo.test.ts** — обновлены тесты: - Проверяют наличие всех 9 языков - Проверяют правильные href с языковыми префиксами - Проверяют что EN остаётся canonical (без префикса) 4. **app/src/components/shared/__tests__/SEOHead.test.tsx** — новые тесты: - Проверяют что SEOHead правильно инжектирует динамические hreflang теги - Проверяют атрибут data-seo-dynamic для отслеживания ## Архитектура - **Статические hreflang (index.html)** — базовые теги для root пути - **Динамические hreflang (SEOHead.tsx)** — per-page теги генерируются React компонентом - **Server-side hreflang (route-meta.ts)** — для prerendered страниц генерируются на сервере 301-редиректы от /{lang}/path к /path?lang=xx управляются через Cloudflare middleware, canonical headers явно установлены SEOHead.tsx. ## План тестирования - [x] npm run test — все 1735 тестов прошли - [x] Проверка сео smoke tests - [x] Проверка что build успешно завершается - [x] Проверка что dist/index.html содержит все hreflang теги ## Где могу ошибаться - Архитектура с 301-редиректами может быть оптимизирована дальше (но текущий подход SEO-правильный) - Нужно мониторить GSC чтобы убедиться что crawl budget используется эффективно - Некоторые search engines могут требовать дополнительной конфигурации hreflang (но Google это стандартное решение) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>## Что сделано 1. **app**: добавлен `@types/node` и включены типы Node.js в tsconfig.json 2. **app**: исправлены две ошибки типизации в SwapContent.tsx и SwapPage.tsx - `hiddenUI: ['poweredBy']` → `hiddenUI: { poweredBy: true }` - Нужно объект с булевыми свойствами вместо массива строк 3. **contracts**: добавлены явные типизации в тестах для EuropaTimelock deploy() - EuropaLending.test.ts: 4 типизации - EuropaRMM.test.ts: 1 типизация - EuropaTimelock.integration.test.ts: 3 типизации ## Результат - app/tsc: 0 ошибок ✓ - api/tsc: 0 ошибок ✓ - contracts/tsc: 0 ошибок ✓ Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>