Files
llm-intelligence/scripts/review/review_status_summary.sh

69 lines
2.3 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -euo pipefail
GIT_STATUS_PATH="${1:?git status file required}"
BACKLOG_ROWS_PATH="${2:?backlog rows file required}"
DIRTY_WORKTREE=0
if [[ -s "$GIT_STATUS_PATH" ]]; then
DIRTY_WORKTREE=1
fi
OPEN_ISSUES=$(grep -c '^|' "$BACKLOG_ROWS_PATH" || true)
NO_DELTA=true
FOCUS="risk_aging,unverified,backlog"
AGING_FOCUS="$(python3 - <<'PY' "$BACKLOG_ROWS_PATH"
from pathlib import Path
import sys
rows=[]
for line in Path(sys.argv[1]).read_text(encoding='utf-8').splitlines():
if not line.startswith('|'):
continue
parts=[p.strip() for p in line.strip('|').split('|')]
if len(parts) < 6:
continue
issue_id=parts[0]
priority=parts[2]
first_exposed=parts[3]
impact=parts[5].replace('次','').strip()
try:
impact_num=int(''.join(ch for ch in impact if ch.isdigit()) or '0')
except ValueError:
impact_num=0
rows.append((priority, first_exposed, -impact_num, issue_id, impact_num))
priority_rank={'P0':0,'P1':1,'P2':2}
rows.sort(key=lambda x:(priority_rank.get(x[0],9), x[1], x[2], x[3]))
focus=[]
for priority, first_exposed, neg_impact, issue_id, impact_num in rows[:3]:
focus.append(f"{issue_id}:{priority}:{impact_num}")
print(','.join(focus))
PY
)"
SAME_DAY_NO_DECISION_FOCUS="$(python3 - <<'PY' "$BACKLOG_ROWS_PATH"
from pathlib import Path
import sys
rows=[]
for line in Path(sys.argv[1]).read_text(encoding='utf-8').splitlines():
if not line.startswith('|'):
continue
parts=[p.strip() for p in line.strip('|').split('|')]
if len(parts) < 6:
continue
issue_id=parts[0]
priority=parts[2]
impact=parts[5].replace('次','').strip()
try:
impact_num=int(''.join(ch for ch in impact if ch.isdigit()) or '0')
except ValueError:
impact_num=0
rows.append((priority, -impact_num, issue_id, impact_num))
priority_rank={'P0':0,'P1':1,'P2':2}
rows.sort(key=lambda x:(priority_rank.get(x[0],9), x[1], x[2]))
focus=[]
for priority, neg_impact, issue_id, impact_num in rows[:2]:
focus.append(f"{issue_id}:{priority}:{impact_num}")
print(','.join(focus))
PY
)"
printf 'REVIEW_STATUS no_delta=%s dirty_worktree=%d open_issues=%d focus=%s aging_focus=%s same_day_no_decision_focus=%s\n' "$NO_DELTA" "$DIRTY_WORKTREE" "$OPEN_ISSUES" "$FOCUS" "$AGING_FOCUS" "$SAME_DAY_NO_DECISION_FOCUS"