Skip to content

feat(ui): QZone 定时任务页重接 — 就地编辑 / 时间选择器 / 参考图 / 抖动#156

Merged
sweetcornna merged 1 commit into
mainfrom
feat/ui-qzone-page-rewire
Jul 18, 2026
Merged

feat(ui): QZone 定时任务页重接 — 就地编辑 / 时间选择器 / 参考图 / 抖动#156
sweetcornna merged 1 commit into
mainfrom
feat/ui-qzone-page-rewire

Conversation

@sweetcornna

Copy link
Copy Markdown
Owner

PR-F4:QZone 定时任务页重接

#149(cron 库)/#151(scheduler API)/#154(三组件)落地的库和组件接进 ui/app/(admin)/scheduler/qzone/page.tsx

改动

  • 表格行 换用 <QzoneJobRow>(run now / edit / pause·resume / delete),删除页面内联的旧行渲染。
  • 时间选择器:cron 手填输入换成 <QzoneSchedulePicker>;父层用 composeCron(schedule) 得 cron(返回 null 时禁用保存),parseCron 回填。
  • 参考图:选中人格后显示 <QzoneRefImagePicker>selected = imageRefLabels
  • 抖动:新增 jitter_minutes 数字输入(0–120,套 Input)。
  • 就地编辑:点击行内编辑 → 表单回填(parseCron 回填 picker 模式)+ scrollIntoView;锁定人格 <select>(改人格=删旧建新,FieldHint 说明);标题切「编辑任务」、保存按钮切「更新任务」、出现「取消编辑」。
  • saveMutationeditingName ? patchSchedulerJob : createSchedulerJobcron 来自 composeCronimage_ref_labels / jitter_minutes 顶层带上(后端 PR-B5 接收,此前忽略无害)。
  • toggleEnabledMutation:按 job.enabledpauseSchedulerJob / resumeSchedulerJobdeleteMutation:页面级 ConfirmDialog 确认后 deleteSchedulerJob
  • 保留:一键「启用每日说说」模板按钮、next-fire 预览(composeCronnextFireTime)。
  • 新增 schedulerQzone.* 文案(en + zh-CN 双份)。

与规格的偏差

  • 编辑(PATCH)时 enabled 放进 body —— 遵循 lib/api/scheduler.ts 契约「pause/resume 才能让后端重新校验并重挂 tick loop,不要用 {enabled} patch」。因此 enabled 开关只在新建态显示;编辑态改为提示「用行内暂停/恢复按钮」。enabled 仍在新建 POST body 中。

硬约束(Eclipse Minimal v2)

  • 图标仅用自绘 sprite(Pencil/Plus/RefreshCw/Sparkles/X);无 lucide、无 backdrop-filter;守卫测试保持绿;文案 en+zh-CN 双份。
  • 未改动三组件与库文件本身;未动后端。

验证

  • pnpm test:161 files / 1250 passed(+6 新增页面测试)。
  • pnpm typecheck:0 错误。
  • pnpm lint:无新增告警。

新增页面测试(page.test.tsx

编辑流回填 + 走 PATCH(create 未调)/ 新建流走 POST(patch 未调)/ 删除经 ConfirmDialog 确认后调用 / 启停按 enabled 分流 pause·resume / composeCron 为 null 时保存按钮 disabled。

接入 #149/#151/#154 落地的库与组件:
- 表格行换用 <QzoneJobRow>(run/edit/pause·resume/delete),删除旧内联行
- cron 手填换成 <QzoneSchedulePicker>(composeCron/parseCron)
- 选中人格后显示 <QzoneRefImagePicker> 选参考图(image_ref_labels)
- 新增发送抖动 jitter_minutes(0–120)输入
- 选中行就地回填编辑:parseCron 回填 picker、锁定人格、Save→Update、取消编辑
- saveMutation 按 editingName 分流 patch/create;enabled 交由行内 pause/resume
- 删除走页面级 ConfirmDialog;启停按 enabled 分流 pause/resume
- 保留一键启用每日说说 + next-fire 预览
- 新增 en+zh-CN 双份文案;新增页面测试 6 例
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions github-actions Bot added codex:needs-review A Codex review is needed for the current PR head. codex:review-requested A Codex review was requested or should be running automatically. status: 🔁 re-review loop A fresh Codex review was requested after the latest change or comment. codex:reviewed Codex posted a review result or thumbs-up after the latest request. status: 👀 ready for maintainer look No automation blocker is known; a maintainer should inspect the current result. and removed codex:review-requested A Codex review was requested or should be running automatically. codex:needs-review A Codex review is needed for the current PR head. status: 🔁 re-review loop A fresh Codex review was requested after the latest change or comment. labels Jul 18, 2026
@sweetcornna
sweetcornna merged commit c6a854b into main Jul 18, 2026
8 of 9 checks passed
@sweetcornna
sweetcornna deleted the feat/ui-qzone-page-rewire branch July 18, 2026 18:11
@github-actions github-actions Bot added the status: ✅ merge-ready Evidence and review are clear; normal merge gates may proceed. label Jul 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

codex:reviewed Codex posted a review result or thumbs-up after the latest request. status: ✅ merge-ready Evidence and review are clear; normal merge gates may proceed. status: 👀 ready for maintainer look No automation blocker is known; a maintainer should inspect the current result.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant