116 lines
9.3 KiB
Markdown
116 lines
9.3 KiB
Markdown
# 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-профиль», «релиз-кандидат», «внутренний сервер», «блокировка выпуска».
|
||
* Не использовать размытые формулировки вроде «возможно» или «вероятно».
|
||
* В сообщениях о нарушениях указывать: категорию, объект, действие для исправления. |