Added readme
This commit is contained in:
parent
2438306073
commit
b7a01d28a5
1 changed files with 159 additions and 0 deletions
159
README.md
Normal file
159
README.md
Normal file
|
|
@ -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`.
|
||||||
Loading…
Add table
Reference in a new issue