mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 21:46:35 +00:00
docs: update plans
This commit is contained in:
@@ -1 +1,43 @@
|
|||||||
# Backlog
|
# Backlog
|
||||||
|
|
||||||
|
## 1. Популярность инструментов — оценка: S
|
||||||
|
|
||||||
|
Поле `popularity` (число) в записи реестра; проставить всем текущим инструментам значения вручную (crop/resize/rescale выше остальных).
|
||||||
|
|
||||||
|
- Сортировка выдачи поиска и каталога: сначала популярные среди равного скоринга.
|
||||||
|
- Опционально: блок «Популярные» под героем поиска на главной.
|
||||||
|
|
||||||
|
## 2. Иконки инструментов — оценка: M
|
||||||
|
|
||||||
|
У каждой записи поле `icon`; отображается в результатах поиска, каталоге `/list-tools`, легендах шагов цепочки.
|
||||||
|
|
||||||
|
- Источник иконок: готовый открытый набор (Lucide, MIT) — подобрать по смыслу для всех инструментов; недостающие — нейтральная заглушка.
|
||||||
|
- Рендер одним SVG-спрайтом, без отдельных файлов на иконку.
|
||||||
|
- Кропотливая часть — подбор 50 осмысленных иконок, техника тривиальна.
|
||||||
|
|
||||||
|
## 3. Карточки результатов поиска — оценка: S
|
||||||
|
|
||||||
|
Заменить строки выдачи на карточки: иконка слева, название и описание справа; сетка в одну-две колонки в зависимости от размера героя.
|
||||||
|
|
||||||
|
- Зависимость: лучше делать после №1 (иконка), но можно раньше с плейсхолдером.
|
||||||
|
- Сохранить клавиатурную навигацию ↑↓ Enter Esc и подсветку активной карточки.
|
||||||
|
|
||||||
|
## 4. Несколько языков — оценка: L, разбита на подзадачи
|
||||||
|
|
||||||
|
### 4a. Инфраструктура i18n — M
|
||||||
|
|
||||||
|
Модуль словарей (`locales/ru.ts`, `locales/en.ts`), функция перевода с фолбэком на базовый язык, состояние активной локали (localStorage), переключатель в шапке, обновление `<html lang>`.
|
||||||
|
|
||||||
|
### 4b. Перевод каркаса интерфейса — S/M
|
||||||
|
|
||||||
|
Шапка, кнопки, подписи полей и состояний («Результат появится здесь», тексты ошибок исполнителя), главная-герой, страница каталога.
|
||||||
|
|
||||||
|
### 4c. Перевод контента реестра — L по объёму, механическая
|
||||||
|
|
||||||
|
Вынести title/description инструментов и label/options параметров в словари локалей с фолбэком. Объём: ~51 инструмент плюс параметры — основной трудозатратный кусок волны.
|
||||||
|
|
||||||
|
### 4d. Поиск по любому языку — M
|
||||||
|
|
||||||
|
Матчинг запроса против названий/описаний во всех поддерживаемых локалях сразу (не только активной); нормализация: нижний регистр, ё→е, снятие диакритики (NFD). Скоринг существующий сохраняется, лучшая локаль даёт балл.
|
||||||
|
|
||||||
|
Транслитерация ru↔en наизусть — не входит, отдельно при необходимости.
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
# План: герой-поиск v2 — иконки, популярность, карточки
|
||||||
|
|
||||||
|
> Статус: план к выполнению.
|
||||||
|
|
||||||
|
## 1. Что получается
|
||||||
|
|
||||||
|
Выдача поиска на главной превращается из списка строк в сетку карточек: слева иконка инструмента, справа название и описание. Инструменты получают два новых поля реестра — `popularity` (приоритет в выдаче) и `icon` (идентификатор иконки). Иконки переиспользуются в каталоге `/list-tools` и в легендах шагов цепочки. Поиск работает по-прежнему: нечёткий скоринг, клавиатура ↑↓ Enter Esc.
|
||||||
|
|
||||||
|
## 2. Данные реестра
|
||||||
|
|
||||||
|
- **`popularity?: number`** (0–100, по умолчанию 50) — приоритет внутри равного скоринга запроса. Значения проставляются вручную осознанно: базовые операции (обрезка, размер, удаление фона, конвертации JPG/PNG) — 80–95; цветовые и геометрия — 40–70; узкие и генераторы — 10–30.
|
||||||
|
- **`icon?: string`** — имя иконки из набора Lucide. Явный словарь-маппинг для всех инструментов в одном месте; отсутствие записи даёт нейтральную заглушку (Wrench).
|
||||||
|
- Тест целостности расширяется: популярность в диапазоне, иконка — непустая строка из разрешённого набора.
|
||||||
|
|
||||||
|
## 3. Иконки
|
||||||
|
|
||||||
|
Зависимость `lucide-svelte` (MIT) — один пакет, иконки рендерятся компонентами, дерево не раздувается за счёт выборочного импорта.
|
||||||
|
|
||||||
|
Маппинг ведётся одним объектом `tool-icons.ts` рядом с реестром: 51 запись вида `'crop-png': Crop`. Подбор по смыслу: обрезка — Crop, размер — Scaling, поворот — RotateCw, отражение — FlipHorizontal2, оттенок — Palette, размытие — Droplets, резкость — Focus, удаление фона — Scissors, анализ — Info и так далее; для семейств конвертаций — FileInput/FileOutput варианты.
|
||||||
|
|
||||||
|
Иконка появляется в трёх местах: карточка выдачи, карточка каталога `/list-tools`, легенда шага цепочки («Шаг N: [icon] Название»).
|
||||||
|
|
||||||
|
## 4. Карточки выдачи
|
||||||
|
|
||||||
|
- Сетка: одна колонка на узком экране, две — начиная со среднего героя.
|
||||||
|
- Композиция карточки: квадрат иконки слева, справа название (полужирное) и однострочное описание с обрезкой.
|
||||||
|
- Состояния hover и активной с клавиатуры — тот же акцент подсветки, что сейчас.
|
||||||
|
- Сортировка выдачи: скоринг запроса ↓, затем популярность ↓, затем название.
|
||||||
|
|
||||||
|
## 5. Этапы и проверки
|
||||||
|
|
||||||
|
- **A. Реестр** — поля `popularity` и `icon`, словарь иконок на все 51, расширение тестов целостности. Проверка: `pnpm test/check`.
|
||||||
|
- **B. Карточки поиска** — сетка выдачи с иконками и учётом популярности, клавиатура без изменений. Проверка: визуально, `check/build`.
|
||||||
|
- **C. Распространение** — иконки в каталоге `/list-tools` и легендах звеньев. Проверка: визуально, `build`.
|
||||||
|
- **D. Итог** — полный прогон и смоук §8.
|
||||||
|
|
||||||
|
## 6. Смоук-чеклист
|
||||||
|
|
||||||
|
1. Пустой запрос на герое показывает популярные первыми после первого символа.
|
||||||
|
2. Запрос «обрез» поднимает карточку обрезки выше прочих совпадений.
|
||||||
|
3. У каждой карточки есть иконка; у большинства — разные, соответствующие смыслу.
|
||||||
|
4. Наведение и стрелки подсвечивают карточку; Enter открывает инструмент.
|
||||||
|
5. Открытый инструмент работает как раньше: параметры в колонках, результат, скачивание.
|
||||||
|
6. Цепочка: легенда каждого шага показывает иконку выбранного инструмента.
|
||||||
|
7. `/list-tools`: карточки категорий с иконками, ссылки работают.
|
||||||
|
8. Регресс: старые сценарии (загрузка файла, цепочка, скачивание) не изменились.
|
||||||
|
|
||||||
|
## 7. Критерии готовности
|
||||||
|
|
||||||
|
- Все инструменты имеют иконку и ненулевую популярность; тесты это гарантируют.
|
||||||
|
- Выдача поиска — сетка карточек с корректной сортировкой и живой клавиатурой.
|
||||||
|
- Иконки присутствуют в поиске, каталоге и легендах шагов.
|
||||||
|
- `test/check/build` зелёные, смоук §6 пройден.
|
||||||
|
|
||||||
|
## 8. Что сознательно не делаем
|
||||||
|
|
||||||
|
- Автоматический расчёт популярности из статистики использования — значения ручные.
|
||||||
|
- Собственный набор SVG-иконок — берём готовый открытый.
|
||||||
|
- Переводы названий и поиск на других языках — отдельная i18n-волна.
|
||||||
|
- Изображения-превью в карточках поиска — только иконка и текст.
|
||||||
Reference in New Issue
Block a user