From 9f647cd783474b5d96a12f20ecba667b973d8fcf Mon Sep 17 00:00:00 2001 From: dsyoon Date: Sun, 5 Apr 2026 22:33:36 +0900 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=ED=8C=8C=EB=B9=84=EC=BD=98?= =?UTF-8?q?=EC=9D=84=20xavis-logo.png=EB=A1=9C=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - partials/favicon.ejs로 icon·apple-touch-icon 링크 - 전 페이지 head에 include, /favicon.ico는 동일 PNG 제공 - 인라인 403 HTML에도 favicon 링크 Made-with: Cursor --- server.js | 8 ++++++-- views/admin-thumbnail-events.ejs | 1 + views/admin-users.ejs | 1 + views/ai-case-detail.ejs | 1 + views/ai-cases-write.ejs | 1 + views/ai-cases.ejs | 1 + views/ai-explore.ejs | 1 + views/ai-prompts.ejs | 1 + views/ax-apply.ejs | 1 + views/chat.ejs | 1 + views/index.ejs | 1 + views/learning-admin.ejs | 1 + views/learning-edit.ejs | 1 + views/learning-viewer.ejs | 1 + views/lecture-link.ejs | 1 + views/lecture-news.ejs | 1 + views/lecture-ppt.ejs | 1 + views/lecture-video.ejs | 1 + views/lecture-youtube.ejs | 1 + views/login.ejs | 1 + views/meeting-minutes.ejs | 1 + views/partials/favicon.ejs | 2 ++ views/task-checklist.ejs | 1 + 23 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 views/partials/favicon.ejs diff --git a/server.js b/server.js index 1427894..7712036 100644 --- a/server.js +++ b/server.js @@ -1106,6 +1106,10 @@ async function syncAutoChecklistFromMeetingMinutes(openai, { pgPool, email, meet } app.use("/public", express.static(path.join(ROOT_DIR, "public"))); +app.get("/favicon.ico", (req, res) => { + res.type("image/png"); + res.sendFile(path.join(ROOT_DIR, "public", "images", "xavis-logo.png")); +}); /** 채팅 마크다운 뷰어(marked + DOMPurify) — node_modules에서만 제공 */ app.use("/vendor/marked", express.static(path.join(ROOT_DIR, "node_modules/marked/lib"))); app.use("/vendor/dompurify", express.static(path.join(ROOT_DIR, "node_modules/dompurify/dist"))); @@ -1166,7 +1170,7 @@ pageRouter.get("/ai-explore/task-checklist", (req, res) => pageRouter.get("/ai-cases/write", (req, res) => { if (!res.locals.adminMode) { return res.status(403).send( - "권한 없음

관리자 모드가 필요합니다. 좌측 하단 관리자에서 토큰을 입력한 뒤 다시 시도하세요.

AI 성공 사례 목록으로

" + "권한 없음

관리자 모드가 필요합니다. 좌측 하단 관리자에서 토큰을 입력한 뒤 다시 시도하세요.

AI 성공 사례 목록으로

" ); } const editSlug = (req.query.edit || "").trim(); @@ -1206,7 +1210,7 @@ pageRouter.get("/ai-cases/:slug", async (req, res, next) => { try { if (!isAiSuccessStoryDetailAllowed(req, res)) { return res.status(403).send( - "상세 열람 불가

상세 열람 불가

로그인 후 이용 가능합니다.

AI 성공 사례 목록으로

" + "상세 열람 불가

상세 열람 불가

로그인 후 이용 가능합니다.

AI 성공 사례 목록으로

" ); } const slug = (req.params.slug || "").trim(); diff --git a/views/admin-thumbnail-events.ejs b/views/admin-thumbnail-events.ejs index fd21021..4304b6b 100644 --- a/views/admin-thumbnail-events.ejs +++ b/views/admin-thumbnail-events.ejs @@ -3,6 +3,7 @@ + <%- include('partials/favicon') %> 썸네일 이벤트 로그 diff --git a/views/admin-users.ejs b/views/admin-users.ejs index afbabec..c4750cf 100644 --- a/views/admin-users.ejs +++ b/views/admin-users.ejs @@ -3,6 +3,7 @@ + <%- include('partials/favicon') %> 사용자 현황관리 - XAVIS diff --git a/views/ai-case-detail.ejs b/views/ai-case-detail.ejs index a31a78b..ccc5557 100644 --- a/views/ai-case-detail.ejs +++ b/views/ai-case-detail.ejs @@ -3,6 +3,7 @@ + <%- include('partials/favicon') %> <%= story.title %> - AI 성공 사례 - XAVIS diff --git a/views/ai-cases-write.ejs b/views/ai-cases-write.ejs index 61b9aee..78f7c68 100644 --- a/views/ai-cases-write.ejs +++ b/views/ai-cases-write.ejs @@ -3,6 +3,7 @@ + <%- include('partials/favicon') %> AI 성공 사례 관리 - XAVIS