Added readme
This commit is contained in:
parent
2438306073
commit
b7a01d28a5
1 changed files with 159 additions and 0 deletions
159
README.md
Normal file
159
README.md
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
# 🔥 Postmortem
|
||||
|
||||
Интерактивная CLI-утилита для создания документов разбора инцидентов (post mortem) в формате Markdown. Проводит через все секции шаг за шагом: где нужно — предлагает выбор из вариантов, где нужно — свободный ввод.
|
||||
|
||||
---
|
||||
|
||||
## Возможности
|
||||
|
||||
- Интерактивный пошаговый ввод с цветным выводом в терминале
|
||||
- Выбор из вариантов для фиксированных полей (статус, severity, SLA)
|
||||
- Ввод в цикле для списков: хронология, «5 Почему», action items, факторы
|
||||
- Автоматическое имя файла на основе названия инцидента и текущей даты
|
||||
- Открытие готового файла в системном редакторе (`$EDITOR`)
|
||||
- Нет внешних зависимостей — только стандартная библиотека Go
|
||||
|
||||
---
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
postmortem/
|
||||
├── go.mod — модуль Go (без внешних зависимостей)
|
||||
├── main.go — точка входа, сохранение файла, открытие редактора
|
||||
├── model.go — структуры данных (PostMortem, ActionItem, и др.)
|
||||
├── ui.go — цвета, ввод, выбор из меню, коллекторы списков
|
||||
├── collect.go — обход всех секций, формирует структуру PostMortem
|
||||
└── render.go — рендер Markdown из структуры PostMortem
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Установка и сборка
|
||||
|
||||
**Требования:** Go 1.18 или новее.
|
||||
|
||||
```bash
|
||||
# Клонируйте или скопируйте файлы проекта, затем:
|
||||
cd postmortem
|
||||
go build -o postmortem .
|
||||
```
|
||||
|
||||
Кросс-компиляция под другие платформы:
|
||||
|
||||
```bash
|
||||
# macOS (Intel)
|
||||
GOOS=darwin GOARCH=amd64 go build -o postmortem_macos .
|
||||
|
||||
# macOS (Apple Silicon)
|
||||
GOOS=darwin GOARCH=arm64 go build -o postmortem_macos_arm .
|
||||
|
||||
# Windows
|
||||
GOOS=windows GOARCH=amd64 go build -o postmortem.exe .
|
||||
|
||||
# Linux
|
||||
GOOS=linux GOARCH=amd64 go build -o postmortem_linux .
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Использование
|
||||
|
||||
```bash
|
||||
./postmortem
|
||||
```
|
||||
|
||||
Утилита последовательно проведёт через все секции документа:
|
||||
|
||||
```
|
||||
╔══════════════════════════════════════════════╗
|
||||
║ 🔥 Post Mortem v1.0 ║
|
||||
╚══════════════════════════════════════════════╝
|
||||
Blameless post mortem — цель: улучшить систему
|
||||
|
||||
────────────────────────────────────────────────────────────
|
||||
📋 Основная информация
|
||||
────────────────────────────────────────────────────────────
|
||||
→ Название инцидента: Падение API авторизации
|
||||
|
||||
▸ Статус документа:
|
||||
[1] 🟡 Draft
|
||||
[2] 🔵 In Review
|
||||
[3] 🟢 Resolved
|
||||
→ Выберите (1-3): 1
|
||||
✔ 🟡 Draft
|
||||
...
|
||||
```
|
||||
|
||||
По завершении утилита предложит имя файла (по умолчанию генерируется автоматически) и откроет его в редакторе.
|
||||
|
||||
---
|
||||
|
||||
## Секции документа
|
||||
|
||||
| Секция | Тип ввода |
|
||||
|--------|-----------|
|
||||
| Основная информация | Текст + выбор из меню |
|
||||
| Краткое резюме | Свободный текст |
|
||||
| Влияние (Impact) | Текст + выбор из меню |
|
||||
| Хронология | Цикл: время + описание |
|
||||
| Корневая причина | Текст + анализ «5 Почему» |
|
||||
| Сопутствующие факторы | Цикл: список строк |
|
||||
| Что сработало хорошо | Цикл: список строк |
|
||||
| Что можно улучшить | Цикл: список строк |
|
||||
| Action Items | Цикл: задача + ответственный + дедлайн |
|
||||
| Ссылки | Текст (опционально) |
|
||||
|
||||
---
|
||||
|
||||
## Пример результата
|
||||
|
||||
Утилита генерирует файл вида `postmortem_2024-03-12_падение_api.md`:
|
||||
|
||||
```markdown
|
||||
# 🔥 Post Mortem: Падение API авторизации
|
||||
|
||||
> **Статус:** 🟡 Draft
|
||||
> **Severity:** SEV-1 (критический)
|
||||
> **Дата инцидента:** 12.03.2024
|
||||
> **Автор:** @ivan
|
||||
|
||||
---
|
||||
|
||||
## 💥 Влияние (Impact)
|
||||
|
||||
| Параметр | Значение |
|
||||
|----------|----------|
|
||||
| Длительность | 2ч 33мин |
|
||||
| Затронутые пользователи | ~5000 / 100% трафика |
|
||||
...
|
||||
|
||||
## 📌 Action Items
|
||||
|
||||
| # | Задача | Ответственный | Дедлайн | Статус |
|
||||
|---|--------|---------------|---------|--------|
|
||||
| 1 | Добавить валидацию конфигов в CI | @ivan | 01.04 | 🔲 Открыта |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Редактор по умолчанию
|
||||
|
||||
Утилита открывает файл через переменную окружения `$EDITOR`. Если она не задана, используется:
|
||||
|
||||
- **Linux:** `nano` → `vim` → `vi` (первый найденный)
|
||||
- **macOS:** `open`
|
||||
- **Windows:** `notepad`
|
||||
|
||||
Чтобы задать редактор явно:
|
||||
|
||||
```bash
|
||||
EDITOR=code ./postmortem # VS Code
|
||||
EDITOR=nvim ./postmortem # Neovim
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Принципы
|
||||
|
||||
Утилита построена на концепции **blameless post mortem**: цель разбора инцидента — улучшить систему и процессы, а не найти виноватого. Подробнее о методологии читайте в сопроводительном шаблоне `postmortem_template.md`.
|
||||
Loading…
Add table
Reference in a new issue