Files
web_hgdjc_server/web/skd/skd.go
T
rootandClaude Opus 4.7 eb8840a3af 同步 web_hga 的五项改造
- 移除 买点 (user acquisition tracking) 子系统:dataReport SDK、eventmod
  事件模型、reportdata 定时上报 job、reportser/srv_report 包装层,以及业务
  侧的 ~20 处 Report* 调用点;去掉 proto.ConfigInfo 的 ReportSDKConfig
  字段、DataReport yaml 配置块和 pubdef.TrackerAppId。
- 广告获取改走 versionUrl /api/stat/advitise/v2/get(appId=12),移除
  adcenter(Jt) 调用;新增 POST /api/app/ads/click 异步上报;
  proto.AdvitiseData 别名 proxy.AdvitiseData,AList/BList 改名
  AppInfoAList/AppInfoBList。
- web 后台登录取消谷歌验证码(srv_mwacc.AccLogin 去掉 code 参数),密码
  正确即发放 token。
- app 端取消注册/登录/找回密码/游客登录接口及密码、token 相关代码;鉴权
  中间件按 X-User-Agent 中的 devID 识别用户,首次访问自动建号,Redis 缓存
  10 分钟;修改资料不再支持改密码。
- app m3u8 ticket 校验失败不再降级到 fallback 路径,仍按原 m3u8Name 返回。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-11-07 11:26:52 +08:00

95 lines
2.9 KiB
Go

package skd
import (
"context"
"math/rand"
"time"
"videoweb/pub/common/log"
"videoweb/web/service/srv_aicomment"
"videoweb/web/service/srv_mediaresource"
seopushjob "videoweb/web/skd/job/seopush"
"videoweb/web/skd/job/vipexpiry"
"videoweb/web/skd/playletwatermark"
"videoweb/web/skd/videosync"
"github.com/robfig/cron/v3"
)
var (
skdCron *cron.Cron
)
func init() {
skdCron = cron.New(cron.WithSeconds()) // 秒级定时任务
}
func Start() {
log.Info("skd start...")
rand.Seed(time.Now().UnixNano())
_, _ = skdCron.AddFunc("0 0/2 * * * ?", func() {
srv_aicomment.PollAiCommentResults(context.Background())
})
_, _ = skdCron.AddFunc("0 0/15 * * * ?", func() {
srv_aicomment.RetryFailedPlaylets(context.Background())
})
// 视频同步:每10分钟从媒资库增量同步到 video_information
_, _ = skdCron.AddFunc("0 */10 * * * ?", func() {
videosync.VideoSync()
})
// 短剧水印:每5分钟提交最多10条未处理剧集到 media
_, _ = skdCron.AddFunc("0 */5 * * * ?", func() {
playletwatermark.SubmitPendingChapters()
})
// 短剧水印:每3分钟拉取 media 已完成任务并回写剧集
_, _ = skdCron.AddFunc("0 */3 * * * ?", func() {
playletwatermark.SyncCompletedChapters()
})
// 连载中短剧:每60分钟扫描一次并投递到 Redis 队列,由后台消费者逐条同步
_, _ = skdCron.AddFunc(srv_mediaresource.PlayletSerialSyncCronSpec, func() {
srv_mediaresource.EnqueueSerialPlayletSyncJobs()
})
// 历史短剧压缩封面:每5分钟扫描压缩封面为空的记录并投递队列
_, _ = skdCron.AddFunc(srv_mediaresource.PlayletCoverCompressCronSpec, func() {
srv_mediaresource.EnqueuePlayletCoverCompressJobs()
})
_, _ = skdCron.AddFunc(srv_mediaresource.AIContentBackflowCronSpec(), func() {
go srv_mediaresource.ReportAIContentBackflowYesterday()
})
_, _ = skdCron.AddFunc(srv_mediaresource.AIContentBackflowTodayStatCronSpec(), func() {
go srv_mediaresource.RefreshAIContentBackflowTodayStats()
})
srv_mediaresource.StartCGDJOriginalBackfillOnce(context.Background())
go srv_mediaresource.RefreshAIContentBackflowTodayStats()
// 每天凌晨 02:00 重置 VIP 已过期用户的 VipType
_, _ = skdCron.AddFunc("0 0 2 * * ?", func() {
vipexpiry.ResetExpiredVip()
})
// 搜索引擎推送兜底:补推已上架短剧并重试失败任务。
// 开关关闭或非正式环境不会真正对外提交,详见 srv_seopush.seoPushEnabled
_, _ = skdCron.AddFunc("0/30 * * * * ?", func() {
seopushjob.Run()
})
//if webg.Conf.LsjMediaConf.ApiUrl != "" {
// _, _ = skdCron.AddFunc("0 30 */2 * * ?", func() {
// transcodejob.TranscodeVideoByWatchTimes()
// })
// _, _ = skdCron.AddFunc("0 */5 * * * ?", func() {
// transcodejob.CheckTranscodingResults()
// })
//}
skdCron.Start()
}
func Stop() {
log.Info("srv_datinggirl:updater Stop...")
defer log.Info("srv_datinggirl: updater Stop!!!")
srv_mediaresource.CloseAIContentBackflowClient()
skdCron.Stop()
}