// Package entity 定义招聘考试聚合模块的数据表结构(手写,未跑 gf gen)。 // 字段命名对齐 service 现有约定:json 用驼峰,orm 用下划线。 package entity import "github.com/gogf/gf/v2/os/gtime" // RecruitmentInfo 招聘考试公告主表。 type RecruitmentInfo struct { Id uint64 `json:"id" orm:"id" description:"主键"` Title string `json:"title" orm:"title" description:"公告标题"` SourceId uint64 `json:"sourceId" orm:"source_id" description:"数据源ID"` OrgId uint64 `json:"orgId" orm:"org_id" description:"发布主体ID"` OrgName string `json:"orgName" orm:"org_name" description:"发布主体名称(冗余便于展示)"` Category int `json:"category" orm:"category" description:"考试分类 1公务员 2事业单位 3国企 4央企 5私企 6其他"` Region string `json:"region" orm:"region" description:"地区(贵阳/省直/其他市州)"` PublishDate string `json:"publishDate" orm:"publish_date" description:"发布日期"` Deadline string `json:"deadline" orm:"deadline" description:"报名/截止日期"` ExamDate string `json:"examDate" orm:"exam_date" description:"笔试日期"` Url string `json:"url" orm:"url" description:"原文链接"` Content string `json:"content" orm:"content" description:"正文/摘要"` Attachments string `json:"attachments" orm:"attachments" description:"附件链接与解析结果(JSON)"` Status int `json:"status" orm:"status" description:"0有效 1已更正 2已失效 3已删除"` Fingerprint string `json:"fingerprint" orm:"fingerprint" description:"去重指纹"` GroupKey string `json:"groupKey" orm:"group_key" description:"跨源同公告聚合键"` CreatedAt string `json:"createdAt" orm:"created_at" description:"入库时间"` UpdatedAt string `json:"updatedAt" orm:"updated_at" description:"更新时间"` } // Organization 发布主体(机关/事业单位/国企/央企/私企)。 type Organization struct { Id uint64 `json:"id" orm:"id" description:"主键"` Name string `json:"name" orm:"name" description:"主体名称"` Type int `json:"type" orm:"type" description:"主体类型 1机关 2事业 3国企 4央企 5私企 6其他"` OfficialSite string `json:"officialSite" orm:"official_site" description:"官网"` Region string `json:"region" orm:"region" description:"地区"` CreatedAt string `json:"createdAt" orm:"created_at" description:"创建时间"` UpdatedAt string `json:"updatedAt" orm:"updated_at" description:"更新时间"` } // CrawlSource 数据源配置(插件化爬虫适配器)。 type CrawlSource struct { Id uint64 `json:"id" orm:"id" description:"主键"` Name string `json:"name" orm:"name" description:"数据源名称"` BaseUrl string `json:"baseUrl" orm:"base_url" description:"站点基础URL"` SourceType int `json:"sourceType" orm:"source_type" description:"1静态列表 2SPA 3需登录 4附件型"` Category int `json:"category" orm:"category" description:"该源默认考试分类"` Region string `json:"region" orm:"region" description:"该源默认地区"` ListPath string `json:"listPath" orm:"list_path" description:"列表页路径/接口"` Config string `json:"config" orm:"config" description:"适配器扩展配置(JSON)"` Enabled int `json:"enabled" orm:"enabled" description:"是否启用 0否 1是"` CronExpr string `json:"cronExpr" orm:"cron_expr" description:"调度表达式(可选)"` LastSuccessAt string `json:"lastSuccessAt" orm:"last_success_at" description:"最近成功抓取时间"` FailCount int `json:"failCount" orm:"fail_count" description:"连续失败次数"` LastLogAt *gtime.Time `json:"lastLogAt" orm:"last_log_at" description:"最近一次抓取时间(冗余)"` LastLogFetched int `json:"lastLogFetched" orm:"last_log_fetched" description:"最近一次抓取条数(冗余)"` LastLogNew int `json:"lastLogNew" orm:"last_log_new" description:"最近一次新增条数(冗余)"` LastLogError string `json:"lastLogError" orm:"last_log_error" description:"最近一次错误信息(冗余)"` CreatedAt string `json:"createdAt" orm:"created_at" description:"创建时间"` UpdatedAt string `json:"updatedAt" orm:"updated_at" description:"更新时间"` } // CrawlLog 抓取任务运行日志。 type CrawlLog struct { Id uint64 `json:"id" orm:"id" description:"主键"` SourceId uint64 `json:"sourceId" orm:"source_id" description:"数据源ID"` RunAt string `json:"runAt" orm:"run_at" description:"运行时间"` Fetched int `json:"fetched" orm:"fetched" description:"本次抓取条数"` NewCount int `json:"newCount" orm:"new_count" description:"新增条数"` UpdatedCount int `json:"updatedCount" orm:"updated_count" description:"更新条数"` Error string `json:"error" orm:"error" description:"错误信息"` CreatedAt string `json:"createdAt" orm:"created_at" description:"创建时间"` } // PushSubscription Bark 推送订阅配置。 type PushSubscription struct { Id uint64 `json:"id" orm:"id" description:"主键"` Name string `json:"name" orm:"name" description:"订阅名称"` DeviceKey string `json:"deviceKey" orm:"device_key" description:"Bark 设备密钥"` Regions string `json:"regions" orm:"regions" description:"订阅地区(JSON数组)"` Categories string `json:"categories" orm:"categories" description:"订阅分类(JSON数组)"` OnlyNew int `json:"onlyNew" orm:"only_new" description:"仅推送新公告 0否 1是"` PushTime string `json:"pushTime" orm:"push_time" description:"推送时间 HH:mm"` Enabled int `json:"enabled" orm:"enabled" description:"是否启用 0否 1是"` CreatedAt string `json:"createdAt" orm:"created_at" description:"创建时间"` UpdatedAt string `json:"updatedAt" orm:"updated_at" description:"更新时间"` } // PushLog 推送记录。 type PushLog struct { Id uint64 `json:"id" orm:"id" description:"主键"` SubscriptionId uint64 `json:"subscriptionId" orm:"subscription_id" description:"订阅ID"` PushAt string `json:"pushAt" orm:"push_at" description:"推送时间"` Title string `json:"title" orm:"title" description:"推送标题"` Body string `json:"body" orm:"body" description:"推送内容"` Result int `json:"result" orm:"result" description:"1成功 0失败"` Error string `json:"error" orm:"error" description:"错误信息"` CreatedAt string `json:"createdAt" orm:"created_at" description:"创建时间"` }