feat(report): ship daily report v1 experience
This commit is contained in:
@@ -4,10 +4,12 @@
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_DIR="/home/long/project/llm-intelligence"
|
||||
. "$PROJECT_DIR/scripts/report_utils.sh"
|
||||
DB_URL="${DATABASE_URL:-host=/var/run/postgresql dbname=llm_intelligence user=long sslmode=disable}"
|
||||
REPORT_DATE=$(date +%Y-%m-%d)
|
||||
REPORT_DATE="$(report_date_value)"
|
||||
LOG_FILE="/tmp/llm_hub_daily_${REPORT_DATE}.log"
|
||||
FEISHU_WEBHOOK="${FEISHU_WEBHOOK:-}"
|
||||
MODEL_COUNT=""
|
||||
|
||||
# 日志函数
|
||||
log() {
|
||||
@@ -16,9 +18,14 @@ log() {
|
||||
|
||||
# 错误处理
|
||||
error_exit() {
|
||||
local output_path=""
|
||||
log "❌ 错误: $1"
|
||||
# 降级:复制昨日报告
|
||||
fallback_report
|
||||
if [ -f "$(report_markdown_path "$REPORT_DATE")" ]; then
|
||||
output_path="$(report_markdown_path "$REPORT_DATE")"
|
||||
fi
|
||||
track_report_state "$DB_URL" "$REPORT_DATE" "failed" "${MODEL_COUNT:-}" "" "$output_path" "$1" >> "$LOG_FILE" 2>&1 || true
|
||||
# 发送告警
|
||||
if [ -n "$FEISHU_WEBHOOK" ]; then
|
||||
send_alert "$1"
|
||||
@@ -28,14 +35,24 @@ error_exit() {
|
||||
|
||||
# 降级:复制昨日报告
|
||||
fallback_report() {
|
||||
local yesterday=$(date -d "yesterday" +%Y-%m-%d)
|
||||
local yesterday_md="${PROJECT_DIR}/reports/daily/daily_report_${yesterday}.md"
|
||||
local today_md="${PROJECT_DIR}/reports/daily/daily_report_${REPORT_DATE}.md"
|
||||
local yesterday yesterday_md today_md yesterday_html today_html
|
||||
yesterday=$(date -d "yesterday" +%Y-%m-%d)
|
||||
yesterday_md="${PROJECT_DIR}/$(report_markdown_path "$yesterday")"
|
||||
today_md="${PROJECT_DIR}/$(report_markdown_path "$REPORT_DATE")"
|
||||
yesterday_html="${PROJECT_DIR}/$(report_html_path "$yesterday")"
|
||||
today_html="${PROJECT_DIR}/$(report_html_path "$REPORT_DATE")"
|
||||
|
||||
if [ -f "$yesterday_md" ]; then
|
||||
cp "$yesterday_md" "$today_md"
|
||||
sed -i "s/${yesterday}/${REPORT_DATE}/g" "$today_md"
|
||||
sed -i "1s/^/# [数据延迟] /" "$today_md"
|
||||
if [ -f "$yesterday_html" ]; then
|
||||
cp "$yesterday_html" "$today_html"
|
||||
sed -i "s/${yesterday}/${REPORT_DATE}/g" "$today_html"
|
||||
fi
|
||||
if [ -f "$today_md" ] && [ -f "$today_html" ]; then
|
||||
archive_report_artifacts "$REPORT_DATE" >> "$LOG_FILE" 2>&1 || true
|
||||
fi
|
||||
log "⚠️ 已复制昨日报告并标记[数据延迟]"
|
||||
else
|
||||
log "⚠️ 无昨日报告可供复制"
|
||||
@@ -81,29 +98,25 @@ if ! go run scripts/generate_daily_report.go >> "$LOG_FILE" 2>&1; then
|
||||
fi
|
||||
log "✅ 日报生成完成"
|
||||
|
||||
# 4. 归档
|
||||
log "4️⃣ 归档报告..."
|
||||
ARCHIVE_DIR="reports/daily/$(date +%Y/%m)"
|
||||
mkdir -p "$ARCHIVE_DIR"
|
||||
cp "reports/daily/daily_report_${REPORT_DATE}.md" "$ARCHIVE_DIR/" 2>/dev/null || true
|
||||
cp "reports/daily/html/daily_report_${REPORT_DATE}.html" "$ARCHIVE_DIR/" 2>/dev/null || true
|
||||
# 4. 校验归档
|
||||
log "4️⃣ 校验归档..."
|
||||
if [ ! -f "$(report_archive_markdown_path "$REPORT_DATE")" ] || [ ! -f "$(report_archive_html_path "$REPORT_DATE")" ]; then
|
||||
error_exit "日报归档失败"
|
||||
fi
|
||||
log "✅ 归档完成"
|
||||
|
||||
# 5. 更新 daily_report 表
|
||||
log "5️⃣ 更新日报记录..."
|
||||
psql "$DB_URL" -c "
|
||||
INSERT INTO daily_report (report_date, status, model_count, output_path, created_at, updated_at)
|
||||
VALUES ('${REPORT_DATE}', 'generated', ${MODEL_COUNT}, 'reports/daily/daily_report_${REPORT_DATE}.md', NOW(), NOW())
|
||||
ON CONFLICT (report_date) DO UPDATE SET
|
||||
status = 'generated',
|
||||
model_count = EXCLUDED.model_count,
|
||||
output_path = EXCLUDED.output_path,
|
||||
updated_at = NOW()
|
||||
" >> "$LOG_FILE" 2>&1
|
||||
# 5. 校验运行记录
|
||||
log "5️⃣ 校验运行记录..."
|
||||
if ! psql "$DB_URL" -Atqc "select count(*) from daily_report where report_date = DATE '${REPORT_DATE}' and status = 'generated';" | awk '{ exit !($1 >= 1) }'; then
|
||||
error_exit "daily_report 未写入 generated 记录"
|
||||
fi
|
||||
if ! psql "$DB_URL" -Atqc "select count(*) from report_runs where report_date = DATE '${REPORT_DATE}' and status = 'generated';" | awk '{ exit !($1 >= 1) }'; then
|
||||
error_exit "report_runs 未写入 generated 记录"
|
||||
fi
|
||||
log "✅ 日报记录更新完成"
|
||||
|
||||
log "🎉 每日流水线全部完成!"
|
||||
log "📄 Markdown: reports/daily/daily_report_${REPORT_DATE}.md"
|
||||
log "🌐 HTML: reports/daily/html/daily_report_${REPORT_DATE}.html"
|
||||
log "📄 Markdown: $(report_markdown_path "$REPORT_DATE")"
|
||||
log "🌐 HTML: $(report_html_path "$REPORT_DATE")"
|
||||
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user