diff --git a/app/utils/runtimeCheckLogs.ts b/app/utils/runtimeCheckLogs.ts index 6d9d6ee..4bf88a4 100644 --- a/app/utils/runtimeCheckLogs.ts +++ b/app/utils/runtimeCheckLogs.ts @@ -99,175 +99,176 @@ export async function runtimeCheckLogs(folderPath) { // fs.watchFile(filePath,{ interval: 15000 }, // async (eventType) => { //check special item, extra RAM, error in log - // if (path === filePath) { - // let lines = []; - // let allFile = await LogDetectFile.all(); - // let allReport = await LogReport.all(); - // let allValue = await KeyValue.all(); + const fileName = path.split("/")[path.split("/").length - 1] + const filePath = path + let lines = []; + let allFile = await LogDetectFile.all(); + let allReport = await LogReport.all(); + let allValue = await KeyValue.all(); - // //get information file - // let fileDetect = allFile?.filter( - // (i) => i.$original.file_name === fileName - // )[0]; + //get information file + let fileDetect = allFile?.filter( + (i) => i.$original.file_name === fileName + )[0]; - // let logsDetect = allReport?.filter( - // (i) => i.$original.id_file === fileDetect?.id_ldf - // ); - // //get the last line detected - // let lastLine = Math.max(...logsDetect.map((obj) => obj.line)); + let logsDetect = allReport?.filter( + (i) => i.$original.id_file === fileDetect?.id_ldf + ); + //get the last line detected + let lastLine = Math.max(...logsDetect.map((obj) => obj.line)); - // //get content file in local - // let contentFile = await fs - // .readFileSync(filePath) - // .toString() - // ?.split("\n"); + //get content file in local + let contentFile = await fs + .readFileSync(filePath) + .toString() + ?.split("\n"); - // //get index SN and send to ERP + //get index SN and send to ERP - // checkIndexSN(contentFile, lastLine, fileName); + checkIndexSN(contentFile, lastLine, fileName); - // //get list item to check - // let listKeyValues = allValue.filter( - // (i) => - // i.$original.key === "MODEL_SPECIAL" || - // i.$original.key === "CATCH_FAULTY" - // ); + //get list item to check + let listKeyValues = allValue.filter( + (i) => + i.$original.key === "MODEL_SPECIAL" || + i.$original.key === "CATCH_FAULTY" + ); - // //get list exclude error - // let listExcludeErr = allValue - // .filter((i) => i.$original.key === "EXCLUDE_ERR") - // .map((obj) => obj.$original.value); + //get list exclude error + let listExcludeErr = allValue + .filter((i) => i.$original.key === "EXCLUDE_ERR") + .map((obj) => obj.$original.value); - // //get list item special - // let listExtraItem = allValue - // .filter((i) => i.$original.key === "MODEL_SPECIAL") - // .map((obj) => obj.$original.value); + //get list item special + let listExtraItem = allValue + .filter((i) => i.$original.key === "MODEL_SPECIAL") + .map((obj) => obj.$original.value); - // //Process file content - // contentFile.map((line, index) => { - // //check line the line with errors and exclude errors - // listKeyValues - // .map((obj) => obj.$original.value) - // .map(async (value) => { - // if ( - // line.search(value) !== -1 && - // listExcludeErr.filter((err) => line.includes(err)) - // .length === 0 - // ) { - // let log = allFile?.filter( - // (i) => i.$original.file_name === fileName - // )[0]; + //Process file content + contentFile.map((line, index) => { + //check line the line with errors and exclude errors + listKeyValues + .map((obj) => obj.$original.value) + .map(async (value) => { + if ( + line.search(value) !== -1 && + listExcludeErr.filter((err) => line.includes(err)) + .length === 0 + ) { + let log = allFile?.filter( + (i) => i.$original.file_name === fileName + )[0]; - // let checkLog = allReport?.filter( - // (report) => - // report.$original.id_file === log?.id_ldf && - // report.$original.line === index + 1 && - // report.$original.detected_content === value - // ); + let checkLog = allReport?.filter( + (report) => + report.$original.id_file === log?.id_ldf && + report.$original.line === index + 1 && + report.$original.detected_content === value + ); - // if (checkLog?.length === 0) { - // await LogReport.create({ - // detected_content: value, - // line: index + 1, - // id_file: log?.id_ldf, - // }); - // lines.push(index + 1); - // } - // } + if (checkLog?.length === 0) { + await LogReport.create({ + detected_content: value, + line: index + 1, + id_file: log?.id_ldf, + }); + lines.push(index + 1); + } + } - // // if(checkSpecialVersion()) - // }); - // }); + // if(checkSpecialVersion()) + }); + }); - // //true: import log to log_report table, send report to Zulip - // setTimeout(async () => { - // if (lines.length === 0) { - // console.log(`${fileName} has changed ---Good`); - // } else { - // console.log( - // `${fileName} has changed ---SOS---${lines.length}` - // ); - // let allReport_new = await LogReport.all(); - // let fileDetect = allFile?.filter( - // (i) => i.$original.file_name === fileName - // )[0]; + //true: import log to log_report table, send report to Zulip + setTimeout(async () => { + if (lines.length === 0) { + console.log(`${fileName} has changed ---Good`); + } else { + console.log( + `${fileName} has changed ---SOS---${lines.length}` + ); + let allReport_new = await LogReport.all(); + let fileDetect = allFile?.filter( + (i) => i.$original.file_name === fileName + )[0]; - // let logsDetect = allReport_new?.filter( - // (i) => i.$original.id_file === fileDetect?.id_ldf - // ); - // // console.log(logsDetect) - // // await Database.rawQuery( - // // "select * from log_reports where id_file = " + - // // fileDetect?.id_ldf - // // ); - // //Get all report newest - // let listReport = await getListLineByItem( - // logsDetect - // .map((obj) => obj.$original) - // .filter((l) => l.line > lastLine) - // ); + let logsDetect = allReport_new?.filter( + (i) => i.$original.id_file === fileDetect?.id_ldf + ); + // console.log(logsDetect) + // await Database.rawQuery( + // "select * from log_reports where id_file = " + + // fileDetect?.id_ldf + // ); + //Get all report newest + let listReport = await getListLineByItem( + logsDetect + .map((obj) => obj.$original) + .filter((l) => l.line > lastLine) + ); - // let content = - // "| |Last updated at | Item/error | Line | Report \n|---|:---:|:---|:---|:-----------:\n"; - // let spoiler = ""; - // let issueFound = ""; + let content = + "| |Last updated at | Item/error | Line | Report \n|---|:---:|:---|:---|:-----------:\n"; + let spoiler = ""; + let issueFound = ""; - // listReport.map((log, index) => { - // let item = listExtraItem.includes(log.detected_content) - // ? ":medal: **" + log.detected_content + "**" - // : ":small_orange_diamond: " + log.detected_content; + listReport.map((log, index) => { + let item = listExtraItem.includes(log.detected_content) + ? ":medal: **" + log.detected_content + "**" + : ":small_orange_diamond: " + log.detected_content; - // log.line?.map((line) => { - // issueFound = - // issueFound + - // "\n`" + - // line + - // "` " + - // contentFile[line - 1]?.replace( - // log.detected_content, - // "[" + - // log.detected_content + - // "](https://logs.danielvu.com/logs/" + - // fileName + - // "#" + - // line + - // ")" - // ); - // }); - // content = - // content + - // "|" + - // (index + 1) + - // "|**" + - // moment(Date.now()).format("HH:mm - DD/MM") + - // "**|" + - // item + - // "|" + - // log.line + - // "|[View](https://logs.danielvu.com/logs/" + - // fileName + - // "#" + - // log.line + - // ")\n"; - // }); + log.line?.map((line) => { + issueFound = + issueFound + + "\n`" + + line + + "` " + + contentFile[line - 1]?.replace( + log.detected_content, + "[" + + log.detected_content + + "](https://logs.danielvu.com/logs/" + + fileName + + "#" + + line + + ")" + ); + }); + content = + content + + "|" + + (index + 1) + + "|**" + + moment(Date.now()).format("HH:mm - DD/MM") + + "**|" + + item + + "|" + + log.line + + "|[View](https://logs.danielvu.com/logs/" + + fileName + + "#" + + log.line + + ")\n"; + }); - // sendMessToZulip( - // "stream", - // Env.get("ZULIP_STREAM_ALERT"), - // Env.get("ZULIP_TOPIC_ALERT"), - // "------------\n\n:warning: :warning: **" + - // fileName + - // "**\n\n" + - // content + - // "\n\n" + - // spoiler + - // "\n\n***Issue found:***\n" + - // issueFound - // ); - // } - // }, 3000); - // } - console.log(path + " change") + sendMessToZulip( + "stream", + Env.get("ZULIP_STREAM_ALERT"), + Env.get("ZULIP_TOPIC_ALERT"), + "------------\n\n:warning: :warning: **" + + fileName + + "**\n\n" + + content + + "\n\n" + + spoiler + + "\n\n***Issue found:***\n" + + issueFound + ); + } + }, 3000); + + // console.log(path + " change") }); await fileList.slice(0,40) ?.filter((i) => fileList_old.includes(i) === false)