# 🔥 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`.