diff --git a/app.js b/app.js index 7f862f8a..db9773dc 100644 --- a/app.js +++ b/app.js @@ -77,7 +77,7 @@ app.use(require("./src/middlewares/errorHandler")); const serverHttp = http .createServer(app) .listen(httpPort, () => - logger.info(`Express 서버가 ${httpPort}번 포트에서 시작됨.`) + logger.info(`Express server started from port ${httpPort}`) ); // socket.io 서버 시작 diff --git a/src/modules/email.js b/src/modules/email.js index 98e588e0..9350981d 100644 --- a/src/modules/email.js +++ b/src/modules/email.js @@ -28,7 +28,7 @@ class NodemailerTransport { await this.#transporter.sendMail(mailOptions); return true; } catch (err) { - logger.error(err); + logger.error(`Failed to send email: ${err}`); return false; } } @@ -72,7 +72,7 @@ class MockNodemailerTransport { .catch((err) => { // 네트워크 오류 등으로 mock 메일 전송을 위한 agent 객체 생성에 실패했을 때 에러를 반환합니다. // sendMail 메서드가 다시 호출될 때 새로운 transporterPromise를 생성하기 위해 null로 초기화합니다. - logger.error("mock 메일 전송을 위한 agent 객체 생성에 실패했습니다."); + logger.error("Failed to create agent object for sending mock mail."); this.#transporterPromise = null; throw err; }); @@ -93,14 +93,13 @@ class MockNodemailerTransport { const transporter = await this.getTransporter(); const response = await transporter.sendMail(mailOptions); logger.info( - `mock 메일이 전송되었습니다. 미리보기 url: ${nodemailer.getTestMessageUrl( + `Mock mail sent successfully. Preview url: ${nodemailer.getTestMessageUrl( response )}` ); return true; } catch (err) { - logger.error("메일 전송이 아래와 같은 사유로 실패했습니다: "); - logger.error(err); + logger.error(`Failed to send email: ${err}`); return false; } } diff --git a/src/modules/fcm.js b/src/modules/fcm.js index cf6a0433..a19bd004 100644 --- a/src/modules/fcm.js +++ b/src/modules/fcm.js @@ -18,7 +18,7 @@ const initializeApp = () => { }); } else { logger.error( - "Firebase 관련 credential이 존재하지 않습니다. FCM 관련 기능을 사용할 수 없습니다." + "There is no credential for Firebase. FCM functions are disabled." ); } }; @@ -111,7 +111,7 @@ const removeExpiredTokens = async (deviceTokens, fcmResponses) => { } return false; } catch (err) { - logger.info(err); + logger.error(err); return false; } }) diff --git a/src/modules/stores/mongo.js b/src/modules/stores/mongo.js index 695845fc..bf2a8c53 100755 --- a/src/modules/stores/mongo.js +++ b/src/modules/stores/mongo.js @@ -177,17 +177,17 @@ mongoose.set("strictQuery", true); const database = mongoose.connection; database.on("error", console.error.bind(console, "mongoose connection error.")); database.on("open", () => { - logger.info("데이터베이스와 연결되었습니다."); + logger.info("Connected to database"); }); database.on("error", function (err) { - logger.error("데이터베이스 연결 에러 발생: " + err); + logger.error("Database connection error occurred: " + err); mongoose.disconnect(); }); const connectDatabase = (mongoUrl) => { database.on("disconnected", function () { // 데이터베이스 연결이 끊어지면 5초 후 재연결을 시도합니다. - logger.error("데이터베이스와 연결이 끊어졌습니다!"); + logger.error("Disconnected from database!"); setTimeout(() => { mongoose.connect(mongoUrl, { useNewUrlParser: true, diff --git a/src/services/reports.js b/src/services/reports.js index 900feec6..dbd30d53 100644 --- a/src/services/reports.js +++ b/src/services/reports.js @@ -6,7 +6,7 @@ const { const { reportPopulateOption } = require("../modules/populates/reports"); const { sendReportEmail } = require("../modules/email"); const logger = require("../modules/logger"); -const emailPage = require("../views/emailNoSettlementPage"); +const reportEmailPage = require("../views/reportEmailPage"); const { notifyReportToReportChannel } = require("../modules/slackNotification"); const createHandler = async (req, res) => { @@ -42,10 +42,10 @@ const createHandler = async (req, res) => { notifyReportToReportChannel(user.nickname, report); - if (report.type === "no-settlement") { + if (report.type === "no-settlement" || report.type === "no-show") { const emailRoomName = room ? room.name : ""; const emailRoomId = room ? room._id : ""; - const emailHtml = emailPage( + const emailHtml = reportEmailPage[report.type]( req.origin, reported.name, reported.nickname, diff --git a/src/views/emailNoSettlementPage.js b/src/views/emailNoSettlementPage.js deleted file mode 100644 index 5143c279..00000000 --- a/src/views/emailNoSettlementPage.js +++ /dev/null @@ -1,34 +0,0 @@ -const emailPage = require("./emailPage"); - -module.exports = (origin, name, nickname, roomName, payer, roomId) => - emailPage( - "미정산 내역 관련 안내", - `${name} (${nickname}) 님께

- 안녕하세요, ${name} (${nickname}) 님.
- KAIST 학부 총학생회 산하 특별기구 SPARCS의 Taxi 팀입니다.

- 최근 참여하신 방에서 정산이 이루어지지 않았다는 사용자의 문의가 접수되어 메일을 보내드립니다.

-
-
- 방 제목 - ${roomName} -
-
- 결제자 - ${payer} -
-
- 링크 - ${new URL(`/myroom/${roomId}`, origin).href} -
-

- 위 방에서 채팅을 확인하실 수 있으며, 결제하신 분께 해당 금액을 정산해주시기를 부탁드립니다.
- 미정산이 반복되는 경우 Taxi 서비스 이용이 제한될 수 있음을 알려드립니다.
- 문의가 필요하신 경우, 택시 서비스 내부의 "채널톡 문의하기" 혹은 메일 회신 주시면 됩니다.

- 감사합니다.
- SPARCS Taxi팀 드림. - ` - ); diff --git a/src/views/emailPage.js b/src/views/emailPage.js index d99dafd1..f41122a4 100644 --- a/src/views/emailPage.js +++ b/src/views/emailPage.js @@ -7,7 +7,7 @@ module.exports = (
Taxi
${ @@ -18,7 +18,7 @@ module.exports = (
${content}
SPARCS
diff --git a/src/views/reportEmailPage.js b/src/views/reportEmailPage.js new file mode 100644 index 00000000..1ee674f8 --- /dev/null +++ b/src/views/reportEmailPage.js @@ -0,0 +1,86 @@ +const emailPage = require("./emailPage"); + +const reportEmailPage = {}; + +/* 미정산 알림 메일을 위한 템플릿 */ +reportEmailPage["no-settlement"] = ( + origin, + name, + nickname, + roomName, + payer, + roomId +) => + emailPage( + "미정산 내역 관련 안내", + `${name} (${nickname}) 님께

+ 안녕하세요, ${name} (${nickname}) 님.
+ KAIST 학부 총학생회 산하 특별기구 SPARCS의 Taxi 팀입니다.

+ 최근 참여하신 방에서 정산이 이루어지지 않았다는 사용자의 문의가 접수되어 메일을 보내드립니다.

+
+
+ 방 제목 + ${roomName} +
+
+ 결제자 + ${payer} +
+
+ 링크 + ${ + new URL(`/myroom/${roomId}`, origin).href + } +
+

+ 위 방에서 채팅을 확인하실 수 있으며, 결제하신 분께 해당 금액을 정산해주시기를 부탁드립니다.
+ 미정산이 반복되는 경우 Taxi 서비스 이용이 제한될 수 있음을 알려드립니다.
+ 문의가 필요하신 경우, 택시 서비스 내부의 "채널톡 문의하기"를 통해 채팅을 남겨주시거나, 또는 이 메일에 회신해 주셔도 됩니다.

+ 감사합니다.
+ SPARCS Taxi팀 드림. + ` + ); + +/* 미탑승 알림 메일을 위한 템플릿 */ +reportEmailPage["no-show"] = ( + origin, + name, + nickname, + roomName, + payer, + roomId +) => + emailPage( + "미탑승 내역 관련 안내", + `${name} (${nickname}) 님께

+ 안녕하세요, ${name} (${nickname}) 님.
+ KAIST 학부 총학생회 산하 특별기구 SPARCS의 Taxi 팀입니다.

+ 최근 참여하신 방에서 별도의 연락 없이 탑승하지 않았다는 사용자의 문의가 접수되어 메일을 보내드립니다.

+
+
+ 방 제목 + ${roomName} +
+
+ 결제자 + ${payer} +
+
+ 링크 + ${new URL(`/myroom/${roomId}`, origin).href} +
+

+ 미탑승이 반복되는 경우 Taxi 서비스 이용이 제한될 수 있음을 알려드립니다.
+ 문의가 필요하신 경우, 택시 서비스 내부의 "채널톡 문의하기"를 통해 채팅을 남겨주시거나, 또는 이 메일에 회신해 주셔도 됩니다.

+ 감사합니다.
+ SPARCS Taxi팀 드림. + ` + ); + +module.exports = reportEmailPage;