diff --git a/.dockerignore b/.dockerignore index ab4a3a7..d24a1ee 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,7 +2,6 @@ node_modules .git .gitignore *.md -.env .env.* *.log dist diff --git a/prisma/dev.db b/prisma/dev.db index 6e4b296..51c5082 100644 Binary files a/prisma/dev.db and b/prisma/dev.db differ diff --git a/src/sendTelegram.ts b/src/sendTelegram.ts index 841eb91..24bdec3 100644 --- a/src/sendTelegram.ts +++ b/src/sendTelegram.ts @@ -21,13 +21,21 @@ const telegramService = new TelegramService( false ); +function logWithTime(...args: unknown[]) { + console.log(`[${dayjs().format("YYYY-MM-DD HH:mm:ss")}]`, ...args); +} + +function errorWithTime(...args: unknown[]) { + console.error(`[${dayjs().format("YYYY-MM-DD HH:mm:ss")}]`, ...args); +} + async function main() { try { console.time("sendTelegram"); await sendTelegram(); console.timeEnd("sendTelegram"); } catch (error) { - console.log(error); + errorWithTime(error); } } @@ -35,33 +43,41 @@ async function sendTelegram() { const sendUsers = isTestMode ? testUsers : telegramUsers; for (let telegramUser of sendUsers) { - const articles = await prisma.realEstateArticle.findMany({ - where: { - isActive: true, - realtorId: telegramUser.realtorId, - ...(telegramUser.site !== "ALL" && { cpNm: telegramUser.site }), - ...(telegramUser.site === "부동산포스" && { - brokerPhone: telegramUser.brokerPhone, - }), - }, - }); + try { + const articles = await prisma.realEstateArticle.findMany({ + where: { + isActive: true, + realtorId: telegramUser.realtorId, + ...(telegramUser.site !== "ALL" && { cpNm: telegramUser.site }), + ...(telegramUser.site === "부동산포스" && { + brokerPhone: telegramUser.brokerPhone, + }), + }, + }); - if (articles.length === 0) { - console.log("no articles"); + if (articles.length === 0) { + logWithTime("no articles"); + continue; + } + + const excelFilePath = await createExcelFile(telegramUser, articles); + + await telegramService.sendDocument( + telegramUser.chatId, + excelFilePath, + `${telegramUser.realtorId}_네이버 부동산 매물 목록 (${dayjs().format( + "YYYY-MM-DD" + )})` + ); + await unlink(excelFilePath); + logWithTime("excel file deleted"); + } catch (error) { + errorWithTime( + `❌ ${telegramUser.name}(${telegramUser.chatId}) 처리 실패:`, + error + ); continue; } - - const excelFilePath = await createExcelFile(telegramUser, articles); - - await telegramService.sendDocument( - telegramUser.chatId, - excelFilePath, - `${telegramUser.realtorId}_네이버 부동산 매물 목록 (${dayjs().format( - "YYYY-MM-DD" - )})` - ); - await unlink(excelFilePath); - console.log("excel file deleted"); } } diff --git a/src/services/telegram.service.ts b/src/services/telegram.service.ts index 0b23be0..447e519 100644 --- a/src/services/telegram.service.ts +++ b/src/services/telegram.service.ts @@ -48,13 +48,13 @@ export const telegramUsers: TelegramUser[] = [ phone: "010-6377-2069", realtorId: "namyeong00", }, - { - site: "부동산써브", - chatId: 6864925398, - name: "박희영", - phone: "010-5387-4521", - realtorId: "namyeong00", - }, + // { + // site: "부동산써브", + // chatId: 6864925398, + // name: "박희영", + // phone: "010-5387-4521", + // realtorId: "namyeong00", + // }, { site: "부동산포스", chatId: 8155003662,