const SQL = require('sql')
const cache = require('cache')
const crontab = require('crontab');


// 声明缓存池
cache.new('results');
// cache.new('proxy');
cache.new('open');
cache.new('login');
cache.new('oauth');
cache.new('session')


// 声明代理和终端
runtime.proxy.register('core', 'xmagic')
runtime.xterm.register('core-xmagic')

// mqtt数据同步脚本

runtime.exec('event/apps/jy/qjy/data_sync.js')

// 声明SQL连接池
// 生产环境
SQL.new(
    "system_sql",
    "mysql",
    // `${os.getEnv('MYSQL_DSN')}`,
    "shkc:yjpPdLXmMMsz7XGx@tcp(43.136.167.160:3306)/shkc",
    1024 // 声明缓存池大小
);

// 测试环境
// SQL.new(
//    "develop_sql",
//    "mysql",
//    `${os.getEnv('MYSQL_DSN')}_test`,
//    1024 // 声明缓存池大小
// );

// 从系统配置表中读取配置信息，并存入缓存池中
const SYSTEM_CONFIG = SQL.cache.query(
    "system_sql",
    86400, // 缓存时间，单位秒，0表示不缓存，-1表示永久缓存，默认缓存时间为1天
    "SELECT * FROM `sys_configs` WHERE `delete_time` IS NULL;",
);

// 添加一个每秒触发一次的定时任务
// "* * * * * *" 格式说明
// 秒 分 时 日 月 星期
// * 表示任意值
// , 表示多个值
// - 表示范围
// / 表示步长
// 例如：
// * * * * * * 30 表示每秒触发一次且执行时长限制为30秒（否则超时强制结束）
// 0 * * * * * * 表示每分钟的第0秒触发一次且不限制执行时长（可以用 * 或 0 表示）
// 0 0 * * * * 0 表示每小时的第0分第0秒触发一次
// 0 0 0 * * * * 表示每天的第0时第0分第0秒触发一次
// crontab.add('test','* * * * * * *','console.log(123456)')  // 每秒输出123456
// crontab.add('test1','*/5 * * * * * *','console.log(1234567)')  // 每5秒输出123456
// crontab.add('test','0 0 0 * * * *','console.log(123456)')  // 每秒输出123456

// 每过10分钟传一次
crontab.add('bp_sync_sh', '0 */10 * * * * *', 'event/apps/bp_sync/sh.js')

// 每过11小时50分更新
// crontab.add('dingTalk_access_token', '0 50 */11 * * * 30', 'event/apps/dingtalk/getAccessToken.js')
crontab.add('wechat_access_token', '0 50 */11 * * * *', 'event/apps/wechat/getAccessToken.js')

// 每天00:00 刷新token
crontab.add('qwen_access_token', '0 0 0 * * * *', 'event/apps/ai/getQwenToken.js')

// 每5分钟执行一次 test -> 1
// crontab.add('refresh_flow', '0 */5 * * * * *', 'event/oa_flow/refresh_flow/refresh_flow.js')

// 每2个小时执行一次
// crontab.add('plan_warning', '0 0 */2 * * * *', 'event/oa_flow/refresh_flow/plan_warning.js')

// 每天00:00:00 自动审核日报
// crontab.padd('dayreport_status_update', '0 0 0 * * * *', 1, 'event/system/oaAutoPassDaily.js')
crontab.padd('dingtalk_access_token', '0 0 0 * * * *', 2, 'event/apps/dingtalk/getAccessToken.js')

// 启动时运行一遍
// crontab.runAll()
