159 lines
No EOL
6.3 KiB
Markdown
Executable file
159 lines
No EOL
6.3 KiB
Markdown
Executable file
# 🔥 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`. |