Files
ss-tools/specs/023-clean-repo-enterprise/ux_reference.md

116 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# UX Reference: Clean Repository Enterprise Preparation
**Feature Branch**: `023-clean-repo-enterprise`
**Created**: 2026-03-03
**Status**: Draft
## 1. User Persona & Context
* **Who is the user?**: Release Manager и инженер сопровождения корпоративной платформы.
* **What is their goal?**: Подготовить и выпустить clean-дистрибутив без тестовых данных и без зависимости от внешнего интернета.
* **Context**: Работа в изолированной сети организации.
* **Interaction Model (explicit)**: Пользовательский интерфейс реализуется как **интерактивный консольный TUI-скрипт на базе `ncurses` (или полностью совместимого аналога)**. Веб-интерфейс для этого сценария не является целевым.
## 2. The "Happy Path" Narrative
Оператор запускает TUI-скрипт и видит главный экран подготовки enterprise clean-релиза. В форме выбирается релиз-кандидат и профиль `enterprise-clean`, затем запускается проверка одной горячей клавишей. На экране в реальном времени обновляются этапы проверки: чистота данных, проверка источников ресурсов и изоляция от внешнего интернета. После завершения пользователь получает итоговый статус `COMPLIANT`, ID отчёта и короткую сводку для передачи в релизный процесс. Весь путь проходится в одном ncurses-экране без переходов во внешние инструменты.
## 3. Interface Mockups
### CLI Interaction (TUI / ncurses)
```bash
$ clean-release-tui
```
```text
┌──────────────────────────────────────────────────────────────────────────────┐
│ Enterprise Clean Release Validator (TUI) │
├──────────────────────────────────────────────────────────────────────────────┤
│ Candidate: [2026.03.03-rc1 ] Profile: [enterprise-clean]│
│ │
│ Checks: │
│ [ ] Data Purity (no test/demo payloads) │
│ [ ] Internal Sources Only (company servers) │
│ [ ] No External Internet Endpoints │
│ [ ] Release Manifest Consistency │
│ │
│ Allowed Internal Sources: │
│ - repo.intra.company.local │
│ - artifacts.intra.company.local │
│ - pypi.intra.company.local │
│ │
│ Status: READY │
├──────────────────────────────────────────────────────────────────────────────┤
│ F5 Run Check F6 Export Report F10 Exit │
└──────────────────────────────────────────────────────────────────────────────┘
```
```text
┌──────────────────────────────────────────────────────────────────────────────┐
│ Check Progress │
├──────────────────────────────────────────────────────────────────────────────┤
│ [1/4] Data Purity................................. PASS │
│ [2/4] Internal Sources Only....................... PASS │
│ [3/4] No External Internet Endpoints.............. PASS │
│ [4/4] Manifest Consistency........................ PASS │
│ │
│ FINAL STATUS: COMPLIANT │
│ Report ID: CCR-2026-03-03-001 │
├──────────────────────────────────────────────────────────────────────────────┤
│ Enter View Details F6 Export Report F10 Exit │
└──────────────────────────────────────────────────────────────────────────────┘
```
### UI Layout & Flow (for TUI screen states)
**Screen/Component**: Main ncurses validation screen
* **Layout**:
* Верхний блок: выбор релиз-кандидата и профиля.
* Средний блок: список проверок и прогресс.
* Нижний блок: журнал сообщений/ошибок и подсказки горячих клавиш.
* **Key Elements**:
* **Candidate Field**: выбор проверяемого релиз-кандидата.
* **Profile Field**: фиксированное значение `enterprise-clean`.
* **Allowed Sources Panel**: видимый список допустимых внутренних серверов.
* **Violations Table (details mode)**: нарушения с категорией, путём и рекомендацией.
* **States**:
* **Default**: готовность к запуску проверки.
* **Running**: поэтапный прогресс проверок.
* **Compliant**: успешное завершение и экспорт отчёта.
* **Blocked**: выпуск заблокирован до устранения нарушений.
## 4. The "Error" Experience
**Philosophy**: Ошибка должна блокировать выпуск и сразу показывать конкретное нарушение и путь исправления в терминах релизного процесса.
### Scenario A: Найдены тестовые/демо-данные
* **User Action**: Нажимает `F5 Run Check`.
* **System Response (TUI)**:
* Итог: `FINAL STATUS: BLOCKED`
* Запись в деталях: `Category=Data Purity`, `Path=<artifact-path>`, `Action=Remove prohibited content`
* **Recovery**: Удалить артефакты, повторно запустить проверку из того же экрана.
### Scenario B: Найден внешний источник ресурсов
* **System Response (TUI)**:
* Итог: `FINAL STATUS: BLOCKED`
* Запись в деталях: `Category=External Source`, `Endpoint=<external-host>`, `Action=Replace with approved internal server`
* **Recovery**: Заменить источник на внутренний из реестра разрешённых, затем повторить проверку.
### Scenario C: Недоступен внутренний сервер ресурсов
* **System Response (TUI)**:
* Этап помечается как `FAILED: Internal source unavailable`
* Итог: `BLOCKED (operational risk)`
* **Recovery**: Восстановить доступность внутреннего сервера и перезапустить проверку (F5).
## 5. Tone & Voice
* **Style**: Операционный, короткий, однозначный.
* **Terminology**:
* Использовать: «enterprise clean-профиль», «релиз-кандидат», «внутренний сервер», «блокировка выпуска».
* Не использовать размытые формулировки вроде «возможно» или «вероятно».
* В сообщениях о нарушениях указывать: категорию, объект, действие для исправления.