Some checks failed
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 35s
- 新增新房预售证表 house_presale 存储预售许可信息 - 为 house_community 表添加 avg_price 字段存储小区参考均价 - 增强服务器操作审计日志功能,新增管理员账号、IP归属地、错误信息、UA等字段 - 实现纯Go版IP归属地离线解析器,无外部依赖,支持二分查找 - 优化看房列表查询逻辑,修复Fields设置位置导致的SQL语法错误 - 集成招聘模块,添加独立数据库配置和Bark推送服务支持 - 重构日志查询接口,支持多维度筛选和综合分页列表展示 - 更新DAO实体结构同步数据库表结构调整
104 lines
6.6 KiB
Go
104 lines
6.6 KiB
Go
-- 招聘考试聚合模块 · 独立数据库 recruitment 初始化
|
||
-- 该库与 service 主库隔离,通过 config 中 database.recruitment.link 指定。
|
||
-- 执行顺序:先建库(CREATE DATABASE 由部署脚本完成),再导入本文件。
|
||
|
||
CREATE TABLE IF NOT EXISTS `organization` (
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`name` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '主体名称',
|
||
`type` TINYINT NOT NULL DEFAULT 6 COMMENT '1机关 2事业 3国企 4央企 5私企 6其他',
|
||
`official_site` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '官网',
|
||
`region` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '地区',
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_org_name` (`name`(100)),
|
||
KEY `idx_org_region` (`region`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='发布主体';
|
||
|
||
CREATE TABLE IF NOT EXISTS `crawl_source` (
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`name` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '数据源名称',
|
||
`base_url` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '站点基础URL',
|
||
`source_type` TINYINT NOT NULL DEFAULT 1 COMMENT '1静态 2SPA 3需登录 4附件型',
|
||
`category` TINYINT NOT NULL DEFAULT 6 COMMENT '默认考试分类',
|
||
`region` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '默认地区',
|
||
`list_path` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '列表页路径/接口',
|
||
`config` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '适配器扩展配置(JSON)',
|
||
`enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用 0否 1是',
|
||
`cron_expr` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '调度表达式',
|
||
`last_success_at` DATETIME NULL DEFAULT NULL COMMENT '最近成功抓取时间',
|
||
`fail_count` INT NOT NULL DEFAULT 0 COMMENT '连续失败次数',
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_src_enabled` (`enabled`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据源配置';
|
||
|
||
CREATE TABLE IF NOT EXISTS `recruitment_info` (
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`title` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '公告标题',
|
||
`source_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '数据源ID',
|
||
`org_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '发布主体ID',
|
||
`org_name` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '发布主体名称(冗余)',
|
||
`category` TINYINT NOT NULL DEFAULT 6 COMMENT '1公务员 2事业单位 3国企 4央企 5私企 6其他',
|
||
`region` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '地区',
|
||
`publish_date` DATE NULL DEFAULT NULL COMMENT '发布日期',
|
||
`deadline` DATE NULL DEFAULT NULL COMMENT '报名/截止日期',
|
||
`exam_date` DATE NULL DEFAULT NULL COMMENT '笔试日期',
|
||
`url` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '原文链接',
|
||
`content` LONGTEXT COMMENT '正文/摘要',
|
||
`attachments` VARCHAR(2000) NOT NULL DEFAULT '' COMMENT '附件链接与解析结果(JSON)',
|
||
`status` TINYINT NOT NULL DEFAULT 0 COMMENT '0有效 1已更正 2已失效 3已删除',
|
||
`fingerprint` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '去重指纹',
|
||
`group_key` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '跨源同公告聚合键',
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_fingerprint` (`fingerprint`),
|
||
KEY `idx_url` (`url`(255)),
|
||
KEY `idx_region_category` (`region`,`category`),
|
||
KEY `idx_publish_date` (`publish_date`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_group_key` (`group_key`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='招聘考试公告主表';
|
||
|
||
CREATE TABLE IF NOT EXISTS `crawl_log` (
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`source_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '数据源ID',
|
||
`run_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '运行时间',
|
||
`fetched` INT NOT NULL DEFAULT 0 COMMENT '抓取条数',
|
||
`new_count` INT NOT NULL DEFAULT 0 COMMENT '新增条数',
|
||
`updated_count` INT NOT NULL DEFAULT 0 COMMENT '更新条数',
|
||
`error` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '错误信息',
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_log_source` (`source_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='抓取任务日志';
|
||
|
||
CREATE TABLE IF NOT EXISTS `push_subscription` (
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`name` VARCHAR(100) NOT NULL DEFAULT '' COMMENT '订阅名称',
|
||
`device_key` VARCHAR(200) NOT NULL DEFAULT '' COMMENT 'Bark 设备密钥',
|
||
`regions` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '订阅地区(JSON数组)',
|
||
`categories` VARCHAR(200) NOT NULL DEFAULT '' COMMENT '订阅分类(JSON数组)',
|
||
`only_new` TINYINT NOT NULL DEFAULT 1 COMMENT '仅推送新公告 0否 1是',
|
||
`push_time` VARCHAR(10) NOT NULL DEFAULT '08:00' COMMENT '推送时间 HH:mm',
|
||
`enabled` TINYINT NOT NULL DEFAULT 1 COMMENT '是否启用 0否 1是',
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Bark 推送订阅';
|
||
|
||
CREATE TABLE IF NOT EXISTS `push_log` (
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||
`subscription_id` BIGINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '订阅ID',
|
||
`push_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '推送时间',
|
||
`title` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '推送标题',
|
||
`body` TEXT COMMENT '推送内容',
|
||
`result` TINYINT NOT NULL DEFAULT 0 COMMENT '1成功 0失败',
|
||
`error` VARCHAR(1000) NOT NULL DEFAULT '' COMMENT '错误信息',
|
||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_push_sub` (`subscription_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='推送记录';
|