# 103 发布 0630002 — 回退说明 **发布编号:** `20260630-020301-14f46cf` **Git commit:** `14f46cf`(分支 `0630002`) **发布时间:** 2026-06-30 ## 本次内容 - **待办提醒推送**:`schedule-reminder-worker` 扫描并投递单次 `h5_schedule_reminders`(微信服务号 + 站内通知) - **行事历 UI**:仅展示「提醒」;状态「已通知 / 待通知」;支持忽略、勾选、全选、批量删除 - **日程写入**:`startLocal` / `remindLocal` 强制本地时间解析,拒绝离谱 epoch 毫秒时间戳 - **API**:`POST /mindspace/v1/schedule/reminders/:id/ignore`、`POST /mindspace/v1/schedule/reminders/bulk-delete` ## 103 自动备份(发布脚本已创建) | 类型 | 路径(103 上) | |------|----------------| | 全量 live 备份 | `/Users/john/Project/backups/memind/memind-full-20260630-020301-14f46cf-before.tar.gz` | | 持久目录备份 | `/Users/john/Project/backups/memind/memind-persisted-20260630-020301-14f46cf-before.tar.gz` | | 旧源码归档 | `/Users/john/Project/archives/Memind-source-before-20260630-020301-14f46cf` | | 当前 live | `/Users/john/Project/Memind`(无源码 runtime) | **上一版 live(本发布前):** `20260630-013953-7906f3c`(commit `7906f3c`) ## 健康验证 ```bash ssh 58.38.22.103 'curl -sf http://127.0.0.1:8081/api/status && echo' ``` **2026-06-30 发版后验证:** `ok`;`.env` 中 `H5_SCHEDULE_ENABLED=1`、`H5_REMINDER_WORKER_ENABLED=1`。 ## 回退到上一版 runtime(7906f3c) 在 **103** 上执行: ```bash RELEASE_ID=20260630-020301-14f46cf PREV_RELEASE=20260630-013953-7906f3c APP_DIR=/Users/john/Project/Memind ARCHIVE=/Users/john/Project/archives/Memind-source-before-${RELEASE_ID} PORTAL_LABEL=cn.tkmind.memind-portal LAUNCHD_GUI="gui/$(id -u)" launchctl bootout "${LAUNCHD_GUI}/${PORTAL_LABEL}" 2>/dev/null || true lsof -tiTCP:8081 -sTCP:LISTEN | xargs kill -9 2>/dev/null || true mv "${APP_DIR}" "${APP_DIR}.failed-runtime-${RELEASE_ID}" tar -xzf /Users/john/Project/backups/memind/memind-full-${PREV_RELEASE}-before.tar.gz -C /Users/john/Project launchctl bootstrap "${LAUNCHD_GUI}" "${HOME}/Library/LaunchAgents/${PORTAL_LABEL}.plist" launchctl kickstart -k "${LAUNCHD_GUI}/${PORTAL_LABEL}" curl -sf http://127.0.0.1:8081/api/status ``` ## 从全量 tar 恢复(极端情况) 从**本发布前**全量备份恢复(即回到 `7906f3c` 上线前的 live 快照): ```bash cd /Users/john/Project mv Memind "Memind.broken-$(date +%Y%m%d-%H%M%S)" tar -xzf backups/memind/memind-full-20260630-020301-14f46cf-before.tar.gz # 再启动 Portal LaunchAgent ``` 若 runtime 切换失败,发布脚本 remote 段内置 `trap rollback` 会自动尝试恢复。 ## 本地复现 / 再发版 ```bash git checkout 0630002 npm run verify:mindspace-publish-guards:full bash scripts/release-portal-runtime-prod.sh --yes ```