postmortem/README.md
2026-07-21 14:52:07 +03:00

6.3 KiB
Executable file
Raw Blame History

🔥 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: nanovimvi (первый найденный)
  • macOS: open
  • Windows: notepad

Чтобы задать редактор явно:

EDITOR=code ./postmortem   # VS Code
EDITOR=nvim ./postmortem   # Neovim

Принципы

Утилита построена на концепции blameless post mortem: цель разбора инцидента — улучшить систему и процессы, а не найти виноватого. Подробнее о методологии читайте в сопроводительном шаблоне postmortem_template.md.