From b7a01d28a5e597428b28ad48f3a5cfda695c0233 Mon Sep 17 00:00:00 2001 From: Magnus Root Date: Wed, 25 Mar 2026 09:18:04 +0300 Subject: [PATCH] Added readme --- README.md | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..5ed8687 --- /dev/null +++ b/README.md @@ -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`. \ No newline at end of file