diff --git a/.gitea/workflows/cd.yaml b/.gitea/workflows/cd.yaml index 91d401c2..d6fba524 100644 --- a/.gitea/workflows/cd.yaml +++ b/.gitea/workflows/cd.yaml @@ -389,9 +389,12 @@ jobs: if [ -n "$CREATED_AT" ]; then # 2026-05-03 ogt: 修復 stale 偵測 — Docker 回傳 "2006-01-02 15:04:05.999999999 -0700 MST" # date -d 不接受奈秒小數點與末尾時區縮寫(CST/MST 等),導致 CREATED_EPOCH=0 → stale 永不觸發 - # 修法:sed 去除奈秒 (.NNN...) 和末尾縮寫 (空格+大寫字母),GNU date 才能正確解析 + # 2026-06-18 Codex: act-runner 容器可能沒有 GNU date / python3; + # node 由 bootstrap 安裝,作為 Docker CreatedAt 的穩定解析 fallback。 CREATED_CLEAN=$(echo "$CREATED_AT" | sed 's/\.[0-9]*//' | sed 's/ [A-Z][A-Z]*$//') CREATED_EPOCH=$(date -d "$CREATED_CLEAN" +%s 2>/dev/null || \ + node -e 'const raw = process.argv[1] || ""; const cleaned = raw.replace(/\.\d+/, "").replace(/\s+[A-Z]{2,4}$/, ""); const m = cleaned.match(/^(\d{4}-\d{2}-\d{2})\s+(\d{2}:\d{2}:\d{2})\s+([+-]\d{2})(\d{2})$/); if (!m) process.exit(1); const ms = Date.parse(`${m[1]}T${m[2]}${m[3]}:${m[4]}`); if (!Number.isFinite(ms)) process.exit(1); console.log(Math.floor(ms / 1000));' \ + "$CREATED_AT" 2>/dev/null || \ python3 -c "import sys, datetime, re; ts = re.sub(r'\\.\d+', '', sys.argv[1]); ts = re.sub(r'\\s+[A-Z]{2,4}$', '', ts.strip()); print(int(datetime.datetime.strptime(ts, '%Y-%m-%d %H:%M:%S %z').timestamp()))" \ "$CREATED_AT" 2>/dev/null || echo 0) NOW_EPOCH=$(date +%s) diff --git a/apps/api/src/services/ai_agent_report_no_write_analysis_runtime.py b/apps/api/src/services/ai_agent_report_no_write_analysis_runtime.py index 93ffd73f..60afc296 100644 --- a/apps/api/src/services/ai_agent_report_no_write_analysis_runtime.py +++ b/apps/api/src/services/ai_agent_report_no_write_analysis_runtime.py @@ -24,7 +24,7 @@ _EXPECTED_CURRENT_TASK = "P2-407" _EXPECTED_NEXT_TASK = "P2-408" _EXPECTED_CANONICAL_ROOM = "AwoooI SRE 戰情室" _EXPECTED_CANONICAL_ROOM_ENV = "SRE_GROUP_CHAT_ID" -# 2026-06-18 Codex: 部署錨點;不改變 P2-407 no-write snapshot 或 CD lock 行為。 +# 2026-06-18 Codex: 部署錨點;不改變 P2-407 no-write snapshot 或 CD lock 解析行為。 _EXPECTED_SOURCE_SCHEMAS = { "ai_agent_report_status_board_v1", "ai_agent_report_automation_review_v1",