package main import "time" // collect проводит пользователя через все секции и возвращает заполненный PostMortem. func collect() PostMortem { var pm PostMortem // ── Основная информация ────────────────────────────────────────────────── section("📋 Основная информация") pm.Title = ask("Название инцидента:") pm.Status = choose("Статус документа:", []string{ "🟡 Draft", "🔵 In Review", "🟢 Resolved", }) pm.Severity = choose("Severity:", []string{ "SEV-1 (критический)", "SEV-2 (высокий)", "SEV-3 (средний)", "SEV-4 (низкий)", }) pm.IncidentDate = askDefault("Дата инцидента (ДД.ММ.ГГГГ):", time.Now().Format("02.01.2006")) pm.PostmortemDate = time.Now().Format("02.01.2006") pm.Author = ask("Автор (@имя):") pm.Participants = ask("Участники разбора (через запятую):") // ── Краткое резюме ─────────────────────────────────────────────────────── section("📝 Краткое резюме") pm.Summary = ask("Опишите инцидент в 2–3 предложениях:") // ── Impact ─────────────────────────────────────────────────────────────── section("💥 Влияние (Impact)") pm.Duration = ask("Длительность (напр. 2ч 33мин):") pm.AffectedUsers = ask("Затронутые пользователи (напр. ~5000 / 100% трафика):") pm.AffectedServices = ask("Затронутые сервисы:") pm.FinancialLoss = askDefault("Финансовые потери:", "не оценивались") pm.SLABreach = choose("Нарушение SLA:", []string{"Да", "Нет", "Под вопросом"}) pm.SupportTickets = askDefault("Обращений в поддержку:", "—") // ── Хронология ─────────────────────────────────────────────────────────── section("🕐 Хронология") pm.Timeline = collectTimeline() // ── Корневая причина ───────────────────────────────────────────────────── section("🔍 Корневая причина") pm.RootCause = ask("Опишите корневую причину:") pm.WhyAnalysis = collectWhyAnalysis() // ── Сопутствующие факторы ──────────────────────────────────────────────── section("⚠️ Сопутствующие факторы") pm.Contributing = collectList("Что усугубило ситуацию?", "Фактор") // ── Что сработало / что улучшить ───────────────────────────────────────── section("✅ Что сработало хорошо") pm.WentWell = collectList("Что сработало хорошо?", "Пункт") section("🔧 Что можно улучшить") pm.ToImprove = collectList("Что можно улучшить?", "Пункт") // ── Action Items ───────────────────────────────────────────────────────── section("📌 Action Items") pm.ActionItems = collectActionItems() // ── Ссылки ─────────────────────────────────────────────────────────────── section("🔗 Ссылки") pm.TicketLink = askDefault("Тикет инцидента (URL):", "[LINK]") pm.LogsLink = askDefault("Логи / дашборд (URL):", "[LINK]") pm.PRLink = askDefault("PR / деплой (URL):", "[LINK]") pm.MeetingLink = askDefault("Запись встречи (URL):", "[LINK]") return pm }