service.xpcool.com/manifest/sql/recruitment/001_init.sql
夏犀麟 ea50261cb8
Some checks failed
Build and Deploy (service.xpcool.com) / build-and-deploy (push) Failing after 35s
feat(house): 扩充看房数据并增强服务器日志功能
- 新增新房预售证表 house_presale 存储预售许可信息
- 为 house_community 表添加 avg_price 字段存储小区参考均价
- 增强服务器操作审计日志功能,新增管理员账号、IP归属地、错误信息、UA等字段
- 实现纯Go版IP归属地离线解析器,无外部依赖,支持二分查找
- 优化看房列表查询逻辑,修复Fields设置位置导致的SQL语法错误
- 集成招聘模块,添加独立数据库配置和Bark推送服务支持
- 重构日志查询接口,支持多维度筛选和综合分页列表展示
- 更新DAO实体结构同步数据库表结构调整
2026-08-27 01:47:32 +08:00

104 lines
6.6 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 招聘考试聚合模块 · 独立数据库 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='推送记录';