Skip to content

feat: 半月刊日程通知(配合后端 schedule_entries 改造)+ 主页/账号页 v2 - #20

Merged
Lanly109 merged 1 commit into
Lanly109:mainfrom
sakurairsora:main
Sep 30, 2026
Merged

Lanly109 merged 1 commit into
Lanly109:mainfrom
sakurairsora:main

Conversation

@sakurairsora

@sakurairsora sakurairsora commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

一句话

配合后端「半月刊字段化」改造推出的日程通知功能,以及随分支带入的主页/账号页 v2 重构。以 sakurairsora:main 对比上游 main:35 个文件,+3221 / −1386(已先合入上游 f818e2a 注册限流修复,无冲突)。
本修改需配合后端的pr。

跟上游对比改了什么

1. 半月刊日程通知

后端把半月刊(half_schedule)解析挪进 db、新增只读端点 GET /daily/api/schedule 返回结构化日程 {key, category, start_time, end_time, description}(与半月刊渲染同源)。前端据此做「活动/特别地下城/新斗技场/公会战开启」等通知。后端未部署 /schedule 时静默降级,不影响其他功能。

  • ScheduleNotifyWatcher(挂 _sidebar 布局层常驻)+ 铃铛面板(主页工具栏「日程通知」)
  • 面板常驻显示勾选类别中「正在进行」的日程(结束日期 > 今天);内层滚动到界无缝接力外层
  • 勾选类别条目在开始日当天、到设定时刻(默认 08:00)弹浏览器通知;每 key 当天至多一次,已读记录存 localStorage、90 天自清理
  • 拉取节流:缓存无过期条目每天至多拉一次;活动结束立即重拉;低频巡检每 10 分钟
  • 展示口径:噪声过滤(玩家经验值加成/公会战排名公示);13 类固定清单;扭蛋 fes| 折叠「up 首人 fes扭蛋」、长名单折叠「up 前两名……等N人」
  • 联调工具:scripts/mock-schedule-server.mjs(16 类日程与真实红标数据源一致)+ 免 watch 的 vite 联调配置

2. 主页/账号页 v2 重构

  • DashBoard 大重构(净减约 1000 行):账号卡片化(表格/卡片双视图)、AccountCard 拆分 + AccountCardParts 共享件
  • 自定义功能按钮 + QuickActionPicker(危险分区标记、后端下线功能 reconcile、限并发拉取)
  • 默认账号(批次名单)体系:执行目标 勾选 > 默认账号 > 全体;忙碌互斥网(busy 真源 + 页面级动作生命周期)
  • 离开页面即中断在途动作(日常豁免);清理全部日常;「弹结果」总开关;结果汇总窗
  • Config 表单统一受控 + useConfigSaveFlow 统一保存模板(乐观写 + 失败回滚 + 连笔/外部更新竞态处理);配置导入收拢 importConfigFile(schema 严格校验 + 跨区并集防线)
  • 「批量运行」(BATCH_RUNNER 后端定时任务配置)入口保留在工具栏

3. 质量

12 轮审查修复(11 轮历史审计 + 本次终审)。终审修掉的关键项:通知去重恒真导致每 10 分钟重复弹、批量运行入口丢失、表头全选分母含虚拟账号、滚动接力监听器注册不上、Picker 取消状态残留、Config 连笔回滚到比服务器更旧的值等。

修改文件清单

新增

文件 说明
src/components/Account/ScheduleNotify.tsx 日程通知核心(watcher + 面板,453 行)
src/components/Account/accountShared.tsx 共享:busy 真源/存取兜底/事件/导入校验/工具
src/components/Account/AccountCard.tsx / AccountCardParts.tsx 账号卡片及共享 UI 件
src/components/Account/QuickActionPicker.tsx / quickActions.ts 自定义功能按钮选择器与持久化
src/components/Account/ResultSummaryModal.tsx 批量执行结果汇总窗
src/routes/daily/index.tsx /daily/ 根路径重定向到账号主页(重要。它启动页面时会有这样的一个问题,http://localhost:5173/跟http://localhost:5173/daily/实际上显示不出东西,必须是http://localhost:5173/daily/login跟http://localhost:5173/daily/account才能显示东西。这里让它可以自动重定向。)
audit/backend-pr/* 后端 PR 素材(database/nologin/路由写法 + patch + 落地步骤说明)
scripts/mock-schedule-server.mjs / vite.dev-no-watch.config.mts / apply-backend-pr.cjs 联调工具(mock /schedule、免 watch 配置、后端素材落地脚本)

重构(大改)

文件 说明
src/components/Account/DashBoard.tsx 主页重写:卡片/表格视图、批次、互斥、工具栏
src/components/Account/Config.tsx 受控化 + useConfigSaveFlow 统一保存流
src/components/Account/ConfigImportExport.tsx 导入导出收拢到 importConfigFile
src/components/Account/Module.tsx / ConfigSyncModal.tsx / ModuleSyncModal.tsx 互斥网接入、同步弹窗目标列表排除虚拟账号

小改:Area.tsx、Info.tsx、MultiSelectModal.tsx(重开边沿重置)、ResultInfoModal.tsx、Toc.tsx、SideBar/Index.tsx(挂 watcher)、$account.tsx(换号守卫/清理)、login.tsx、interfaces/Account.ts、routeTree.gen.ts、index.html(滚动条槽位)、.gitignore

删除:src/components/count.tsx(无消费者,引用已清)

验证

  • tsc + vite build(production)通过,与 CI 同款命令
  • mock /schedule 端到端联调通过(16 类日程快照)

【半月刊日程通知】后端 /daily/api/schedule 返回结构化日程,前端据此做开启通知,不再依赖运行任务读警报:
- ScheduleNotifyWatcher 常驻 + 工具栏铃铛面板;进行中日程常驻显示(内层滚动无缝接力)
- 勾选类别条目开始日当天到设定时刻弹浏览器通知(每 key 每天一次,已读 90 天自清理)
- 拉取节流(缓存无过期每天至多一次)、噪声过滤、13 类固定清单、扭蛋 fes| 折叠
- 联调工具:mock-schedule-server.mjs + 免 watch vite 配置;audit/backend-pr/ 存后端 PR 素材

【主页/账号页 v2】
- DashBoard 重构:卡片/表格双视图、AccountCard 拆分、自定义功能按钮 + QuickActionPicker
- 默认账号体系(勾选>默认>全体)、忙碌互斥网、离开页面中断在途动作(日常豁免)
- Config 统一受控 + useConfigSaveFlow;配置导入收拢 importConfigFile(schema 严格校验+跨区并集)
- 批量运行(BATCH_RUNNER)入口保留

【质量】12 轮审查修复;终审修掉通知重复弹、批量运行入口丢失、表头全选分母、滚动接力注册、Picker 取消残留、Config 连笔回滚等 11 项

设计行为:执行中转圈互斥、结果窗期间保持忙碌、busy 跨页不同步
@Lanly109
Lanly109 merged commit 11e72bd into Lanly109:main Sep 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants