init: IotLCM 开源版部署仓

内容:
- docker-compose.yml:14 个基础/业务服务 + 3 个可选 profile(with-mock 挡板、with-bot、with-nginx)
- .env.example:集中管理镜像仓库、口令、端口;必填项缺失时 compose 直接报错退出
- config.example/:10 份配置模板,全部为占位值与注释说明
- schema/:12 个初始化脚本,按文件名顺序由 MySQL initdb 自动执行

脱敏处理:
- 生产/内网 IP、镜像仓库地址、公司名、真实域名全部清除
- 演示账号保留 18 个(出库与划拨依赖账号与部门树的关联),
  昵称/邮箱/手机号/登录IP/头像改为占位或编造值
- 数据库账号与 admin 口令改为初始化时按 .env 注入计算
- 通道模板与 Mock 通道的上游密钥置空
- Mock 通道地址指向 compose 内 onelink-mock 服务

部署时用 --profile with-mock 启动运营商接口挡板,即可在无真实运营商环境时跑通全链路。
This commit is contained in:
MiFaZhan
2026-10-28 13:40:12 +08:00
commit bc2c7bcc6b
26 changed files with 7264 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
-- ============================================
-- 演示环境种子数据:定时任务(2026-10-27)
--
-- 基准:生产 生产环境 的 sys_job 当前配置(可直连核对)。
-- 预演环境本机不可达(内网环境 / 内网环境 均 No route to host),
-- 故以生产实际值为准;若业务要求以预演为基准,需提供预演库访问方式后再比对。
--
-- 演示原状(15 条可见)与生产的差异:
-- 1) 缺 25 / 41 / 42 三个队列全量同步任务
-- 2) job_group 除 9 外全为 0(默认),生产已按
-- sys_job_group 字典分配到 卡数据4 / 预警3 / 财务5 / 流量池6 / 卡管控7 / 套餐8 / 测试9
-- 3) 9/10/11/12 的 cron 是错峰前的旧值,生产已改为
-- 0 0 2 * * ? / 0 0 2 * * ? / 0 40 8 1 * ? / 0 25 6 * * ?
-- 4) 任务名是旧版带前缀写法,生产已重命名
-- 5) job 17 的 cron 含反引号 `0 */15 * * * ?`,不是合法表达式
-- 6) job_params 生产为空,演示残留 2026-07 / 117 等历史参数
--
-- 本文件:清掉 1-8 测试垃圾行,按生产当前配置重建 9-25/41/42 共 19 条。
-- 字段(名称/分组/调用目标/cron/misfire/concurrent/remark)与生产逐条一致。
--
-- 运行状态与生产不同(有意为之):
-- 生产启用 11/12/25/41/42 五个同步任务;演示环境全部置 status=1(停用)。
-- 演示上游走 Mock、库内 5 万余张卡,若自动跑全量同步会持续打 mock 服务并占满
-- 这台 2vCPU/8GB 演示机。若演示确需展示任务执行,请只临时启用单个任务
-- (建议 13 测试-全量预警扫描),用完再停用。
--
-- 幂等:先删后插,可重复执行。执行顺序:09 之后。
-- ============================================
SET NAMES utf8mb4;
USE `db_iotlcm`;
-- 1-8 为 RuoYi 上游演示垃圾数据(生产亦为软删除),演示环境直接物理删除。
DELETE FROM `sys_job` WHERE `job_id` BETWEEN 1 AND 8;
-- 9-25/41/42 按生产当前配置整体重建(含 job 14:生产可见,演示此前被软删除)。
DELETE FROM `sys_job` WHERE `job_id` BETWEEN 9 AND 42;
INSERT INTO `sys_job`
(`job_id`, `job_name`, `job_params`, `job_group`, `invoke_target`, `cron_expression`,
`misfire_policy`, `concurrent`, `status`, `remark`,
`created_dept`, `created_by`, `created_at`, `updated_by`, `updated_at`, `deleted_by`, `deleted_at`)
VALUES
(9, '同步卡用量', '', 1, 'syns_usage', '0 0 2 * * ?', 1, 0, '1', '', 100, 1, '2026-06-04 21:12:34', 1, '2026-10-27 00:00:00', NULL, NULL),
(10, '同步卡运营商状态', '', 0, 'syns_sim_status', '0 0 2 * * ?', 1, 0, '1', '', 100, 1, '2026-06-04 21:12:34', 1, '2026-10-27 00:00:00', NULL, NULL),
(11, '月用量记录时序', '', 4, 'sync_traffic_usage_monthly', '0 40 8 1 * ?', 1, 0, '1', '', 100, 1, '2026-06-21 11:53:03', 1, '2026-10-27 00:00:00', NULL, NULL),
(12, '日用量记录时序', '', 4, 'sync_traffic_usage_daily', '0 25 6 * * ?', 1, 0, '1', '', 100, 1, '2026-06-22 00:11:11', 1, '2026-10-27 00:00:00', NULL, NULL),
(13, '全量预警扫描', '', 9, 'scan_sim_warning', '30 0 1 * * *', 1, 1, '1', '单卡,流量池', 100, 1, '2026-07-24 10:18:00', 1, '2026-10-27 00:00:00', NULL, NULL),
(14, ' 预警 - SIM卡到期扫描','', 0, 'notify_package_expiry', '0 0 9 * * ?', 1, 1, '1', '', 100, 1, '2026-07-27 14:35:16', 1, '2026-10-27 00:00:00', NULL, NULL),
(15, '流量池用量扫描', '', 3, 'check_flow_pool_warning', '0 */15 * * * ?', 1, 1, '1', '', 100, 1, '2026-07-27 14:37:34', 1, '2026-10-27 00:00:00', NULL, NULL),
(16, 'SIM卡用量扫描', '', 3, 'scan_sim_traffic_warning', '0 */15 * * * ?', 1, 1, '1', '', 100, 1, '2026-07-27 14:37:59', 1, '2026-10-27 00:00:00', NULL, NULL),
(17, '达量断网扫描', '', 7, 'check_traffic_cutoff', '0 */15 * * * ?', 1, 1, '1', '', 100, 1, '2026-07-27 15:37:08', 1, '2026-10-27 00:00:00', NULL, NULL),
(18, '生命周期流转', '', 8, 'sync_package_lifecycle', '0 */15 * * * ?', 1, 1, '1', '', 100, 1, '2026-07-28 16:00:00', 1, '2026-10-27 00:00:00', NULL, NULL),
(19, '可提现账户月账单', '', 5, 'settle_profit_account_month_bill','0 0 4 2 * ?', 1, 0, '1', '', 100, 1, '2026-07-28 16:09:51', 1, '2026-10-27 00:00:00', NULL, NULL),
(20, '消费账户月账单', '', 5, 'settle_consume_account_month_bill','0 0 4 2 * ?', 1, 0, '1', '', 100, 1, '2026-07-28 16:20:25', 1, '2026-10-27 00:00:00', NULL, NULL),
(21, '分润出账', '', 5, 'settle_commission', '0 0 4 * * ?', 1, 0, '1', '', 100, 1, '2026-07-28 16:48:19', 1, '2026-10-27 00:00:00', NULL, NULL),
(22, '卡信息数据同步流量池', '', 6, 'sync_flow_pool_card', '0 0 4 * * ?', 1, 0, '1', '', 100, 1, '2026-07-31 16:16:32', 1, '2026-10-27 00:00:00', NULL, NULL),
(23, '到期预警全量预加载', '', 3, 'PreloadSimExpireWarning', '0 30 23 L * ?', 1, 1, '1', '每月底扫描下下个月到期卡,写入 Redis 候选池', 100, 1, '2026-07-31 17:53:44', 1, '2026-10-27 00:00:00', NULL, NULL),
(24, '定时到期预警扫描', '', 3, 'ScanSimExpireCandidateWarning', '0 0 9 * * ?', 1, 1, '1', '', 100, 1, '2026-07-31 17:54:13', 1, '2026-10-27 00:00:00', NULL, NULL),
(25, '队列-用量同步', '', 4, 'start_traffic_usage_full_sync', '0 30 0 * * ?', 1, 1, '1', '', 100, 1, '2026-10-23 00:00:00', 1, '2026-10-27 00:00:00', NULL, NULL),
(41, '队列-状态同步', '', 4, 'syns_sim_status_queue', '0 30 18 * * ?', 1, 0, '1', '', 100, 1, '2026-10-23 00:00:00', 1, '2026-10-27 00:00:00', NULL, NULL),
(42, '队列-IMEI 同步', '', 4, 'syns_imei_queue', '0 10 20 1/3 * ?', 1, 0, '1', '', 100, 1, '2026-10-23 00:00:00', 1, '2026-10-27 00:00:00', NULL, NULL);
-- 自检:应与生产一致(可见 19 条、全部停用、分组分布如下)
SELECT COUNT(*) AS visible_total,
SUM(`status` = 0) AS enabled_total,
SUM(`job_group` = 4) AS group_kadata,
SUM(`job_group` = 3) AS group_warning,
SUM(`job_group` = 5) AS group_finance
FROM `sys_job` WHERE `deleted_at` IS NULL;
SELECT `job_id`, `job_name`, `job_group`, `cron_expression`, `status`
FROM `sys_job` WHERE `deleted_at` IS NULL ORDER BY `job_id`;