many fixes

This commit is contained in:
2026-07-03 11:18:40 +07:00
parent d909618ced
commit 79fd200e57
12 changed files with 348 additions and 18 deletions
+63
View File
@@ -0,0 +1,63 @@
# Product
## Register
product
## Users
Системные администраторы, DevOps- и хостинг-инженеры, которые массово мигрируют
почтовые ящики между IMAP-серверами (source → destination). Контекст использования —
рабочая сессия миграции: пользователь заводит задачу, добавляет десятки аккаунтов
(в т.ч. импортом из CSV), запускает копирование и следит за живым прогрессом по
тысячам писем на аккаунт. Работают с плотными таблицами, читают счётчики
Copied / Skipped / Errors и статусы, ждут точности и предсказуемости, а не «красоты».
_(Выведено из README и кода; пользователь был недоступен при уточнении — подтвердить/скорректировать.)_
## Product Purpose
Однобинарный Go-сервер (встраивает React-SPA), который **копирует** содержимое
IMAP-ящиков между аккаунтами: неразрушающе (только APPEND, ничего не удаляет),
с дедупликацией по Message-ID, идемпотентно и с возобновляемостью. Успех =
инженер запускает миграцию, видит достоверный прогресс в реальном времени, а
повторный запуск честно скипает уже перенесённое и показывает ровно то, что
произошло в этом прогоне. Ценность — доверие к цифрам и отсутствие сюрпризов
на больших объёмах.
## Brand Personality
Три слова: **технично, точно, спокойно**. Голос — инструмент оператора, а не
маркетинговый продукт: краткие подписи, честные статусы, никакого хайпа.
Эмоциональная цель — уверенность и контроль. Интерфейс должен читаться как
приборная панель / консоль: плотная информация, монохром с одним функциональным
акцентом, состояние системы всегда очевидно.
## Anti-references
- Яркие SaaS-лендинги с hero-метриками, градиентным текстом и карточками-плитками.
- «Дружелюбные» дашборды в стиле генеративного AI: cream/paper-фон, скруглённые
пастельные карточки, иконка+заголовок+текст в бесконечной сетке.
- Любой декор ради декора (glassmorphism, тени-свечения без функции).
- Разреженные «воздушные» лейауты — здесь плотность данных это фича, а не проблема.
## Design Principles
1. **Числам верят.** Счётчики и статусы обязаны быть достоверны и однозначны;
визуальная неоднозначность статуса — это баг, а не косметика.
2. **Плотность — это уважение к оператору.** Компактные таблицы и моноширинные
табличные цифры важнее «воздуха».
3. **Один акцент, одна семантика.** Янтарь = внимание/действие; зелёный = успех;
красный = ошибка; жёлтый = ожидание. Цвет всегда несёт смысл.
4. **Состояние системы всегда видно.** Прогресс, скип, ошибка и последняя причина
сбоя должны переживать перезагрузку страницы и не теряться.
5. **Спокойная инженерная сдержанность.** Никакого хайпа и лишнего движения;
анимация только там, где отражает реальный процесс.
## Accessibility & Inclusion
Базовый уровень: читаемый контраст (цель — WCAG AA для основного текста, особенно
приглушённого `--fg-dim` на тёмных панелях), корректный `prefers-reduced-motion`
для live-прогресса, различимость статусов не только цветом (иконка/подпись рядом
с цветом для дальтоников). Формальной сертификации не требуется — инструмент для
узкого технического круга, но контраст и reduced-motion соблюдаем осознанно.