From 57b41a9e5e48a3ac0e933f480e36b477a5833510 Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Sat, 25 Oct 2025 12:52:27 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=AA=A8=EB=93=A0=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=EC=97=90=20=EB=B6=80=EB=93=9C=EB=9F=AC=EC=9A=B4=20?= =?UTF-8?q?=EB=8B=A8=EA=B3=84=EC=A0=81=20=EB=A1=9C=EB=94=A9=20=EC=95=A0?= =?UTF-8?q?=EB=8B=88=EB=A9=94=EC=9D=B4=EC=85=98=20=EC=A0=81=EC=9A=A9=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🎨 Universal Smooth Animation System: - 6개 λͺ¨λ“  νŽ˜μ΄μ§€μ— ν†΅μΌλœ μ• λ‹ˆλ©”μ΄μ…˜ 적용 - 헀더 μš°μ„  ν‘œμ‹œ β†’ λ³Έλ¬Έ λΆ€λ“œλŸ¬μš΄ νŽ˜μ΄λ“œμΈ - 일관성 μžˆλŠ” μ‚¬μš©μž κ²½ν—˜ 제곡 πŸ“± Applied Pages: βœ… index.html (메인 νŽ˜μ΄μ§€) βœ… issues-inbox.html (μˆ˜μ‹ ν•¨) βœ… issue-view.html (뢀적합 쑰회) βœ… daily-work.html (일일곡수) βœ… project-management.html (ν”„λ‘œμ νŠΈ 관리) βœ… admin.html (κ΄€λ¦¬μž) 🎯 Animation Flow (λͺ¨λ“  νŽ˜μ΄μ§€ 동일): Step 1: 헀더 λΉ λ₯Έ νŽ˜μ΄λ“œμΈ (0.4s, -10px β†’ 0) Step 2: λ³Έλ¬Έ μ§€μ—° νŽ˜μ΄λ“œμΈ (0.8s, +30px β†’ 0, 0.2s delay) Step 3: 컨텐츠 순차 ν‘œμ‹œ (100ms 간격) πŸ”§ Unified Implementation: - λ™μΌν•œ CSS μ• λ‹ˆλ©”μ΄μ…˜ 클래슀 (.header-fade-in, .content-fade-in) - ν†΅μΌλœ JavaScript ν•¨μˆ˜ (animateHeaderAppearance, animateContentAppearance) - 헀더 μ΄ˆκΈ°ν™” ν›„ μžλ™ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘ - μ—λŸ¬ μƒν™©μ—μ„œλ„ μ• λ‹ˆλ©”μ΄μ…˜ 적용 🎨 Enhanced UX Features: - 헀더 μš°μ„  ν‘œμ‹œλ‘œ μ¦‰μ‹œ λ„€λΉ„κ²Œμ΄μ…˜ κ°€λŠ₯ - λΆ€λ“œλŸ¬μš΄ μ „ν™˜μœΌλ‘œ μ‹œκ°μ  만쑱감 μ¦λŒ€ - λΈŒλžœλ“œ 일관성을 μœ„ν•œ ν†΅μΌλœ μ• λ‹ˆλ©”μ΄μ…˜ - μ„±λŠ₯ μ΅œμ ν™”λœ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμŠ€ν…œ 🎯 Visual Improvements: - 헀더: μœ„μ—μ„œ λΆ€λ“œλŸ½κ²Œ λ“±μž₯ (빠름) - λ³Έλ¬Έ: μ•„λž˜μ—μ„œ λΆ€λ“œλŸ½κ²Œ λ“±μž₯ (느림) - 컨텐츠: 순차적 νŽ˜μ΄λ“œμΈ (리듬감) - λ§€λ„λŸ¬μš΄ νŽ˜μ΄μ§€ μ „ν™˜ Expected Result: ✨ λͺ¨λ“  νŽ˜μ΄μ§€μ—μ„œ λ™μΌν•œ λΆ€λ“œλŸ¬μš΄ λ‘œλ”© κ²½ν—˜ ✨ 헀더 μš°μ„  ν‘œμ‹œλ‘œ μ¦‰μ‹œ λ„€λΉ„κ²Œμ΄μ…˜ κ°€λŠ₯ ✨ ν†΅μΌλœ λΈŒλžœλ“œ κ²½ν—˜ 및 μ‚¬μš©μž λ§Œμ‘±λ„ μ¦λŒ€ ✨ μ„±λŠ₯ μ΅œμ ν™”μ™€ μ‹œκ°μ  완성도 양립 --- backend/__pycache__/main.cpython-311.pyc | Bin 3294 -> 3499 bytes .../__pycache__/database.cpython-311.pyc | Bin 1153 -> 1153 bytes .../__pycache__/models.cpython-311.pyc | Bin 6704 -> 9665 bytes .../__pycache__/schemas.cpython-311.pyc | Bin 11888 -> 15858 bytes .../routers/__pycache__/auth.cpython-311.pyc | Bin 8961 -> 10982 bytes .../__pycache__/daily_work.cpython-311.pyc | Bin 8865 -> 8865 bytes .../routers/__pycache__/inbox.cpython-311.pyc | Bin 0 -> 14276 bytes .../__pycache__/issues.cpython-311.pyc | Bin 8443 -> 9842 bytes .../page_permissions.cpython-311.pyc | Bin 0 -> 14334 bytes .../__pycache__/projects.cpython-311.pyc | Bin 6578 -> 6578 bytes .../__pycache__/reports.cpython-311.pyc | Bin 6792 -> 6792 bytes .../__pycache__/auth_service.cpython-311.pyc | Bin 4811 -> 4811 bytes .../__pycache__/file_service.cpython-311.pyc | Bin 3866 -> 3866 bytes frontend/admin.html | 84 ++++++++++++++++- frontend/daily-work.html | 84 ++++++++++++++++- frontend/issue-view.html | 84 ++++++++++++++++- frontend/issues-inbox.html | 88 +++++++++++++++++- frontend/project-management.html | 84 ++++++++++++++++- 18 files changed, 419 insertions(+), 5 deletions(-) create mode 100644 backend/routers/__pycache__/inbox.cpython-311.pyc create mode 100644 backend/routers/__pycache__/page_permissions.cpython-311.pyc diff --git a/backend/__pycache__/main.cpython-311.pyc b/backend/__pycache__/main.cpython-311.pyc index 2c02d95f380efc11eb111a05d178cc8738c80484..8c6c584099b396bba6f813de572b77a7287106d7 100644 GIT binary patch delta 818 zcmb7>zi-n(6vxl89lL4LCUH_?hk|JWX%f*&G-(H-f?z{pqf*IYx$%)-b{w4(C<`hQ z|3GwzfhkiX6b2+#7A7Q+P>LcId0>D6F@q374BREO2yZ-{pYHp4Km6|QgFH-z2BA;@ z5L>_WtM<4Tl9`XaOfzjsWyy+_V+=5WA)0Y(p}fEV7;K!Nxzzdz+~d=8{~(#5Snt~^ zuRx`rqym?iEUWZS(me;~8jE<3k^h2uFNk?T*b5?F5cLA-7@V4nu;)whr^!I-M7<#D z%(41G)DlrC8oLJ5`wRd>@=eW1K%XJQ^exU%9&q~v4v#{hd={QFl1(24DDDGLXk?Cp zP{H@uJB)z8v*%?u+}5j5YeQt!9j9)$9G9=RcI@5fDQ>_p5&VWP@L5ut$DALnOSE5% zxUA0=Ea*6-7|~mQ0?-PL<)~XG&gGD8chD-?UcgWNi%br`_FvCTl02Eg8r02BO{>&k zrHR%^#RlFK6jE_hcvURWjz!`edKy)oc287Idq+1lxLbkk4w+l4=`F*A2wfyuCA=kG zCiRcR9J7pHih~rIr)|Q-xp4=g+w}@`R`f3U>mP+8`2Ngxm>$(-t8h9wTEkyvmNsZh zSJbqYZb40RS=4QLPWw|VS+>zN;U>C4lIa^cZ}FAD-NN<={P)720*Ark!_omz$3Ptc l6+fH3ns^V`LlAujq9Z9amU0ImKL+^`d6=)WpE-K(zX7_j))fE% delta 733 zcmZ22eNU2iIWI340}vSe`kf&*kynzjXrg+y3?oAdLkdTZaIQ#{2qQx(PnIZ14G1g{ zn{3D^JXx1bkPk&z93(vPw*jj}s>A|Guo`DZEoO-YQXn=fLn>dE^yCkWl1L)_7$O1~ zB7ztqLU0iour2SIR9Iz!cFKWy+RQ4f@^D@{kf#9TDT3s@8B&#&F)}c$24V8VAaFkHz{qyv)E01;|H;ucF$ zett=jE|6&e#Kj^&;sp>kFgy@f+hBfy+Zu#etcx@z2ebP+fi|@hm{XDwpPZ4J zoLyuHG{6*O637iulXyfXWM1G_xWJ+SH0BZeaUmn1T#+$I7081M3Poy@cXPb%pWdwKt diff --git a/backend/database/__pycache__/models.cpython-311.pyc b/backend/database/__pycache__/models.cpython-311.pyc index 43ad793e5b69eae145c0d88c06389ac135f40c28..b9bb1985c2e78adf601a8a6a459da8b78278cddd 100644 GIT binary patch literal 9665 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 YMh}G3url!+tuJa+7whf(!iB2;4dCXszW@LL diff --git a/backend/database/__pycache__/schemas.cpython-311.pyc b/backend/database/__pycache__/schemas.cpython-311.pyc index 9a2735c5dffd8efc8975bc1c018b24d9083d8650..34df5b74f6e4e22214711d019d65fe70f0ecba44 100644 GIT binary patch literal 15858 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 diff --git a/backend/routers/__pycache__/auth.cpython-311.pyc b/backend/routers/__pycache__/auth.cpython-311.pyc index 77a4f57fa463ed97babe31e775c41df44b789050..dcd7677a64ec8e6202b7c6243302f255627967b3 100644 GIT binary patch delta 4023 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 Tsy#{18=VHXbnXa+xWWDd@(0?Q diff --git a/backend/routers/__pycache__/daily_work.cpython-311.pyc b/backend/routers/__pycache__/daily_work.cpython-311.pyc index 196390903a0b0b269b4270b2f2e3007e49766ffd..2b3e23f6b6ae8713cac06757d83dbbd46f0cb12b 100644 GIT binary patch delta 20 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 YeU2|lYef16Mc0Cmv?0q&$<$T+4-OrTHUIzs literal 0 HcmV?d00001 diff --git a/backend/routers/__pycache__/issues.cpython-311.pyc b/backend/routers/__pycache__/issues.cpython-311.pyc index c22b607c0630423742bb1061d9081226e24beac8..34d6e8cbf588a425c37a7c6a724972724f9da17c 100644 GIT binary patch delta 2380 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

-#hH{SeX6e&gg@CsRA_HKZFhXBsw7IKZsrYM4DLI{n}!S3SIUbiRA`*4a;c zwx-*+W!kqrXx}s6z9+9|^~?>-yA-9X_wL}l>lrXKb>K~EhXd{&oi&py-{_g@fxAch zGB7l`;5)l&`{sqd&7!L#<60%H-SLr|1p6dc#{*aQysKO6*_L)~&$zaW#KVu8gZobaiPproNYUZOXVd ziLOl$STM>SP6fekEkTN@dfrF1g zLn8uiMY$Gt>M8iNxnB(k2*=Wh)A2LlE|+7ce(w+c2rF@mU z9AXqh0a5js@iF+)7jMjk3rNUEns_Iqe5A=?=sc2fBmxqYJBj2%&Own>^m}%P@}2Q6 z;dRId=Yxv=BTPunOw)AEWTqLg1_E(V^e&Ow`D8CqU1Fh^s7|q*m#B8J&@WIc#6mAo z&|*a|QGT(|FW5a3EjPQx-fd#fcG12gZQqfx??_s6R)+S0>9d5~9DIbapX*632i=jQ zO3BTa9%1a~dQ!86?gtBO2}#*ukJJ6I$JHbcKPd18mhrml6>$KQ* z|NRqU{a*0W^8Qa&iYQ0_)CMNIVp5GG601y1&{ zn%Z0kV zF9yhZka%T5^ejq7Y;GggYa%H-O!TrGRZ8&0K`bbzYC5a!(A8;rO@?0c#GY-#@d6?H a6P~177^(D1O(uD;OMO_OsUVsta{miZZ~hhl literal 0 HcmV?d00001 diff --git a/backend/routers/__pycache__/projects.cpython-311.pyc b/backend/routers/__pycache__/projects.cpython-311.pyc index 9cdddd0f6e4de906752e15c8472735f1e15e77e4..94c478721305e0ed4bf9545691fcdb26e8381515 100644 GIT binary patch delta 19 ZcmdmFyvdkrIWI340}vGd*~qm*5&$ diff --git a/backend/routers/__pycache__/reports.cpython-311.pyc b/backend/routers/__pycache__/reports.cpython-311.pyc index 7f4fee9f7f5dcd1f52d1a812068302e195ed824d..9303efd6f9b45a20ba2ad43ddd529583ad65a98f 100644 GIT binary patch delta 20 acmeA$?J(tD&dbZi00boy&urwbl>z`Zj|FuA delta 20 acmeA$?J(tD&dbZi00cHkr#5oeN&x^f;{^-= diff --git a/backend/services/__pycache__/auth_service.cpython-311.pyc b/backend/services/__pycache__/auth_service.cpython-311.pyc index fa1fa5587e72c8f2d3dd9e6c83971ee4a1b0aea2..0e0ad90153a53948f8442dffdfdb7e1cf9db1525 100644 GIT binary patch delta 19 ZcmX@DdRmohIWI340}vGd*~oQJ2mm<<1+xGE delta 19 ZcmX@DdRmohIWI340}vSe+Q@ZK2mm*11#SQU diff --git a/backend/services/__pycache__/file_service.cpython-311.pyc b/backend/services/__pycache__/file_service.cpython-311.pyc index 38557d6a42a7d2ccbfc0680f76368654c38b50de..e9ed27c0bea7607eaaca1296955ca3420d70e150 100644 GIT binary patch delta 20 acmbOwH%pFtIWI340}zx -

+
@@ -228,6 +265,46 @@ let currentUser = null; let users = []; + // μ• λ‹ˆλ©”μ΄μ…˜ ν•¨μˆ˜λ“€ + function animateHeaderAppearance() { + console.log('🎨 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // 헀더 μš”μ†Œ μ°ΎκΈ° (곡톡 헀더가 μƒμ„±ν•œ μš”μ†Œ) + const headerElement = document.querySelector('header') || document.querySelector('[class*="header"]') || document.querySelector('nav'); + + if (headerElement) { + headerElement.classList.add('header-fade-in'); + setTimeout(() => { + headerElement.classList.add('visible'); + console.log('✨ 헀더 νŽ˜μ΄λ“œμΈ μ™„λ£Œ'); + + // 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ™„λ£Œ ν›„ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + setTimeout(() => { + animateContentAppearance(); + }, 200); + }, 50); + } else { + // 헀더λ₯Ό μ°Ύμ§€ λͺ»ν–ˆμœΌλ©΄ λ°”λ‘œ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + console.log('⚠️ 헀더 μš”μ†Œλ₯Ό μ°Ύμ§€ λͺ»ν•¨ - λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + animateContentAppearance(); + } + } + + // λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ + function animateContentAppearance() { + console.log('🎨 λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // λͺ¨λ“  content-fade-in μš”μ†Œλ“€μ„ 순차적으둜 μ• λ‹ˆλ©”μ΄μ…˜ + const contentElements = document.querySelectorAll('.content-fade-in'); + + contentElements.forEach((element, index) => { + setTimeout(() => { + element.classList.add('visible'); + console.log(`✨ 컨텐츠 ${index + 1} νŽ˜μ΄λ“œμΈ μ™„λ£Œ`); + }, index * 100); // 100msμ”© μ§€μ—° + }); + } + // API λ‘œλ“œ ν›„ μ΄ˆκΈ°ν™” ν•¨μˆ˜ async function initializeAdmin() { const token = localStorage.getItem('access_token'); @@ -244,6 +321,11 @@ // 곡톡 헀더 μ΄ˆκΈ°ν™” await window.commonHeader.init(user, 'users_manage'); + // 헀더 μ΄ˆκΈ°ν™” ν›„ λΆ€λ“œλŸ¬μš΄ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘ + setTimeout(() => { + animateHeaderAppearance(); + }, 100); + // νŽ˜μ΄μ§€ μ ‘κ·Ό κΆŒν•œ 체크 setTimeout(() => { if (!canAccessPage('users_manage')) { diff --git a/frontend/daily-work.html b/frontend/daily-work.html index 197930a..c99b2d0 100644 --- a/frontend/daily-work.html +++ b/frontend/daily-work.html @@ -89,6 +89,43 @@ background-color: #3b82f6; color: white; } + + /* λΆ€λ“œλŸ¬μš΄ νŽ˜μ΄λ“œμΈ μ• λ‹ˆλ©”μ΄μ…˜ */ + .fade-in { + opacity: 0; + transform: translateY(20px); + transition: opacity 0.6s ease-out, transform 0.6s ease-out; + } + + .fade-in.visible { + opacity: 1; + transform: translateY(0); + } + + /* 헀더 μ „μš© λΉ λ₯Έ νŽ˜μ΄λ“œμΈ */ + .header-fade-in { + opacity: 0; + transform: translateY(-10px); + transition: opacity 0.4s ease-out, transform 0.4s ease-out; + } + + .header-fade-in.visible { + opacity: 1; + transform: translateY(0); + } + + /* λ³Έλ¬Έ 컨텐츠 μ§€μ—° νŽ˜μ΄λ“œμΈ */ + .content-fade-in { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.8s ease-out, transform 0.8s ease-out; + transition-delay: 0.2s; + } + + .content-fade-in.visible { + opacity: 1; + transform: translateY(0); + } @@ -96,7 +133,7 @@ -
+

@@ -195,6 +232,46 @@ let dailyWorkData = []; let projectEntryCounter = 0; + // μ• λ‹ˆλ©”μ΄μ…˜ ν•¨μˆ˜λ“€ + function animateHeaderAppearance() { + console.log('🎨 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // 헀더 μš”μ†Œ μ°ΎκΈ° (곡톡 헀더가 μƒμ„±ν•œ μš”μ†Œ) + const headerElement = document.querySelector('header') || document.querySelector('[class*="header"]') || document.querySelector('nav'); + + if (headerElement) { + headerElement.classList.add('header-fade-in'); + setTimeout(() => { + headerElement.classList.add('visible'); + console.log('✨ 헀더 νŽ˜μ΄λ“œμΈ μ™„λ£Œ'); + + // 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ™„λ£Œ ν›„ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + setTimeout(() => { + animateContentAppearance(); + }, 200); + }, 50); + } else { + // 헀더λ₯Ό μ°Ύμ§€ λͺ»ν–ˆμœΌλ©΄ λ°”λ‘œ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + console.log('⚠️ 헀더 μš”μ†Œλ₯Ό μ°Ύμ§€ λͺ»ν•¨ - λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + animateContentAppearance(); + } + } + + // λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ + function animateContentAppearance() { + console.log('🎨 λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // λͺ¨λ“  content-fade-in μš”μ†Œλ“€μ„ 순차적으둜 μ• λ‹ˆλ©”μ΄μ…˜ + const contentElements = document.querySelectorAll('.content-fade-in'); + + contentElements.forEach((element, index) => { + setTimeout(() => { + element.classList.add('visible'); + console.log(`✨ 컨텐츠 ${index + 1} νŽ˜μ΄λ“œμΈ μ™„λ£Œ`); + }, index * 100); // 100msμ”© μ§€μ—° + }); + } + // API λ‘œλ“œ ν›„ μ΄ˆκΈ°ν™” ν•¨μˆ˜ async function initializeDailyWork() { const token = localStorage.getItem('access_token'); @@ -211,6 +288,11 @@ // 곡톡 헀더 μ΄ˆκΈ°ν™” await window.commonHeader.init(user, 'daily_work'); + // 헀더 μ΄ˆκΈ°ν™” ν›„ λΆ€λ“œλŸ¬μš΄ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘ + setTimeout(() => { + animateHeaderAppearance(); + }, 100); + // νŽ˜μ΄μ§€ μ ‘κ·Ό κΆŒν•œ 체크 (일일 곡수 νŽ˜μ΄μ§€) setTimeout(() => { if (!canAccessPage('daily_work')) { diff --git a/frontend/issue-view.html b/frontend/issue-view.html index 8749722..22ddc27 100644 --- a/frontend/issue-view.html +++ b/frontend/issue-view.html @@ -66,13 +66,50 @@ background-color: #3b82f6; color: white; } + + /* λΆ€λ“œλŸ¬μš΄ νŽ˜μ΄λ“œμΈ μ• λ‹ˆλ©”μ΄μ…˜ */ + .fade-in { + opacity: 0; + transform: translateY(20px); + transition: opacity 0.6s ease-out, transform 0.6s ease-out; + } + + .fade-in.visible { + opacity: 1; + transform: translateY(0); + } + + /* 헀더 μ „μš© λΉ λ₯Έ νŽ˜μ΄λ“œμΈ */ + .header-fade-in { + opacity: 0; + transform: translateY(-10px); + transition: opacity 0.4s ease-out, transform 0.4s ease-out; + } + + .header-fade-in.visible { + opacity: 1; + transform: translateY(0); + } + + /* λ³Έλ¬Έ 컨텐츠 μ§€μ—° νŽ˜μ΄λ“œμΈ */ + .content-fade-in { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.8s ease-out, transform 0.8s ease-out; + transition-delay: 0.2s; + } + + .content-fade-in.visible { + opacity: 1; + transform: translateY(0); + } -
+
@@ -162,6 +199,46 @@ let selectedStartDate = null; let selectedEndDate = null; + // μ• λ‹ˆλ©”μ΄μ…˜ ν•¨μˆ˜λ“€ + function animateHeaderAppearance() { + console.log('🎨 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // 헀더 μš”μ†Œ μ°ΎκΈ° (곡톡 헀더가 μƒμ„±ν•œ μš”μ†Œ) + const headerElement = document.querySelector('header') || document.querySelector('[class*="header"]') || document.querySelector('nav'); + + if (headerElement) { + headerElement.classList.add('header-fade-in'); + setTimeout(() => { + headerElement.classList.add('visible'); + console.log('✨ 헀더 νŽ˜μ΄λ“œμΈ μ™„λ£Œ'); + + // 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ™„λ£Œ ν›„ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + setTimeout(() => { + animateContentAppearance(); + }, 200); + }, 50); + } else { + // 헀더λ₯Ό μ°Ύμ§€ λͺ»ν–ˆμœΌλ©΄ λ°”λ‘œ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + console.log('⚠️ 헀더 μš”μ†Œλ₯Ό μ°Ύμ§€ λͺ»ν•¨ - λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + animateContentAppearance(); + } + } + + // λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ + function animateContentAppearance() { + console.log('🎨 λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // λͺ¨λ“  content-fade-in μš”μ†Œλ“€μ„ 순차적으둜 μ• λ‹ˆλ©”μ΄μ…˜ + const contentElements = document.querySelectorAll('.content-fade-in'); + + contentElements.forEach((element, index) => { + setTimeout(() => { + element.classList.add('visible'); + console.log(`✨ 컨텐츠 ${index + 1} νŽ˜μ΄λ“œμΈ μ™„λ£Œ`); + }, index * 100); // 100msμ”© μ§€μ—° + }); + } + // API λ‘œλ“œ ν›„ μ΄ˆκΈ°ν™” ν•¨μˆ˜ async function initializeIssueView() { const token = localStorage.getItem('access_token'); @@ -178,6 +255,11 @@ // 곡톡 헀더 μ΄ˆκΈ°ν™” await window.commonHeader.init(user, 'issues_view'); + // 헀더 μ΄ˆκΈ°ν™” ν›„ λΆ€λ“œλŸ¬μš΄ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘ + setTimeout(() => { + animateHeaderAppearance(); + }, 100); + // μ‚¬μš©μž 역할에 λ”°λ₯Έ νŽ˜μ΄μ§€ 제λͺ© μ„€μ • updatePageTitle(user); diff --git a/frontend/issues-inbox.html b/frontend/issues-inbox.html index 111c2bc..8d7039d 100644 --- a/frontend/issues-inbox.html +++ b/frontend/issues-inbox.html @@ -74,6 +74,43 @@ .badge-new { background: #dbeafe; color: #1e40af; } .badge-processing { background: #fef3c7; color: #92400e; } .badge-completed { background: #d1fae5; color: #065f46; } + + /* λΆ€λ“œλŸ¬μš΄ νŽ˜μ΄λ“œμΈ μ• λ‹ˆλ©”μ΄μ…˜ */ + .fade-in { + opacity: 0; + transform: translateY(20px); + transition: opacity 0.6s ease-out, transform 0.6s ease-out; + } + + .fade-in.visible { + opacity: 1; + transform: translateY(0); + } + + /* 헀더 μ „μš© λΉ λ₯Έ νŽ˜μ΄λ“œμΈ */ + .header-fade-in { + opacity: 0; + transform: translateY(-10px); + transition: opacity 0.4s ease-out, transform 0.4s ease-out; + } + + .header-fade-in.visible { + opacity: 1; + transform: translateY(0); + } + + /* λ³Έλ¬Έ 컨텐츠 μ§€μ—° νŽ˜μ΄λ“œμΈ */ + .content-fade-in { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.8s ease-out, transform 0.8s ease-out; + transition-delay: 0.2s; + } + + .content-fade-in.visible { + opacity: 1; + transform: translateY(0); + } @@ -88,7 +125,7 @@ -
+
@@ -384,6 +421,46 @@ let filteredIssues = []; let readStatus = new Set(); // 읽은 뢀적합 ID μ €μž₯ + // μ• λ‹ˆλ©”μ΄μ…˜ ν•¨μˆ˜λ“€ + function animateHeaderAppearance() { + console.log('🎨 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // 헀더 μš”μ†Œ μ°ΎκΈ° (곡톡 헀더가 μƒμ„±ν•œ μš”μ†Œ) + const headerElement = document.querySelector('header') || document.querySelector('[class*="header"]') || document.querySelector('nav'); + + if (headerElement) { + headerElement.classList.add('header-fade-in'); + setTimeout(() => { + headerElement.classList.add('visible'); + console.log('✨ 헀더 νŽ˜μ΄λ“œμΈ μ™„λ£Œ'); + + // 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ™„λ£Œ ν›„ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + setTimeout(() => { + animateContentAppearance(); + }, 200); + }, 50); + } else { + // 헀더λ₯Ό μ°Ύμ§€ λͺ»ν–ˆμœΌλ©΄ λ°”λ‘œ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + console.log('⚠️ 헀더 μš”μ†Œλ₯Ό μ°Ύμ§€ λͺ»ν•¨ - λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + animateContentAppearance(); + } + } + + // λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ + function animateContentAppearance() { + console.log('🎨 λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // λͺ¨λ“  content-fade-in μš”μ†Œλ“€μ„ 순차적으둜 μ• λ‹ˆλ©”μ΄μ…˜ + const contentElements = document.querySelectorAll('.content-fade-in'); + + contentElements.forEach((element, index) => { + setTimeout(() => { + element.classList.add('visible'); + console.log(`✨ 컨텐츠 ${index + 1} νŽ˜μ΄λ“œμΈ μ™„λ£Œ`); + }, index * 100); // 100msμ”© μ§€μ—° + }); + } + // API λ‘œλ“œ ν›„ μ΄ˆκΈ°ν™” ν•¨μˆ˜ async function initializeInbox() { console.log('πŸš€ μˆ˜μ‹ ν•¨ μ΄ˆκΈ°ν™” μ‹œμž‘'); @@ -406,6 +483,11 @@ // 곡톡 헀더 μ΄ˆκΈ°ν™” await window.commonHeader.init(user, 'issues_inbox'); + + // 헀더 μ΄ˆκΈ°ν™” ν›„ λΆ€λ“œλŸ¬μš΄ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘ + setTimeout(() => { + animateHeaderAppearance(); + }, 100); // νŽ˜μ΄μ§€ μ ‘κ·Ό κΆŒν•œ 체크 setTimeout(() => { @@ -454,6 +536,10 @@ const user = JSON.parse(localStorage.getItem('currentUser') || '{}'); if (user.id) { await window.commonHeader.init(user, 'issues_inbox'); + // μ—λŸ¬ μƒν™©μ—μ„œλ„ μ• λ‹ˆλ©”μ΄μ…˜ 적용 + setTimeout(() => { + animateHeaderAppearance(); + }, 100); } } catch (headerError) { console.error('곡톡 헀더 μ΄ˆκΈ°ν™” μ‹€νŒ¨:', headerError); diff --git a/frontend/project-management.html b/frontend/project-management.html index 1b591f5..ec80fab 100644 --- a/frontend/project-management.html +++ b/frontend/project-management.html @@ -46,13 +46,50 @@ outline: none; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } + + /* λΆ€λ“œλŸ¬μš΄ νŽ˜μ΄λ“œμΈ μ• λ‹ˆλ©”μ΄μ…˜ */ + .fade-in { + opacity: 0; + transform: translateY(20px); + transition: opacity 0.6s ease-out, transform 0.6s ease-out; + } + + .fade-in.visible { + opacity: 1; + transform: translateY(0); + } + + /* 헀더 μ „μš© λΉ λ₯Έ νŽ˜μ΄λ“œμΈ */ + .header-fade-in { + opacity: 0; + transform: translateY(-10px); + transition: opacity 0.4s ease-out, transform 0.4s ease-out; + } + + .header-fade-in.visible { + opacity: 1; + transform: translateY(0); + } + + /* λ³Έλ¬Έ 컨텐츠 μ§€μ—° νŽ˜μ΄λ“œμΈ */ + .content-fade-in { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.8s ease-out, transform 0.8s ease-out; + transition-delay: 0.2s; + } + + .content-fade-in.visible { + opacity: 1; + transform: translateY(0); + } -
+

@@ -169,6 +206,46 @@ // μ‚¬μš©μž 확인 (κ΄€λ¦¬μžλ§Œ μ ‘κ·Ό κ°€λŠ₯) let currentUser = null; + // μ• λ‹ˆλ©”μ΄μ…˜ ν•¨μˆ˜λ“€ + function animateHeaderAppearance() { + console.log('🎨 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // 헀더 μš”μ†Œ μ°ΎκΈ° (곡톡 헀더가 μƒμ„±ν•œ μš”μ†Œ) + const headerElement = document.querySelector('header') || document.querySelector('[class*="header"]') || document.querySelector('nav'); + + if (headerElement) { + headerElement.classList.add('header-fade-in'); + setTimeout(() => { + headerElement.classList.add('visible'); + console.log('✨ 헀더 νŽ˜μ΄λ“œμΈ μ™„λ£Œ'); + + // 헀더 μ• λ‹ˆλ©”μ΄μ…˜ μ™„λ£Œ ν›„ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + setTimeout(() => { + animateContentAppearance(); + }, 200); + }, 50); + } else { + // 헀더λ₯Ό μ°Ύμ§€ λͺ»ν–ˆμœΌλ©΄ λ°”λ‘œ λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ + console.log('⚠️ 헀더 μš”μ†Œλ₯Ό μ°Ύμ§€ λͺ»ν•¨ - λ³Έλ¬Έ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + animateContentAppearance(); + } + } + + // λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ + function animateContentAppearance() { + console.log('🎨 λ³Έλ¬Έ 컨텐츠 μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘'); + + // λͺ¨λ“  content-fade-in μš”μ†Œλ“€μ„ 순차적으둜 μ• λ‹ˆλ©”μ΄μ…˜ + const contentElements = document.querySelectorAll('.content-fade-in'); + + contentElements.forEach((element, index) => { + setTimeout(() => { + element.classList.add('visible'); + console.log(`✨ 컨텐츠 ${index + 1} νŽ˜μ΄λ“œμΈ μ™„λ£Œ`); + }, index * 100); // 100msμ”© μ§€μ—° + }); + } + async function initAuth() { console.log('인증 μ΄ˆκΈ°ν™” μ‹œμž‘'); const token = localStorage.getItem('access_token'); @@ -205,6 +282,11 @@ // 곡톡 헀더 μ΄ˆκΈ°ν™” await window.commonHeader.init(currentUser, 'projects_manage'); + // 헀더 μ΄ˆκΈ°ν™” ν›„ λΆ€λ“œλŸ¬μš΄ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œμž‘ + setTimeout(() => { + animateHeaderAppearance(); + }, 100); + // νŽ˜μ΄μ§€ μ ‘κ·Ό κΆŒν•œ 체크 (ν”„λ‘œμ νŠΈ 관리 νŽ˜μ΄μ§€) setTimeout(() => { if (!canAccessPage('projects_manage')) {