fix(multi): header logo dark + Manager login JSON + Jenkinsfile manual exclude

Header.jsx:
- logo: zioinfo-logo.png -> zioinfo-logo-dark.png (dark header background)

GuardiaDetail.jsx:
- 12 features (RPA, scraping, DR, CSAP, NL commands added)
- 44 bot commands (vs 19 before)
- Tech stack: Vector DB section added

Jenkinsfile (root + zioinfo-web):
- sparse checkout: exclude manual/ from Jenkins build
- only frontend/ and backend/ checked out

Manager useAuth.ts:
- login: form-encoded -> JSON (ITSM accepts JSON only)

Manuals:
- 41_zio서버_DB_연결정보.md
- 42_zio서버_소프트웨어_구성도.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DESKTOP-TKLFCPR\ython 2026-05-31 21:36:48 +09:00
parent 7c0472b989
commit 8171ba9ff9
4 changed files with 7 additions and 6 deletions

View File

@ -19,10 +19,11 @@ export function useAuth() {
}, [])
const login = async (username: string, password: string) => {
const params = new URLSearchParams({ username, password })
const r = await guardiaApi.post('/api/auth/login', params, {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
})
// JSON 방식 (ITSM은 JSON 로그인만 지원)
const r = await guardiaApi.post('/api/auth/login',
{ username, password },
{ headers: { 'Content-Type': 'application/json' } }
)
const { access_token } = r.data
sessionStorage.setItem('gm_token', access_token)
const me = await guardiaApi.get('/api/auth/me')

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

View File

@ -105,8 +105,8 @@ export default function Header() {
<div className="header-inner container">
{/* 로고 */}
<Link to="/" className="logo" aria-label="(주)지오정보기술 홈으로">
<img src="/zioinfo-logo.png" alt="(주)지오정보기술 로고" height="40"
onError={e => { e.target.src='/ziologo.png'; e.target.onerror = () => { e.target.style.display='none'; e.target.nextSibling.style.display='flex'; }; }} />
<img src="/zioinfo-logo-dark.png" alt="(주)지오정보기술 로고" height="40"
onError={e => { e.target.src='/zioinfo-logo.png'; e.target.onerror = () => { e.target.style.display='none'; e.target.nextSibling.style.display='flex'; }; }} />
<span className="logo-text" style={{display:'none'}}>
<strong>Zio</strong>Info
</span>