| collect.go | ||
| go.mod | ||
| LICENSE | ||
| main.go | ||
| model.go | ||
| postmortem | ||
| README.md | ||
| render.go | ||
| ui.go | ||
🔥 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 или новее.
# Клонируйте или скопируйте файлы проекта, затем:
cd postmortem
go build -o postmortem .
Кросс-компиляция под другие платформы:
# 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 .
Использование
./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:
# 🔥 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
Чтобы задать редактор явно:
EDITOR=code ./postmortem # VS Code
EDITOR=nvim ./postmortem # Neovim
Принципы
Утилита построена на концепции blameless post mortem: цель разбора инцидента — улучшить систему и процессы, а не найти виноватого. Подробнее о методологии читайте в сопроводительном шаблоне postmortem_template.md.