Report Generator Tool Index
Mô tả công cụ: generate_pir.py
Script: /tools/report/generate_pir.py
Mục đích: Chuyển đổi raw incident data từ scratchpad.json thành PIR draft có cấu trúc, sử dụng self-hosted LLM và graph traversal để bổ sung context.
Workflow chi tiết
scratchpad.json
│
▼ load_scratchpad()
Đọc incident_id, target_service, raw logs
│
▼ find_service_context()
Đọc /services/{target_service}.md → lấy service metadata
│
▼ fetch_llm_generation()
Gọi OKF_LLM_BASE_URL với prompt tiếng Việt blended
(3 retries với exponential backoff: 2s, 4s, 8s)
│
├── LLM thành công → serialize frontmatter + AI banner + prose
└── LLM fail → generate_fallback_skeleton() → status: draft + warning banner
│
▼
Ghi ra /irp/incidents/pending-draft.md
Environment variables
OKF_LLM_BASE_URL=http://self-hosted-llm-cluster.internal:8000/v1
OKF_LLM_MODEL=llama3-70b-instruct-resilience-tuned
Cách chạy
# Chạy với scratchpad mặc định
python tools/report/generate_pir.py
# Chỉ định scratchpad và output cụ thể
python tools/report/generate_pir.py \
--scratchpad irp/ingestion/scratchpad.json \
--output irp/incidents/pending-draft.md
# Dry-run: in ra console, không ghi file
python tools/report/generate_pir.py --dry-run
Graceful degradation
Khi LLM không khả dụng: tool tự động tạo skeleton document với status: draft và banner cảnh báo. CI pipeline exit với warning (non-blocking) — không cản trở incident response workflow. MR được auto-label ai-generation/partial.