fix(排序): 同日文章 date 补全时分秒 + EdgeOne 部署重试增强

现象:小乖同一天发的第二篇排到了第一篇后面。

根因:front matter 的 date 只写到年月日(写入侧只收得到日期),
同一天多篇的时间戳完全并列 → 排序退化成比标题,前台/后台都错。

改动:
- 数据(6 篇):用目录名/slug 里的时间戳把 date 补全为
  'YYYY-MM-DDTHH:MM:SS+08:00',slug 即写作时刻。每篇仅 1 行 diff。
  2026-10-05 两篇(必须)、2026-06-02 / 06-03 四篇(同一 bug 的历史遗留)。
- 写入侧根治
  - editor-api/src/posts.mjs:新建时「只到天」补北京时间此刻;
    保存时「同日保真」——没换日子则原有时分秒一字符不动。
  - write-server/src/lib/posts.ts:parseDate 按 Asia/Shanghai 归日,
    列表同天排序不再受 UTC 时区漂移影响。
- 回归测试:新增 editor-api/test/date-time.mjs(8 项,自带一次性临时仓库)。
- .cnb.yml:EdgeOne stage 重试 3 次/20s → 5 次/30s。
  构建节点到 api.edgeone.ai 偶发 15s 超时会被 CLI 误报
  「Invalid EDGEONE_PAGES_API_TOKEN」,纯网络抖动,令牌没坏。
- .gitignore:忽略 *.zip 与 .edgeone/(误留的 blog.zip 达 361MB)。
This commit is contained in:
zqlit committed 2026-10-05 21:54:03 +08:00
1 parent 5d16c8c8d6
commit 5e9d328841
12 files changed
+234 -15

No files matched your search

+11 -7
View File
@@ -178,21 +178,25 @@
trap record EXIT
test -n "$EDGEONE_API_TOKEN" || { echo "❌ 缺 EDGEONE_API_TOKEN"; exit 1; }
# ★ 重试 3 次:EdgeOne CLI 第一步要访问 api.edgeone.ai 做 region 检查,
# 构建节点到该域名的偶发超时(实测 15s AxiosError timeout)会让 CLI 直接
# 报「Invalid EDGEONE_PAGES_API_TOKEN」—— 令牌其实没坏,纯网络抖动。
# ★ 重试 5 次 / 退避 30s:EdgeOne CLI 第一步要访问 api.edgeone.ai 做 region
# 检查,构建节点到该域名的偶发超时(实测 15s AxiosError timeout)会让 CLI
# 直接报「Invalid EDGEONE_PAGES_API_TOKEN」—— 令牌其实没坏,纯网络抖动。
# 2026-10-04 复现:同一令牌在本机部署秒过,CNB 节点那一次 15s 超时误报。
# 2026-10-05 build 4 又踩同一次抖动(3 次重试全挂 → 白报一封失败邮件)。
# 最坏耗时 5×(15s 超时 + 30s 退避) ≈ 4 分钟,远小于本 stage 的 20m。
# 失败重试比让整条流水线变红、白发一封失败邮件划算得多。
ok_deploy=0
for i in 1 2 3; do
for i in 1 2 3 4 5; do
if npx edgeone pages deploy ./public -n hugo-blog -t "$EDGEONE_API_TOKEN" --area overseas; then
ok_deploy=1
break
fi
echo "⚠️ EdgeOne 第 $i 次部署失败(多为构建节点网络抖动),20s 后重试…"
sleep 20
if [ "$i" -lt 5 ]; then
echo "⚠️ EdgeOne 第 $i 次部署失败(多为构建节点网络抖动),30s 后重试…"
sleep 30
fi
done
test "$ok_deploy" = 1 || { echo "❌ EdgeOne 连续 3 次部署失败"; exit 1; }
test "$ok_deploy" = 1 || { echo "❌ EdgeOne 连续 5 次部署失败"; exit 1; }
echo "✅ EdgeOne 部署完成"
- name: 上报部署状态