当前位置: 首页 > news >正文

SkeyeVSS开发笔记-定时任务数据模型

定时任务数据模型(core/repositories/models/crontab

本文说明Cron 服务侧「可配置定时项」core/repositories/models/crontab的职责:表结构、uniqueId主键语义、执行参数与logs累积策略,以及与db / cron双端的衔接。

项目地址https://github.com/openskeye/go-vss

姊妹篇:录像计划等业务常与本表video-project条目联动,可结合 4.1 FetchDataLogic-统一定时数据获取 与 cron 内VideoProjectLogic


1. 在项目中承担的作用

该模型描述一条定时任务配置(周期、批次、超时、是否阻塞、运行日志等):数据落在表sk-crontab业务主键为字符串uniqueId(非自增数字 id)。初始化时initTableRecordsInsert(crontab.InitRecords)写入内置任务(如video-project录像计划),并DeleteBy清理不在UniqueIds白名单内的记录,避免脏数据残留。Cron 进程通过ConfigService拉取列表,按uniqueId调度VideoProjectLogic等实现。

层级作用
数据层AutoMigrate(new(crontab.Crontab));启动前对索引Crontab_uniqueIdDrop + Migrate逻辑(见init_database.go)。
RPC / db 服务core/app/sev/db/internal/logic/configservice/crontab_*.go:列表、单行、创建、更新、删除、crontab_bulk_update_logic(按uniqueId批量更新logs等)。
HTTP / backendcore/app/sev/backend/internal/handler/config/crontab/crontab/crontab/list等。
Croncore/app/sev/cron/internal/logic/fetch-data/crontab.go拉取配置;internal/logic/crontab/video-project.go等绑定UniqueIdVideoProject

UseCache()返回nil,不启用模型级内存缓存。


2. 表与字段:数据库列 ↔ Go ↔ JSON

实体Crontab映射表sk-crontab注意:表无自增id,主键列为uniqueId

字段含义说明
uniqueId业务唯一键CHAR(40),唯一索引;ORM 主键字段。内置video-project(录像计划)。
title标题展示用。
interval执行周期秒 单位/s。
status启用状态默认1启用(与其它模型state命名不同,以字段status为准)。
readonly是否只读1只读,防止后台误改内置项(与初始化数据一致)。
timeout单批超时秒。
counter每周期批大小每个周期每一批次执行数量;内置录像计划示例为40
blockStatus是否阻塞下一周期1:须等本周期所有批次完成再进入下一周期;0:可不等待。
logs运行日志库内 JSON字符串数组Item.Logs[]string;保留约100 条(具体截断在更新逻辑中实现)。
createdAt创建时间毫秒时间戳。
updatedAt更新时间毫秒时间戳;Correction/CorrectionMap刷新。

3.ItemCrontab的字段对应

  • 内嵌*Crontab:与实体 JSON 一致。
  • Logs:仅挂载在Item上,API 为字符串切片;ConvToModel写入Crontab.Logs字符串。
  • UseDBCachejson:"-"

crontab_update_logic等对logs条数裁剪(与 RPC 入参结合),避免无限增长,联调时注意观察返回的logs长度。


4. 列名常量(variables.go

常量数据库列
ColumnUniqueIduniqueId
ColumnTitletitle
ColumnIntervalinterval
ColumnCountercounter
ColumnBlockStatusblockStatus
ColumnStatusstatus
ColumnTimeouttimeout
ColumnLogslogs
ColumnReadonlyreadonly
ColumnCreatedAtcreatedAt
ColumnUpdatedAtupdatedAt

PrimaryUniqueId"uniqueId"不是id)。


5. 行为与联调注意点

  • 主键:列表、Row 接口多以uniqueId为路径参数或条件(见 backendroutes.go/crontab/:uniqueId)。
  • 初始化InitRecords会插入readonly:1的内置任务;DeleteBy ... NOT IN UniqueIds用于删除非白名单遗留行,勿随意从UniqueIds移除仍在使用的uniqueId
  • Cron 侧main.go注册crontab.VideoProjectLogic等与uniqueId绑定的处理器;修改周期应通过DB 配置 + 拉取生效。

6. 相关代码路径

  • 模型包:core/repositories/models/crontab/
  • 迁移与种子数据:core/app/sev/db/internal/svc/init_database.goinitTableRecords
  • Config RPC:core/app/sev/db/internal/logic/configservice/crontab_*.go
  • HTTP:core/app/sev/backend/internal/handler/config/crontab/
  • Cron 拉取与录像计划:core/app/sev/cron/internal/logic/fetch-data/crontab.gointernal/logic/crontab/video-project.gointernal/handler/crontab.go
http://www.cnnetsun.cn/news/1781747.html

相关文章:

  • 从客服到测试主管:我的非典型逆袭之路
  • VS Code远程开发在嵌入式环境中的实践与优化
  • 从监控盲区到业务洞察:深入解读 APMPlus 生产指标
  • 3步搞定网络资源下载:从视频号到直播流的全方位解决方案
  • 3.2《消息队列(Message Queue)从入门到精通:架构、原理与实战》
  • 长清大学城AI大模型培训公司哪家强?
  • 3大核心技术揭秘:如何通过设备ID重置免费解锁Cursor Pro完整功能
  • Qwen3.5-4B-Claude-Opus实战指南:用system prompt固化‘严谨中文推理助手’角色
  • 【ArcMap实战】从度到米:栅格数据像元单位转换与Albers投影校正全流程解析
  • 如何快速掌握B站视频下载:BilibiliDown终极使用指南
  • 圣女司幼幽-造相Z-Turbo效果对比评测:Z-Image-Turbo基模 vs LoRA微调版生成质量分析
  • Java加密实战Classfinal Java Agent解决源码加密
  • 为什么你需要XHS-Downloader:3步告别小红书内容收藏烦恼
  • PHP条形码生成高效解决方案:从集成到企业级应用全指南
  • 终极指南:如何为小米Pad 5安装完整的Windows驱动程序
  • PHP支付接口被黑的5个无声征兆:92%的金融机构仍在忽略第3个
  • foss_photo_libraries移动端功能详解:从自动上传到多平台支持的终极指南
  • VDA5050协议实战指南:智能工厂AGV通信标准化解决方案
  • 5大核心功能助力极域电子教室突破:学生自主学习技术解决方案
  • 跨设备追番不再断档:Kazumi数据同步功能如何实现无缝观影体验
  • Qwen3-ASR-0.6B效果实测:方言识别准确率对比分析
  • FanControl 中文界面配置完全指南:打造个性化散热管理中心
  • 数据主权与记忆保存:WeChatMsg让微信聊天记录成为永恒的数字遗产
  • 微生物生态学数据分析终极指南:如何使用microeco包简化你的研究流程 [特殊字符]
  • 资深老兵带你扒开HTML核心标签的“隐藏潜规则”
  • Windows上快速安装苹果USB网络共享驱动的终极完整指南
  • 如何用PKSM管理全世代宝可梦存档:从备份到高级编辑的完整指南
  • AOT发布失败?DLL找不到?P/Invoke崩溃?C# 14部署Dify客户端的7个致命陷阱,你中了几个?
  • 运载机器人的设计(论文+CAD图纸)
  • ClawdBot模型配置实战:轻松切换Qwen3等大语言模型