test
This commit is contained in:
30
bot.js
30
bot.js
@@ -1,6 +1,7 @@
|
||||
const db = require('./db');
|
||||
const AESCipher = require('./crypto');
|
||||
// const Attendance = require('./attendance'); // 실제 자동화 로직 파일
|
||||
const Attendance = require('./attendance');
|
||||
const ua = require('fake-useragent');
|
||||
|
||||
async function runBot() {
|
||||
console.log(`[${new Date().toISOString()}] 자동 출석 체크를 시작합니다...`);
|
||||
@@ -28,17 +29,24 @@ async function runBot() {
|
||||
|
||||
console.log(`총 ${accountsToProcess.length}개의 계정을 처리합니다. (최대 ${limit}개)`);
|
||||
|
||||
const tasks = accountsToProcess.map(account => {
|
||||
account.DECRYPTED_PSWRD = AESCipher.decrypt(account.DOMAIN_ACCNT_PSWRD);
|
||||
|
||||
// TODO: 실제 자동화 로직(Puppeteer)을 실행하는 부분
|
||||
// 예: return new Attendance(account).run();
|
||||
|
||||
console.log(`[작업 실행] 계정: ${account.DOMAIN_ACCNT_ID} / 사이트: ${account.DOMAIN_ADDRS}`);
|
||||
return Promise.resolve(); // 임시로 즉시 완료
|
||||
});
|
||||
for (const account of accountsToProcess) {
|
||||
// 상태를 '진행중(2)'으로 먼저 업데이트하여 다른 프로세스가 중복 실행하지 않도록 잠금
|
||||
await db.run(
|
||||
"UPDATE DOMAIN_ACCNT_LIST SET ATNDNC_STTS_CD = '2' WHERE DOMAIN_SEQ_ID = ? AND DOMAIN_ACCNT_ID = ?",
|
||||
[account.DOMAIN_SEQ_ID, account.DOMAIN_ACCNT_ID]
|
||||
);
|
||||
|
||||
await Promise.all(tasks);
|
||||
account.DOMAIN_ACCNT_PSWRD = AESCipher.decrypt(account.DOMAIN_ACCNT_PSWRD);
|
||||
|
||||
// DB에 저장된 값이 없으면, 여기서 새로운 User-Agent를 생성하여 account 객체에 주입
|
||||
if (!account.USER_AGENT) {
|
||||
account.USER_AGENT = ua();
|
||||
}
|
||||
|
||||
// 모든 준비가 끝난 account 데이터를 전달하여 Attendance 작업 실행
|
||||
const attendanceTask = new Attendance(account);
|
||||
await attendanceTask.run();
|
||||
}
|
||||
|
||||
console.log("모든 계정 처리가 완료되었습니다.");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user