Repository navigation
[Product Gate] D2 — журнал решений по новому интерфейсу #113
Copy link
Copy link
Open
Description
D2 — живой журнал продуктовых решений
Этот issue фиксирует ход продуктового интервью по переработке интерфейса design/next-ui-d.
Статус: Product Gate / уточнение требований.
Код и production solver не изменяются до явного подтверждения владельца:
Общее понимание достигнуто. Можно переходить к спецификации и реализации.
Основа дизайна
- Сохраняется визуальная основа Concept D2: тёмный графитовый интерфейс, жёлтый акцент, голубая живая информация, нижняя навигация.
- Основной сценарий — операторская работа на телефоне шириной 360–390 px; затем desktop/tablet.
- Текущая ветка прототипа:
design/next-ui-concept-d. - Текущий D2 является демонстрационным прототипом с упрощёнными формулами, а не интеграцией production solver.
Верхняя панель приложения
- Высота строго
26 px, панель закреплена сверху. - В одной строке: выбранный формат печатного листа, количество заданий, пластин и листов.
- Счётчики двухстрочные: крупное число сверху, подписи
ЗАДАНИЯ,ПЛАСТИНЫ,ЛИСТЫснизу. - Машина не показывается, но пока остаётся в данных/логике.
- Справа отдельные кнопки:
+, TXT, настройки; настройки справа. +без маркера раскрытия; TXT и настройки с маркером.- Панель не меняет высоту при выборе строки.
Пресеты печатного листа
- Постоянная панель пресетов удаляется.
- Нажатие на оранжевую кнопку текущего пресета открывает overlay под верхней панелью без сдвига страницы.
- Кнопки переносятся слева направо; выбор применяется и закрывает overlay.
- Закрытие также по клику вне панели и Esc.
- Есть
Свой формат. - Текущий набор:
616×446,616×466,636×448,646×466,650×313,716×326,716×336,716×516,500×350,450×320.
Универсальный маркер раскрытия
- Название: Маркер раскрытия.
- Только на элементах, которые открывают/закрывают скрытую поверхность.
- Круг
2×2 px, без рамки, свечения и тени; расположен сверху справа с отступом около 4–5 px. - Закрыто: мягко мигающий красный; открыто: мягко мигающий зелёный.
- При
prefers-reduced-motion— статичный. - Одновременно открыта только одна поверхность; новая закрывает предыдущую.
Таблица заказов
- Отдельный блок «Быстрый заказ» удаляется.
- Первая строка под заголовком — редактируемая строка нового заказа.
Видовудалено: каждый вид является отдельным заказом.- Термин везде: Красочность.
- Колонки:
Название,Формат,Ширина, кнопка перестановки сторон,Высота,Красочность,Выпуск,Страниц,Тираж, копирование, удаление. - Заголовок таблицы —
6 px. - Обычная строка —
8 px. - Активная строка —
16 px, чёрная; одновременно активна только одна строка. - Столбцы занимают всю ширину. Узкие столбцы подстраиваются под содержимое, название забирает остаток.
- Копирование и удаление видимы всегда; кликабельна вся ячейка действия.
- Нажатие действия не обязано предварительно выбирать строку.
Новая строка и кнопка +
- Новые заказы создаются только сверху, сразу под заголовком.
- Начальное состояние строки полностью пустое: название пустое, формат
Не выбран, ширина/высота пустые, красочность и выпуск не выбраны, страницы/тираж пустые. - Название необязательно; все остальные поля обязательны и должны быть валидны.
- Пока строка неполная,
+неактивен. - После
+строка становится обычным заказом, а сверху создаётся новая пустая чёрная строка; фокус переходит в название. - Повторное нажатие не создаёт несколько пустых строк.
- Выбор существующего заказа очищает незавершённую верхнюю строку и отключает
+. - Незавершённая строка восстанавливается после перезагрузки, если пользователь не выбрал другой заказ намеренно.
Автосохранение
- Изменения существующего заказа сохраняются сразу, без кнопки «Сохранить».
- Версионированный ключ, например
uimposition.workspace.v1. - У каждого заказа стабильный
id. - Сохраняются: выбранный пресет, заказы, незавершённая верхняя строка, счётчики и служебная последовательность.
- Схема проверяется при восстановлении; повреждённые данные не должны ломать приложение.
- Ввод сохраняется с debounce около 150 ms и принудительно перед закрытием страницы.
Удаление и отмена
- Удаление немедленное, без модального подтверждения.
- Снизу около 5 секунд:
Заказ удалён · Вернуть. - Отменить можно только последнее удаление.
- Восстанавливается прежняя позиция, данные и тот же
id. - После удаления активной становится верхняя пустая строка.
- После отмены активной становится восстановленная строка.
Копирование
- Копирование выполняется сразу и не требует предварительного выбора строки.
- Копия вставляется непосредственно под оригиналом, получает новый стабильный
idи становится активной. - Верхняя строка очищается,
+отключается. - Имена:
Визитка→Визитка 2→Визитка 3. - При копировании
Визитка 2используется базаВизиткаи следующий номер. - Удалённые номера не используются повторно.
- Максимальный когда-либо использованный номер сохраняется в
localStorage.
Название заказа
- Название необязательно.
- Пустому названию автоматически присваивается
Заказ 1,Заказ 2и далее. - Номер не повторяется после удаления и сохраняется между запусками.
- Пользовательское название имеет приоритет.
Формат изделия и размеры
- Варианты:
A4,A5,A6,A7,Произвольный. - Стандарт отображается крупно (
A4) и мелко (210×297). - Произвольный формат отображается крупно размером и мелко подписью
произвольный. - Стандартные размеры по умолчанию книжные:
- A4 —
210×297; - A5 —
148×210; - A6 —
105×148; - A7 —
74×105.
- A4 —
- Выбор стандарта заполняет ширину и высоту.
- Кнопка между шириной и высотой только переставляет стороны:
90×50 ↔ 50×90; она не задаёт голову/ноги изделия. - При ручном вводе стандарт распознаётся автоматически только при точном совпадении, включая повёрнутый вариант.
- Никаких допусков:
210×297— A4,209×297— произвольный. - Точность ширины и высоты — до
0,01 мм. - Можно вводить точку и запятую; точка автоматически превращается в запятую.
- Лишние нули не показываются:
90,00→90,90,50→90,5,90,05остаётся90,05.
Красочность
- Быстрые варианты:
1+0,1+1,4+0,4+1,4+4,Ручной ввод. - Ручной формат:
число+число, пробелы допускаются и автоматически удаляются. - Ведущие нули удаляются:
04+01→4+1. - Первая сторона: от
1до20. - Вторая сторона: от
0до20. - Минимум
1+0;0+0и любые варианты с нулевой первой стороной запрещены.
Выпуск
- Быстрые варианты:
0,2,3,5 мм,Ручной ввод. - Диапазон: от
0до20 мм. - Итоговая точность и шаг:
0,1 мм. - Точка и запятая допускаются; отображается запятая.
- Значение округляется до ближайшей десятой во время ввода и повторно при Enter/выходе из поля.
- Пример:
2,55→2,6. - Значения выше 20 автоматически ограничиваются до
20; ниже 0 — до0. - Лишние нули не показываются.
Страницы и тираж
Страниц: только целое число от1и выше.Тираж: только целое число от1и выше.- Тираж можно вводить с пробелами и без.
- В интерфейсе цифры автоматически группируются по три:
12500→12 500,1000000→1 000 000. - В расчёте хранится целое число без разделителей.
- Ведущие нули удаляются.
Вместимость изделия
- Максимальный размер динамический и зависит от выбранной печатной области после полей/допусков.
- Проверяется итоговый размер изделия вместе с выпусками:
width + 2×bleed,height + 2×bleed. - Заказ допустим, если помещается прямо или после производственного поворота на 90°.
- При этом исходные ширина/высота заказа не меняются автоматически.
- Во время заполнения таблицы не показывается отметка «помещается только с поворотом»; это выводится только в результатах монтажа.
Направление экземпляров на монтаже
- В таблице заказов нет определения головы/ног и нет четырёх направлений.
- Четыре направления существуют только в рассчитанных монтажах:
↑,→,↓,←. - На каждом экземпляре изделия обязательно показывается своё направление, чтобы допечатник понимал поворот файла.
- Крупное название/номер позиции (
A1) находится по центру и всегда читается относительно всего печатного листа — не поворачивается вместе с изделием. - Стрелка находится рядом с текстом и её положение всегда совпадает с направлением:
↑над текстом;→справа;↓под текстом;←слева.
- Обозначения и стрелки в PDF — чёрные векторные элементы, пригодные для чёрно-белой печати.
Продолжение журнала
Следующие ответы и решения добавляются комментариями в этот issue, а после завершения Product Gate будут собраны в формальную спецификацию и задачи реализации.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
sunpole commentedon Aug 2, 2026
Решение после вопроса 69 — обозначение экземпляра на монтаже
В центре каждого экземпляра показывается не название заказа, а связка:
номер заказа.номер страницыПример:
01.1— заказ 01, страница 1.Правила, уже согласованные ранее, сохраняются:
↑сверху,→справа,↓снизу,←слева);Следующий уточняющий вопрос: использовать ли ведущий ноль у номера заказа (
01.1) или выводить без него (1.1).sunpole commentedon Aug 2, 2026
Решение по обозначению экземпляра на монтаже
Центральное обозначение выводится без ведущего нуля в формате:
номер заказа.номер страницыПримеры:
1.1— заказ 1, страница 1;1.2— заказ 1, страница 2;10.1— заказ 10, страница 1.Обозначение остаётся крупным, горизонтальным и читаемым относительно всего печатного листа. Название заказа внутри экземпляра не показывается.
sunpole commentedon Aug 2, 2026
Решение по центральному обозначению экземпляра
Вместо номера заказа используется сокращение от названия заказа:
первые 4 символа названия.номер страницыПримеры:
Визи.1— заказ «Визитка», страница 1;Лист.2— заказ «Листовка», страница 2;Букл.4— заказ «Буклет», страница 4.Название/обозначение располагается крупно по центру экземпляра и всегда читается относительно всего печатного листа. Стрелка поворота остаётся рядом с обозначением и размещается со стороны своего направления. Если название короче четырёх символов, используется оно целиком.
sunpole commentedon Aug 2, 2026
Решение по обозначению экземпляров — верхний регистр
Утверждено:
ВИЗИ.1,ЛИСТ.2,БУКЛ.4;sunpole commentedon Aug 2, 2026
Решение по совпадающим четырёхсимвольным обозначениям
Владелец отклонил добавление цифрового суффикса (
ВИЗИ1,ВИЗИ2). При совпадении первых четырёх символов нужно сохранять длину обозначения в 4 символа и заменять четвёртый символ, чтобы получить различимые коды. Точное правило выбора заменяющего символа уточняется следующим вопросом продуктового интервью.sunpole commentedon Aug 2, 2026
Решение: устранение совпадений обозначений на монтаже
Если первые 4 символа названия у нескольких заказов совпадают, обозначение расширяется до 5 символов:
01,02,03и далее;Примеры:
ВИЗ01.1;ВИЗ02.1;ВИЗ02.2.Обозначение остаётся крупным, чёрным, векторным и читаемым относительно всего печатного листа.
sunpole commentedon Aug 2, 2026
Коррекция и готовность стартовой страницы
ВИЗ01.1,ВИЗ02.1) как логики только при совпадении признана неверной и не считается окончательно утверждённой.sunpole commentedon Aug 2, 2026
Уточнение к вопросу 75 и переход к этапам
Исправление владельца:
01,02,03применяется только при совпадении первых четырёх символов у разных заказов.ВИЗИ.1.ВИЗ01.1,ВИЗ02.1.Разделение оставшихся продуктовых вопросов
Решение по процессу: не продолжать бесконечный опрос по одному вопросу. Для следующих разделов сначала готовить групповой проект решения с рекомендуемыми значениями, а владельцу выносить только реальные блокирующие развилки.
sunpole commentedon Aug 2, 2026
Переход к реализации стартовой страницы
Владелец проекта запросил создание полного кода новой стартовой страницы по согласованным решениям. Перед началом изменения файлов остаётся формальный Product Gate из
AGENTS.md: требуется явная фраза владельцаОбщее понимание достигнуто. Можно переходить к спецификации и реализации.После неё работа перейдёт к спецификации, отдельной ветке, реализации HTML/CSS/JS, проверкам на 360/390 px и desktop, затем PR.
sunpole commentedon Aug 2, 2026
Уточнение: D3 — рабочая стартовая страница
Владелец уточнил целевой подход:
Следующий технический шаг: аудит фактической структуры текущего приложения и карта интеграции D3 → существующие функции/скрипты.
sunpole commentedon Aug 2, 2026
Точное понимание D3 после проверки
mainПроверено фактическое состояние GitHub: в
mainуже существует рабочий R3-маршрут/app/, объединённый ранее, с подключёнными state/persistence, product-row model, uniform calculation adapter и PDF export.Поэтому целевая работа трактуется так:
/app/index.html,/app/app.css,/app/app.jsкак новая оболочка существующего рабочего маршрута;src/sheet-press-presets.js;src/application-state.js;src/application-state-persistence.js;src/local-state-repository.js;src/application-product-rows.js;src/operator-workspace-calculation.js;src/operator-workspace-export.js;Иными словами: D3 = новый интерфейс поверх уже работающих функций и скриптов R3.
sunpole commentedon Aug 2, 2026
Product Gate закрыт — переход к реализации D3
Владелец явно подтвердил:
Полная спецификация опубликована в #114. Реализация идёт одним vertical slice: новая стартовая table-first страница D3 поверх существующих R2 application state/repositories, product-row actions и R3 calculation pipeline. Production solver, формулы и PDF-алгоритмы в этом slice не меняются.
Следующие изменения выполняются в отдельной ветке и draft PR с TDD на pure D3 seam и Chromium evidence для
/app/.sunpole commentedon Aug 3, 2026
Дополнение: отдельный Full HD-режим D3
По решению владельца компактная мобильная версия не должна просто растягиваться на рабочем мониторе. Для калькулятора
/app/добавлена отдельная desktop-композиция для экранов Full HD-класса.Утверждённая граница:
6 / 8 / 16 pxдля заголовка, обычной и активной строки;1600×900и рассчитан прежде всего на1920×1080;26 px;24 px, обычная строка24 px, активная строка38 px;Реализация и Chromium evidence находятся в draft PR #115. Exact head проверки:
c585253f0d61584ac02231d3af3c78608d1197ae.sunpole commentedon Aug 3, 2026
Решение владельца — увеличенный desktop D3 без изменения мобильного режима
Для рабочих ПК утверждён отдельный крупный режим интерфейса. Он включается только медиазапросом
@media (min-width: 1600px) and (min-height: 900px); базовые мобильные размеры 360/390 px и их стили не меняются.Реализованные Full HD-метрики:
44 px;34 px;32 px;48 px;Exact head:
d54700b12f8b77987cb145d2d7f9f966a081b920.Проверки GitHub Actions:
12/12success;Artifact:
8852635998, digestsha256:59b360f998c8949e5638bc9cc10dbd9b5e617503baa5e7194400b4db788e4cb7.sunpole commentedon Aug 3, 2026
Уточнение владельца: фирменный логотип в шапке
Владелец заметил отсутствие логотипа в новой D3-шапке. Решение: вернуть существующий знак
uI; на мобильном показывать компактную марку, на Full HD — марку с названиемuImposition.Исправление выполнено в PR #115 на head
0733777ffd72516b1e17051ce51f01fa6bbf4779. Мобильный вид 360/390 px сохранён, горизонтального overflow нет; Quality checks и Chromium/PDF workflow прошли успешно.