61 行
2.4 KiB
TypeScript
61 行
2.4 KiB
TypeScript
import {IJsonCourse} from "./types"
|
|
import {JsonCourseList} from "./poll"
|
|
import {findJsonCourse} from "./includes"
|
|
import {appConfig} from "./config"
|
|
import {scalarOptions} from "yaml"
|
|
import Str = scalarOptions.Str
|
|
|
|
let lastJsonCourseList: { bx: IJsonCourse[], xx: IJsonCourse[], rx: IJsonCourse[] }
|
|
let firstRunHealth = true
|
|
|
|
export async function health() {
|
|
let totalAcquireCount = 0
|
|
let totalExitCount = 0
|
|
let acquireNames: string[] = []
|
|
let exitNames: string[] = []
|
|
if (firstRunHealth) {
|
|
console.log('[health]程序health监控启动完毕')
|
|
firstRunHealth = false
|
|
} else {
|
|
for (let channel of appConfig.channels) {
|
|
for (let lastCourse of lastJsonCourseList[channel]) {
|
|
let currentCourse = findJsonCourse({
|
|
kch: lastCourse.kch,
|
|
kxh: parseInt(lastCourse.kxh),
|
|
channel: channel
|
|
})
|
|
if (currentCourse == undefined) {
|
|
continue
|
|
}
|
|
if (parseInt(currentCourse.syrs) > parseInt(lastCourse.syrs)) {
|
|
totalExitCount += parseInt(currentCourse.syrs) - parseInt(lastCourse.syrs)
|
|
if (!exitNames.includes(currentCourse.kcmc)) {
|
|
exitNames.push(currentCourse.kcmc)
|
|
}
|
|
} else {
|
|
let num = parseInt(lastCourse.syrs) - parseInt(currentCourse.syrs)
|
|
totalAcquireCount += num
|
|
if (!acquireNames.includes(currentCourse.kcmc) && num > 0) {
|
|
acquireNames.push(currentCourse.kcmc)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
console.log('[health]实时总退课人次:' + totalExitCount + '(' + shuffle(exitNames).slice(0, 3).join(',') + '等),总选课人次:'
|
|
+ totalAcquireCount + '(' + shuffle(acquireNames).slice(0, 3).join(',') + '等)')
|
|
}
|
|
lastJsonCourseList = JSON.parse(JSON.stringify(JsonCourseList))
|
|
setTimeout(health, 60 * 1000)
|
|
}
|
|
|
|
function shuffle(array: any[]) {
|
|
let currentIndex = array.length, randomIndex
|
|
while (currentIndex != 0) {
|
|
randomIndex = Math.floor(Math.random() * currentIndex)
|
|
currentIndex--;
|
|
[array[currentIndex], array[randomIndex]] = [
|
|
array[randomIndex], array[currentIndex]]
|
|
}
|
|
return array
|
|
}
|