chore(specs): move clean-repo-enterprise spec from 020 to 023
This commit is contained in:
116
specs/023-clean-repo-enterprise/ux_reference.md
Normal file
116
specs/023-clean-repo-enterprise/ux_reference.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# 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-профиль», «релиз-кандидат», «внутренний сервер», «блокировка выпуска».
|
||||
* Не использовать размытые формулировки вроде «возможно» или «вероятно».
|
||||
* В сообщениях о нарушениях указывать: категорию, объект, действие для исправления.
|
||||
Reference in New Issue
Block a user