feat(contact): 연락처 정보 수정 + 푸터/헤더 실제 로고 이미지 적용

- Contact.jsx: 대표전화 02-000-0000 → 031-483-1766, 주소 서울특별시 → 경기도 안산시 단원구 광덕4로 220 오피스브이 578호
- Footer.jsx: logo-white.png → 지오정보기술로고.png (화이트 필터 적용)
- 빌드 결과물 갱신 (Contact·Footer·CI 페이지 반영)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DESKTOP-TKLFCPRython 2026-05-31 14:54:43 +09:00
parent 6bd4ce5070
commit 25dc1b85d9
28 changed files with 125 additions and 124 deletions

View File

@ -1 +1 @@
import{r as a,j as e,L as n}from"./index-B5QEzx5R.js";const h=s=>fetch(s,{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}}).then(l=>l.json());function x(){var t,r;const[s,l]=a.useState(null),[c,d]=a.useState(!0);if(a.useEffect(()=>{h("/api/admin/dashboard").then(l).finally(()=>d(!1))},[]),c)return e.jsx("p",{style:{color:"#64748b",fontSize:14},children:"로딩 중..."});if(!s)return null;const o=[{icon:"📰",label:"전체 뉴스",value:s.totalNews,sub:`공개 ${s.visibleNews}`,color:"blue"},{icon:"📩",label:"전체 문의",value:s.totalInquiries,sub:`미답변 ${s.pendingInquiries}`,color:s.pendingInquiries>0?"red":"green"},{icon:"👥",label:"채용공고",value:s.totalRecruits,sub:`진행중 ${s.activeRecruits}`,color:"green"}];return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"admin-stats",children:[o.map(i=>e.jsxs("div",{className:"stat-card",children:[e.jsx("div",{className:`stat-icon ${i.color}`,children:i.icon}),e.jsxs("div",{className:"stat-info",children:[e.jsx("h4",{children:i.value}),e.jsxs("p",{children:[i.label,e.jsx("br",{}),e.jsx("span",{style:{fontSize:11},children:i.sub})]})]})]},i.label)),s.pendingInquiries>0&&e.jsxs("div",{className:"stat-card",style:{borderLeft:"3px solid #ef4444"},children:[e.jsx("div",{className:"stat-icon red",children:"🔔"}),e.jsxs("div",{className:"stat-info",children:[e.jsx("h4",{style:{color:"#ef4444"},children:s.pendingInquiries}),e.jsxs("p",{children:["미답변 문의",e.jsx("br",{}),e.jsx(n,{to:"/admin/inquiries",style:{fontSize:11,color:"#ef4444"},children:"바로가기 →"})]})]})]})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:16},children:[e.jsxs("div",{className:"admin-card",children:[e.jsxs("div",{className:"admin-card-header",children:[e.jsx("h3",{children:"📰 최근 뉴스"}),e.jsx(n,{to:"/admin/news",className:"btn btn-outline btn-sm",children:"전체보기"})]}),e.jsxs("ul",{className:"recent-list",children:[(s.recentNews||[]).map(i=>e.jsxs("li",{children:[e.jsx("span",{className:"rl-dot"}),e.jsx("span",{className:"rl-title",children:i.title}),e.jsx("span",{className:"rl-meta",children:i.category})]},i.id)),!((t=s.recentNews)!=null&&t.length)&&e.jsx("li",{style:{color:"#94a3b8",fontSize:13},children:"등록된 뉴스가 없습니다."})]})]}),e.jsxs("div",{className:"admin-card",children:[e.jsxs("div",{className:"admin-card-header",children:[e.jsx("h3",{children:"📩 최근 문의"}),e.jsx(n,{to:"/admin/inquiries",className:"btn btn-outline btn-sm",children:"전체보기"})]}),e.jsxs("ul",{className:"recent-list",children:[(s.recentInquiries||[]).map(i=>e.jsxs("li",{children:[e.jsx("span",{className:"rl-dot",style:{background:i.status==="PENDING"?"#ef4444":"#22c55e"}}),e.jsx("span",{className:"rl-title",children:i.subject}),e.jsx("span",{className:"rl-meta",children:i.name})]},i.id)),!((r=s.recentInquiries)!=null&&r.length)&&e.jsx("li",{style:{color:"#94a3b8",fontSize:13},children:"접수된 문의가 없습니다."})]})]})]})]})}export{x as default};
import{r as a,j as e,L as n}from"./index-CpO7mTKO.js";const h=s=>fetch(s,{headers:{Authorization:`Bearer ${localStorage.getItem("admin_token")}`}}).then(l=>l.json());function x(){var t,r;const[s,l]=a.useState(null),[c,d]=a.useState(!0);if(a.useEffect(()=>{h("/api/admin/dashboard").then(l).finally(()=>d(!1))},[]),c)return e.jsx("p",{style:{color:"#64748b",fontSize:14},children:"로딩 중..."});if(!s)return null;const o=[{icon:"📰",label:"전체 뉴스",value:s.totalNews,sub:`공개 ${s.visibleNews}`,color:"blue"},{icon:"📩",label:"전체 문의",value:s.totalInquiries,sub:`미답변 ${s.pendingInquiries}`,color:s.pendingInquiries>0?"red":"green"},{icon:"👥",label:"채용공고",value:s.totalRecruits,sub:`진행중 ${s.activeRecruits}`,color:"green"}];return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"admin-stats",children:[o.map(i=>e.jsxs("div",{className:"stat-card",children:[e.jsx("div",{className:`stat-icon ${i.color}`,children:i.icon}),e.jsxs("div",{className:"stat-info",children:[e.jsx("h4",{children:i.value}),e.jsxs("p",{children:[i.label,e.jsx("br",{}),e.jsx("span",{style:{fontSize:11},children:i.sub})]})]})]},i.label)),s.pendingInquiries>0&&e.jsxs("div",{className:"stat-card",style:{borderLeft:"3px solid #ef4444"},children:[e.jsx("div",{className:"stat-icon red",children:"🔔"}),e.jsxs("div",{className:"stat-info",children:[e.jsx("h4",{style:{color:"#ef4444"},children:s.pendingInquiries}),e.jsxs("p",{children:["미답변 문의",e.jsx("br",{}),e.jsx(n,{to:"/admin/inquiries",style:{fontSize:11,color:"#ef4444"},children:"바로가기 →"})]})]})]})]}),e.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:16},children:[e.jsxs("div",{className:"admin-card",children:[e.jsxs("div",{className:"admin-card-header",children:[e.jsx("h3",{children:"📰 최근 뉴스"}),e.jsx(n,{to:"/admin/news",className:"btn btn-outline btn-sm",children:"전체보기"})]}),e.jsxs("ul",{className:"recent-list",children:[(s.recentNews||[]).map(i=>e.jsxs("li",{children:[e.jsx("span",{className:"rl-dot"}),e.jsx("span",{className:"rl-title",children:i.title}),e.jsx("span",{className:"rl-meta",children:i.category})]},i.id)),!((t=s.recentNews)!=null&&t.length)&&e.jsx("li",{style:{color:"#94a3b8",fontSize:13},children:"등록된 뉴스가 없습니다."})]})]}),e.jsxs("div",{className:"admin-card",children:[e.jsxs("div",{className:"admin-card-header",children:[e.jsx("h3",{children:"📩 최근 문의"}),e.jsx(n,{to:"/admin/inquiries",className:"btn btn-outline btn-sm",children:"전체보기"})]}),e.jsxs("ul",{className:"recent-list",children:[(s.recentInquiries||[]).map(i=>e.jsxs("li",{children:[e.jsx("span",{className:"rl-dot",style:{background:i.status==="PENDING"?"#ef4444":"#22c55e"}}),e.jsx("span",{className:"rl-title",children:i.subject}),e.jsx("span",{className:"rl-meta",children:i.name})]},i.id)),!((r=s.recentInquiries)!=null&&r.length)&&e.jsx("li",{style:{color:"#94a3b8",fontSize:13},children:"접수된 문의가 없습니다."})]})]})]})]})}export{x as default};

View File

@ -1 +1 @@
import{c as g,u as b,r as s,j as a,N as x,O as j}from"./index-B5QEzx5R.js";/* empty css */const N=[{section:"메인"},{path:"/admin/dashboard",icon:"📊",label:"대시보드"},{section:"콘텐츠 관리"},{path:"/admin/news",icon:"📰",label:"뉴스/공지사항"},{path:"/admin/recruit",icon:"👥",label:"채용공고"},{section:"고객 관리"},{path:"/admin/inquiries",icon:"📩",label:"문의 관리",badgeKey:"pendingInquiries"},{path:"/admin/members",icon:"👤",label:"회원 관리"},{section:"시스템"},{path:"/admin/settings",icon:"⚙️",label:"설정"}];function y(){const i=g(),c=b(),[t,o]=s.useState(null),[l,m]=s.useState("대시보드"),[r,h]=s.useState({});s.useEffect(()=>{const e=localStorage.getItem("admin_token");if(!e){i("/admin/login");return}const n=JSON.parse(localStorage.getItem("admin_user")||"{}");o(n),u(e)},[i]),s.useEffect(()=>{m({"/admin/dashboard":"대시보드","/admin/news":"뉴스/공지사항 관리","/admin/inquiries":"문의 관리","/admin/recruit":"채용공고 관리","/admin/members":"회원 관리","/admin/settings":"설정"}[c.pathname]||"관리자")},[c.pathname]);const u=async e=>{try{const n=await fetch("/api/admin/dashboard",{headers:{Authorization:`Bearer ${e}`}});if(n.ok){const d=await n.json();h({pendingInquiries:d.pendingInquiries||0})}}catch{}},p=()=>{localStorage.removeItem("admin_token"),localStorage.removeItem("admin_user"),i("/admin/login")};return t?a.jsxs("div",{className:"admin-wrap",children:[a.jsxs("aside",{className:"admin-sidebar",children:[a.jsxs("div",{className:"admin-sidebar-logo",children:[a.jsx("h2",{children:"ZioInfo Admin"}),a.jsx("span",{children:"(주)지오정보기술 관리자"})]}),a.jsx("nav",{className:"admin-nav",children:N.map((e,n)=>e.section?a.jsx("div",{className:"admin-nav-section",children:e.section},n):a.jsxs(x,{to:e.path,className:({isActive:d})=>d?"active":"",children:[a.jsx("span",{className:"nav-icon",children:e.icon}),e.label,e.badgeKey&&r[e.badgeKey]>0&&a.jsx("span",{className:"admin-nav-badge",children:r[e.badgeKey]})]},e.path))}),a.jsx("div",{className:"admin-sidebar-footer",children:a.jsx("button",{onClick:p,children:"🚪 로그아웃"})})]}),a.jsxs("main",{className:"admin-main",children:[a.jsxs("div",{className:"admin-topbar",children:[a.jsx("h1",{children:l}),a.jsxs("div",{className:"admin-topbar-right",children:[a.jsxs("span",{className:"admin-user-badge",children:["👤 ",t.displayName||t.username]}),a.jsx("a",{href:"/",target:"_blank",rel:"noreferrer",style:{fontSize:12,color:"#64748b",textDecoration:"none"},children:"🌐 홈페이지 보기"})]})]}),a.jsx("div",{className:"admin-content",children:a.jsx(j,{})})]})]}):null}export{y as default};
import{c as g,u as b,r as s,j as a,N as x,O as j}from"./index-CpO7mTKO.js";/* empty css */const N=[{section:"메인"},{path:"/admin/dashboard",icon:"📊",label:"대시보드"},{section:"콘텐츠 관리"},{path:"/admin/news",icon:"📰",label:"뉴스/공지사항"},{path:"/admin/recruit",icon:"👥",label:"채용공고"},{section:"고객 관리"},{path:"/admin/inquiries",icon:"📩",label:"문의 관리",badgeKey:"pendingInquiries"},{path:"/admin/members",icon:"👤",label:"회원 관리"},{section:"시스템"},{path:"/admin/settings",icon:"⚙️",label:"설정"}];function y(){const i=g(),c=b(),[t,o]=s.useState(null),[l,m]=s.useState("대시보드"),[r,h]=s.useState({});s.useEffect(()=>{const e=localStorage.getItem("admin_token");if(!e){i("/admin/login");return}const n=JSON.parse(localStorage.getItem("admin_user")||"{}");o(n),u(e)},[i]),s.useEffect(()=>{m({"/admin/dashboard":"대시보드","/admin/news":"뉴스/공지사항 관리","/admin/inquiries":"문의 관리","/admin/recruit":"채용공고 관리","/admin/members":"회원 관리","/admin/settings":"설정"}[c.pathname]||"관리자")},[c.pathname]);const u=async e=>{try{const n=await fetch("/api/admin/dashboard",{headers:{Authorization:`Bearer ${e}`}});if(n.ok){const d=await n.json();h({pendingInquiries:d.pendingInquiries||0})}}catch{}},p=()=>{localStorage.removeItem("admin_token"),localStorage.removeItem("admin_user"),i("/admin/login")};return t?a.jsxs("div",{className:"admin-wrap",children:[a.jsxs("aside",{className:"admin-sidebar",children:[a.jsxs("div",{className:"admin-sidebar-logo",children:[a.jsx("h2",{children:"ZioInfo Admin"}),a.jsx("span",{children:"(주)지오정보기술 관리자"})]}),a.jsx("nav",{className:"admin-nav",children:N.map((e,n)=>e.section?a.jsx("div",{className:"admin-nav-section",children:e.section},n):a.jsxs(x,{to:e.path,className:({isActive:d})=>d?"active":"",children:[a.jsx("span",{className:"nav-icon",children:e.icon}),e.label,e.badgeKey&&r[e.badgeKey]>0&&a.jsx("span",{className:"admin-nav-badge",children:r[e.badgeKey]})]},e.path))}),a.jsx("div",{className:"admin-sidebar-footer",children:a.jsx("button",{onClick:p,children:"🚪 로그아웃"})})]}),a.jsxs("main",{className:"admin-main",children:[a.jsxs("div",{className:"admin-topbar",children:[a.jsx("h1",{children:l}),a.jsxs("div",{className:"admin-topbar-right",children:[a.jsxs("span",{className:"admin-user-badge",children:["👤 ",t.displayName||t.username]}),a.jsx("a",{href:"/",target:"_blank",rel:"noreferrer",style:{fontSize:12,color:"#64748b",textDecoration:"none"},children:"🌐 홈페이지 보기"})]})]}),a.jsx("div",{className:"admin-content",children:a.jsx(j,{})})]})]}):null}export{y as default};

View File

@ -1 +1 @@
import{r as i,c as p,j as e}from"./index-B5QEzx5R.js";/* empty css */function x(){const[t,o]=i.useState({username:"",password:""}),[l,r]=i.useState(""),[d,c]=i.useState(!1),m=p(),u=async a=>{a.preventDefault(),r(""),c(!0);try{const s=await fetch("/api/admin/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await s.json();if(!s.ok){r(n.message||"로그인 실패");return}localStorage.setItem("admin_token",n.token),localStorage.setItem("admin_user",JSON.stringify({username:n.username,displayName:n.displayName})),m("/admin/dashboard")}catch{r("서버 연결 오류가 발생했습니다.")}finally{c(!1)}};return e.jsx("div",{className:"admin-login-page",children:e.jsxs("div",{className:"admin-login-box",children:[e.jsxs("div",{className:"login-logo",children:[e.jsx("span",{className:"login-badge",children:"ADMIN"}),e.jsx("h1",{children:"(주)지오정보기술"}),e.jsx("p",{children:"홈페이지 관리자 시스템"})]}),l&&e.jsxs("div",{className:"login-error",children:["⚠ ",l]}),e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"login-input-group",children:[e.jsx("label",{children:"아이디"}),e.jsx("input",{type:"text",placeholder:"관리자 아이디",value:t.username,required:!0,onChange:a=>o(s=>({...s,username:a.target.value}))})]}),e.jsxs("div",{className:"login-input-group",children:[e.jsx("label",{children:"비밀번호"}),e.jsx("input",{type:"password",placeholder:"비밀번호",value:t.password,required:!0,onChange:a=>o(s=>({...s,password:a.target.value}))})]}),e.jsx("button",{type:"submit",className:"login-btn",disabled:d,children:d?"로그인 중...":"로그인"})]}),e.jsxs("p",{style:{textAlign:"center",marginTop:20,fontSize:12,color:"#94a3b8"},children:["홈페이지로 돌아가기: ",e.jsx("a",{href:"/",style:{color:"#4f6ef7"},children:"메인 페이지"})]})]})})}export{x as default};
import{r as i,c as p,j as e}from"./index-CpO7mTKO.js";/* empty css */function x(){const[t,o]=i.useState({username:"",password:""}),[l,r]=i.useState(""),[d,c]=i.useState(!1),m=p(),u=async a=>{a.preventDefault(),r(""),c(!0);try{const s=await fetch("/api/admin/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),n=await s.json();if(!s.ok){r(n.message||"로그인 실패");return}localStorage.setItem("admin_token",n.token),localStorage.setItem("admin_user",JSON.stringify({username:n.username,displayName:n.displayName})),m("/admin/dashboard")}catch{r("서버 연결 오류가 발생했습니다.")}finally{c(!1)}};return e.jsx("div",{className:"admin-login-page",children:e.jsxs("div",{className:"admin-login-box",children:[e.jsxs("div",{className:"login-logo",children:[e.jsx("span",{className:"login-badge",children:"ADMIN"}),e.jsx("h1",{children:"(주)지오정보기술"}),e.jsx("p",{children:"홈페이지 관리자 시스템"})]}),l&&e.jsxs("div",{className:"login-error",children:["⚠ ",l]}),e.jsxs("form",{onSubmit:u,children:[e.jsxs("div",{className:"login-input-group",children:[e.jsx("label",{children:"아이디"}),e.jsx("input",{type:"text",placeholder:"관리자 아이디",value:t.username,required:!0,onChange:a=>o(s=>({...s,username:a.target.value}))})]}),e.jsxs("div",{className:"login-input-group",children:[e.jsx("label",{children:"비밀번호"}),e.jsx("input",{type:"password",placeholder:"비밀번호",value:t.password,required:!0,onChange:a=>o(s=>({...s,password:a.target.value}))})]}),e.jsx("button",{type:"submit",className:"login-btn",disabled:d,children:d?"로그인 중...":"로그인"})]}),e.jsxs("p",{style:{textAlign:"center",marginTop:20,fontSize:12,color:"#94a3b8"},children:["홈페이지로 돌아가기: ",e.jsx("a",{href:"/",style:{color:"#4f6ef7"},children:"메인 페이지"})]})]})})}export{x as default};

View File

@ -1 +1 @@
import{r as d,j as t}from"./index-B5QEzx5R.js";const c="/api/admin/members",w=()=>localStorage.getItem("admin_token"),p=()=>({Authorization:`Bearer ${w()}`,"Content-Type":"application/json"});function C(){const[x,y]=d.useState({content:[],totalElements:0}),[n,i]=d.useState(0),[f,j]=d.useState(""),[a,S]=d.useState(""),[m,h]=d.useState(!1),l=async(e=n,r=a)=>{h(!0);try{const o=new URLSearchParams({page:e,size:20,...r&&{keyword:r}}),u=await fetch(`${c}?${o}`,{headers:p()});u.ok&&y(await u.json())}finally{h(!1)}};d.useEffect(()=>{l()},[n,a]);const k=e=>{e.preventDefault(),i(0),S(f)},v=async(e,r)=>{confirm(`${r?"비활성화":"활성화"}하시겠습니까?`)&&(await fetch(`${c}/${e}/status`,{method:"PATCH",headers:p(),body:JSON.stringify({active:!r})}),l())},z=async e=>{confirm("삭제하면 복구할 수 없습니다. 삭제하시겠습니까?")&&(await fetch(`${c}/${e}`,{method:"DELETE",headers:p()}),l())},g=x.content||[],b=x.totalElements||0,s=Math.ceil(b/20);return t.jsxs("div",{children:[t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:24},children:[t.jsxs("div",{children:[t.jsx("h2",{style:{fontSize:20,fontWeight:700,color:"#1e293b",margin:0},children:"회원 관리"}),t.jsxs("p",{style:{fontSize:13,color:"#64748b",margin:"4px 0 0"},children:["총 ",b.toLocaleString(),"명"]})]}),t.jsxs("form",{onSubmit:k,style:{display:"flex",gap:8},children:[t.jsx("input",{value:f,onChange:e=>j(e.target.value),placeholder:"이름 / 이메일 / 소속 검색",style:{padding:"8px 14px",border:"1px solid #e2e8f0",borderRadius:8,fontSize:13,width:240,outline:"none"}}),t.jsx("button",{type:"submit",style:{padding:"8px 16px",background:"#1a5fd8",color:"#fff",border:"none",borderRadius:8,fontSize:13,cursor:"pointer"},children:"검색"})]})]}),t.jsx("div",{style:{background:"#fff",border:"1px solid #e2e8f0",borderRadius:10,overflow:"hidden"},children:t.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:13},children:[t.jsx("thead",{children:t.jsx("tr",{style:{background:"#f8fafc"},children:["ID","이름","이메일","연락처","소속","가입일","상태","액션"].map(e=>t.jsx("th",{style:{padding:"10px 14px",textAlign:"left",fontWeight:600,color:"#475569",borderBottom:"1px solid #e2e8f0"},children:e},e))})}),t.jsx("tbody",{children:m?t.jsx("tr",{children:t.jsx("td",{colSpan:8,style:{padding:40,textAlign:"center",color:"#94a3b8"},children:"로딩 중..."})}):g.length===0?t.jsx("tr",{children:t.jsx("td",{colSpan:8,style:{padding:40,textAlign:"center",color:"#94a3b8"},children:a?"검색 결과가 없습니다.":"등록된 회원이 없습니다."})}):g.map(e=>t.jsxs("tr",{style:{borderBottom:"1px solid #f1f5f9"},children:[t.jsxs("td",{style:{padding:"10px 14px",color:"#94a3b8"},children:["#",e.id]}),t.jsx("td",{style:{padding:"10px 14px",fontWeight:600,color:"#1e293b"},children:e.name}),t.jsx("td",{style:{padding:"10px 14px",color:"#475569"},children:e.email}),t.jsx("td",{style:{padding:"10px 14px",color:"#64748b"},children:e.phone||"-"}),t.jsx("td",{style:{padding:"10px 14px",color:"#64748b"},children:e.company||"-"}),t.jsx("td",{style:{padding:"10px 14px",color:"#64748b",fontSize:12},children:e.createdAt?new Date(e.createdAt).toLocaleDateString("ko-KR"):"-"}),t.jsx("td",{style:{padding:"10px 14px"},children:t.jsx("span",{style:{padding:"3px 10px",borderRadius:12,fontSize:11,fontWeight:700,background:e.active?"#dcfce7":"#fee2e2",color:e.active?"#16a34a":"#dc2626"},children:e.active?"활성":"비활성"})}),t.jsx("td",{style:{padding:"10px 14px"},children:t.jsxs("div",{style:{display:"flex",gap:6},children:[t.jsx("button",{onClick:()=>v(e.id,e.active),style:{padding:"4px 10px",fontSize:11,borderRadius:6,cursor:"pointer",background:e.active?"#fef3c7":"#dcfce7",color:e.active?"#92400e":"#166534",border:"none"},children:e.active?"비활성화":"활성화"}),t.jsx("button",{onClick:()=>z(e.id),style:{padding:"4px 10px",fontSize:11,borderRadius:6,cursor:"pointer",background:"#fef2f2",color:"#dc2626",border:"none"},children:"삭제"})]})})]},e.id))})]})}),s>1&&t.jsxs("div",{style:{display:"flex",gap:6,justifyContent:"center",marginTop:20},children:[t.jsx("button",{onClick:()=>i(e=>Math.max(0,e-1)),disabled:n===0,style:{padding:"6px 14px",borderRadius:6,border:"1px solid #e2e8f0",background:"#fff",cursor:"pointer",fontSize:13},children:"이전"}),Array.from({length:Math.min(5,s)},(e,r)=>{const o=Math.max(0,Math.min(n-2,s-5))+r;return t.jsx("button",{onClick:()=>i(o),style:{padding:"6px 12px",borderRadius:6,fontSize:13,cursor:"pointer",border:o===n?"none":"1px solid #e2e8f0",background:o===n?"#1a5fd8":"#fff",color:o===n?"#fff":"#475569"},children:o+1},o)}),t.jsx("button",{onClick:()=>i(e=>Math.min(s-1,e+1)),disabled:n===s-1,style:{padding:"6px 14px",borderRadius:6,border:"1px solid #e2e8f0",background:"#fff",cursor:"pointer",fontSize:13},children:"다음"})]})]})}export{C as default};
import{r as d,j as t}from"./index-CpO7mTKO.js";const c="/api/admin/members",w=()=>localStorage.getItem("admin_token"),p=()=>({Authorization:`Bearer ${w()}`,"Content-Type":"application/json"});function C(){const[x,y]=d.useState({content:[],totalElements:0}),[n,i]=d.useState(0),[f,j]=d.useState(""),[a,S]=d.useState(""),[m,h]=d.useState(!1),l=async(e=n,r=a)=>{h(!0);try{const o=new URLSearchParams({page:e,size:20,...r&&{keyword:r}}),u=await fetch(`${c}?${o}`,{headers:p()});u.ok&&y(await u.json())}finally{h(!1)}};d.useEffect(()=>{l()},[n,a]);const k=e=>{e.preventDefault(),i(0),S(f)},v=async(e,r)=>{confirm(`${r?"비활성화":"활성화"}하시겠습니까?`)&&(await fetch(`${c}/${e}/status`,{method:"PATCH",headers:p(),body:JSON.stringify({active:!r})}),l())},z=async e=>{confirm("삭제하면 복구할 수 없습니다. 삭제하시겠습니까?")&&(await fetch(`${c}/${e}`,{method:"DELETE",headers:p()}),l())},g=x.content||[],b=x.totalElements||0,s=Math.ceil(b/20);return t.jsxs("div",{children:[t.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:24},children:[t.jsxs("div",{children:[t.jsx("h2",{style:{fontSize:20,fontWeight:700,color:"#1e293b",margin:0},children:"회원 관리"}),t.jsxs("p",{style:{fontSize:13,color:"#64748b",margin:"4px 0 0"},children:["총 ",b.toLocaleString(),"명"]})]}),t.jsxs("form",{onSubmit:k,style:{display:"flex",gap:8},children:[t.jsx("input",{value:f,onChange:e=>j(e.target.value),placeholder:"이름 / 이메일 / 소속 검색",style:{padding:"8px 14px",border:"1px solid #e2e8f0",borderRadius:8,fontSize:13,width:240,outline:"none"}}),t.jsx("button",{type:"submit",style:{padding:"8px 16px",background:"#1a5fd8",color:"#fff",border:"none",borderRadius:8,fontSize:13,cursor:"pointer"},children:"검색"})]})]}),t.jsx("div",{style:{background:"#fff",border:"1px solid #e2e8f0",borderRadius:10,overflow:"hidden"},children:t.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:13},children:[t.jsx("thead",{children:t.jsx("tr",{style:{background:"#f8fafc"},children:["ID","이름","이메일","연락처","소속","가입일","상태","액션"].map(e=>t.jsx("th",{style:{padding:"10px 14px",textAlign:"left",fontWeight:600,color:"#475569",borderBottom:"1px solid #e2e8f0"},children:e},e))})}),t.jsx("tbody",{children:m?t.jsx("tr",{children:t.jsx("td",{colSpan:8,style:{padding:40,textAlign:"center",color:"#94a3b8"},children:"로딩 중..."})}):g.length===0?t.jsx("tr",{children:t.jsx("td",{colSpan:8,style:{padding:40,textAlign:"center",color:"#94a3b8"},children:a?"검색 결과가 없습니다.":"등록된 회원이 없습니다."})}):g.map(e=>t.jsxs("tr",{style:{borderBottom:"1px solid #f1f5f9"},children:[t.jsxs("td",{style:{padding:"10px 14px",color:"#94a3b8"},children:["#",e.id]}),t.jsx("td",{style:{padding:"10px 14px",fontWeight:600,color:"#1e293b"},children:e.name}),t.jsx("td",{style:{padding:"10px 14px",color:"#475569"},children:e.email}),t.jsx("td",{style:{padding:"10px 14px",color:"#64748b"},children:e.phone||"-"}),t.jsx("td",{style:{padding:"10px 14px",color:"#64748b"},children:e.company||"-"}),t.jsx("td",{style:{padding:"10px 14px",color:"#64748b",fontSize:12},children:e.createdAt?new Date(e.createdAt).toLocaleDateString("ko-KR"):"-"}),t.jsx("td",{style:{padding:"10px 14px"},children:t.jsx("span",{style:{padding:"3px 10px",borderRadius:12,fontSize:11,fontWeight:700,background:e.active?"#dcfce7":"#fee2e2",color:e.active?"#16a34a":"#dc2626"},children:e.active?"활성":"비활성"})}),t.jsx("td",{style:{padding:"10px 14px"},children:t.jsxs("div",{style:{display:"flex",gap:6},children:[t.jsx("button",{onClick:()=>v(e.id,e.active),style:{padding:"4px 10px",fontSize:11,borderRadius:6,cursor:"pointer",background:e.active?"#fef3c7":"#dcfce7",color:e.active?"#92400e":"#166534",border:"none"},children:e.active?"비활성화":"활성화"}),t.jsx("button",{onClick:()=>z(e.id),style:{padding:"4px 10px",fontSize:11,borderRadius:6,cursor:"pointer",background:"#fef2f2",color:"#dc2626",border:"none"},children:"삭제"})]})})]},e.id))})]})}),s>1&&t.jsxs("div",{style:{display:"flex",gap:6,justifyContent:"center",marginTop:20},children:[t.jsx("button",{onClick:()=>i(e=>Math.max(0,e-1)),disabled:n===0,style:{padding:"6px 14px",borderRadius:6,border:"1px solid #e2e8f0",background:"#fff",cursor:"pointer",fontSize:13},children:"이전"}),Array.from({length:Math.min(5,s)},(e,r)=>{const o=Math.max(0,Math.min(n-2,s-5))+r;return t.jsx("button",{onClick:()=>i(o),style:{padding:"6px 12px",borderRadius:6,fontSize:13,cursor:"pointer",border:o===n?"none":"1px solid #e2e8f0",background:o===n?"#1a5fd8":"#fff",color:o===n?"#fff":"#475569"},children:o+1},o)}),t.jsx("button",{onClick:()=>i(e=>Math.min(s-1,e+1)),disabled:n===s-1,style:{padding:"6px 14px",borderRadius:6,border:"1px solid #e2e8f0",background:"#fff",cursor:"pointer",fontSize:13},children:"다음"})]})]})}export{C as default};

View File

@ -1 +1 @@
import{c as u,r as d,j as e}from"./index-B5QEzx5R.js";const h=()=>localStorage.getItem("admin_token");function f(){const m=u(),i=JSON.parse(localStorage.getItem("admin_user")||"{}"),[r,n]=d.useState({currentPassword:"",newPassword:"",confirmPassword:""}),[t,o]=d.useState(null),[l,c]=d.useState(!1),p=async()=>{if(r.newPassword!==r.confirmPassword){o({text:"새 비밀번호가 일치하지 않습니다.",type:"error"});return}if(r.newPassword.length<8){o({text:"비밀번호는 8자 이상이어야 합니다.",type:"error"});return}c(!0);const s=await fetch("/api/admin/password",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${h()}`},body:JSON.stringify({currentPassword:r.currentPassword,newPassword:r.newPassword})}),a=await s.json();c(!1),s.ok?(o({text:"비밀번호가 변경되었습니다. 다시 로그인해주세요.",type:"success"}),n({currentPassword:"",newPassword:"",confirmPassword:""}),setTimeout(()=>{localStorage.removeItem("admin_token"),m("/admin/login")},2e3)):o({text:a.message||"변경 실패",type:"error"})};return e.jsxs("div",{style:{maxWidth:520},children:[e.jsxs("div",{className:"admin-card",style:{marginBottom:20},children:[e.jsx("div",{className:"admin-card-header",children:e.jsx("h3",{children:"👤 계정 정보"})}),e.jsx("div",{style:{display:"grid",gap:12},children:[["아이디",i.username],["표시 이름",i.displayName||"-"]].map(([s,a])=>e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12},children:[e.jsx("span",{style:{fontSize:12,fontWeight:600,color:"#64748b",width:80},children:s}),e.jsx("span",{style:{fontSize:14},children:a})]},s))})]}),e.jsxs("div",{className:"admin-card",children:[e.jsx("div",{className:"admin-card-header",children:e.jsx("h3",{children:"🔒 비밀번호 변경"})}),t&&e.jsx("div",{style:{padding:"10px 14px",borderRadius:7,marginBottom:16,fontSize:13,background:t.type==="error"?"#fff1f2":"#f0fdf4",color:t.type==="error"?"#dc2626":"#16a34a",border:`1px solid ${t.type==="error"?"#fecaca":"#bbf7d0"}`},children:t.text}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"현재 비밀번호"}),e.jsx("input",{type:"password",className:"form-control",value:r.currentPassword,onChange:s=>n(a=>({...a,currentPassword:s.target.value}))})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"새 비밀번호"}),e.jsx("input",{type:"password",className:"form-control",value:r.newPassword,placeholder:"8자 이상",onChange:s=>n(a=>({...a,newPassword:s.target.value}))})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"새 비밀번호 확인"}),e.jsx("input",{type:"password",className:"form-control",value:r.confirmPassword,onChange:s=>n(a=>({...a,confirmPassword:s.target.value}))})]}),e.jsx("button",{className:"btn btn-primary",onClick:p,disabled:l||!r.currentPassword||!r.newPassword,children:l?"변경 중...":"비밀번호 변경"})]})]})}export{f as default};
import{c as u,r as d,j as e}from"./index-CpO7mTKO.js";const h=()=>localStorage.getItem("admin_token");function f(){const m=u(),i=JSON.parse(localStorage.getItem("admin_user")||"{}"),[r,n]=d.useState({currentPassword:"",newPassword:"",confirmPassword:""}),[t,o]=d.useState(null),[l,c]=d.useState(!1),p=async()=>{if(r.newPassword!==r.confirmPassword){o({text:"새 비밀번호가 일치하지 않습니다.",type:"error"});return}if(r.newPassword.length<8){o({text:"비밀번호는 8자 이상이어야 합니다.",type:"error"});return}c(!0);const s=await fetch("/api/admin/password",{method:"PUT",headers:{"Content-Type":"application/json",Authorization:`Bearer ${h()}`},body:JSON.stringify({currentPassword:r.currentPassword,newPassword:r.newPassword})}),a=await s.json();c(!1),s.ok?(o({text:"비밀번호가 변경되었습니다. 다시 로그인해주세요.",type:"success"}),n({currentPassword:"",newPassword:"",confirmPassword:""}),setTimeout(()=>{localStorage.removeItem("admin_token"),m("/admin/login")},2e3)):o({text:a.message||"변경 실패",type:"error"})};return e.jsxs("div",{style:{maxWidth:520},children:[e.jsxs("div",{className:"admin-card",style:{marginBottom:20},children:[e.jsx("div",{className:"admin-card-header",children:e.jsx("h3",{children:"👤 계정 정보"})}),e.jsx("div",{style:{display:"grid",gap:12},children:[["아이디",i.username],["표시 이름",i.displayName||"-"]].map(([s,a])=>e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:12},children:[e.jsx("span",{style:{fontSize:12,fontWeight:600,color:"#64748b",width:80},children:s}),e.jsx("span",{style:{fontSize:14},children:a})]},s))})]}),e.jsxs("div",{className:"admin-card",children:[e.jsx("div",{className:"admin-card-header",children:e.jsx("h3",{children:"🔒 비밀번호 변경"})}),t&&e.jsx("div",{style:{padding:"10px 14px",borderRadius:7,marginBottom:16,fontSize:13,background:t.type==="error"?"#fff1f2":"#f0fdf4",color:t.type==="error"?"#dc2626":"#16a34a",border:`1px solid ${t.type==="error"?"#fecaca":"#bbf7d0"}`},children:t.text}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"현재 비밀번호"}),e.jsx("input",{type:"password",className:"form-control",value:r.currentPassword,onChange:s=>n(a=>({...a,currentPassword:s.target.value}))})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"새 비밀번호"}),e.jsx("input",{type:"password",className:"form-control",value:r.newPassword,placeholder:"8자 이상",onChange:s=>n(a=>({...a,newPassword:s.target.value}))})]}),e.jsxs("div",{className:"form-group",children:[e.jsx("label",{children:"새 비밀번호 확인"}),e.jsx("input",{type:"password",className:"form-control",value:r.confirmPassword,onChange:s=>n(a=>({...a,confirmPassword:s.target.value}))})]}),e.jsx("button",{className:"btn btn-primary",onClick:p,disabled:l||!r.currentPassword||!r.newPassword,children:l?"변경 중...":"비밀번호 변경"})]})]})}export{f as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
import{r as i,j as s,R as N,L as l}from"./index-B5QEzx5R.js";import{a as p}from"./index-DcNlVx-A.js";import{u as b}from"./useSeoMeta-SwLKmP5e.js";const n=[{title:`AI 기반 인프라
import{r as i,j as s,R as N,L as l}from"./index-CpO7mTKO.js";import{a as p}from"./index-DcNlVx-A.js";import{u as b}from"./useSeoMeta-DR7HJfMM.js";const n=[{title:`AI 기반 인프라
자율 운영 플랫폼`,sub:"GUARDiA ITSM — 메신저 한 줄로 1,000개 관공서 인프라를 자동화",cta:{label:"GUARDiA 알아보기",path:"/solution/guardia"},badge:"NEW",bg:"slide-1"},{title:`공공기관 전문
IT 솔루션 기업`,sub:"20년 경험의 지오정보기술이 최첨단 AI 기술로 여러분과 함께합니다",cta:{label:"회사소개 보기",path:"/company/greeting"},badge:"",bg:"slide-2"},{title:`에이전트리스
자동화 혁신`,sub:"대상 서버에 소프트웨어 설치 없이 SSH만으로 레거시 인프라를 관리",cta:{label:"도입 문의",path:"/support/contact"},badge:"",bg:"slide-3"}],v=[{icon:"🤖",title:"AI 자동화",desc:"GUARDiA ITSM 플랫폼으로 레거시 인프라 운영을 완전 자동화",path:"/solution/guardia",color:"var(--primary)"},{icon:"🏗️",title:"SI 구축",desc:"공공기관 정보화사업 시스템 통합 및 맞춤형 개발",path:"/business/reference",color:"var(--accent)"},{icon:"💼",title:"ERP·CRM·BI",desc:"기업 경영 효율화를 위한 통합 솔루션 패키지",path:"/solution/erp",color:"#10B981"}],g=[{icon:"💬",label:"ChatOps",desc:"메신저 명령으로 인프라 제어"},{icon:"🔧",label:"에이전트리스",desc:"SSH만으로 에이전트 설치 없음"},{icon:"📊",label:"통합 ITSM",desc:"SR·인시던트·변경·SLA 통합"},{icon:"🔒",label:"엔터프라이즈 보안",desc:"MFA·PAM·Zero Trust"}],S=[{value:"1,000+",label:"관리 가능 기관 수"},{value:"99.9%",label:"시스템 가용성"},{value:"70%",label:"SR 처리 시간 단축"},{value:"20년+",label:"IT 사업 경험"}];function R(){b({title:"AI 기반 인프라 자율 운영 플랫폼 GUARDiA ITSM",description:"(주)지오정보기술은 메신저 한 줄 명령으로 공공기관 레거시 IT 인프라를 자동 운영하는 GUARDiA ITSM을 개발합니다. 에이전트 설치 없이 SSH/SFTP로 1,000개 기관 운영 자동화.",path:"/",keywords:"지오정보기술, GUARDiA ITSM, 공공기관 인프라 자동화, AI 운영, ChatOps"});const[d,t]=i.useState(0),[r,o]=i.useState(!1),[h,x]=i.useState([]),m=i.useRef(null);i.useEffect(()=>{if(!r)return m.current=setInterval(()=>t(e=>(e+1)%n.length),5e3),()=>clearInterval(m.current)},[r]),i.useEffect(()=>{p.get("/api/news?size=4").then(e=>x(e.data.content||[])).catch(()=>{})},[]);const j=()=>t(e=>(e-1+n.length)%n.length),u=()=>t(e=>(e+1)%n.length),c=n[d];return s.jsxs("main",{id:"main-content",children:[s.jsxs("section",{className:`hero hero-${d}`,onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),"aria-label":"메인 슬라이더",children:[s.jsx("div",{className:"hero-overlay"}),s.jsxs("div",{className:"hero-content container",children:[c.badge&&s.jsx("span",{className:"hero-badge",children:c.badge}),s.jsx("h1",{className:"hero-title",children:c.title.split(`

View File

@ -1,4 +1,4 @@
import{j as e,b as o,a as n,r as h,N as x}from"./index-B5QEzx5R.js";/* empty css */const p=[{path:"/news/newsroom",label:"뉴스룸"},{path:"/news/blog",label:"기술 블로그"}];function d({title:a}){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"page-hero",children:e.jsxs("div",{className:"container",children:[e.jsx("span",{className:"section-label",children:"News"}),e.jsx("h1",{className:"page-hero-title",children:a})]})}),e.jsx("nav",{className:"sub-nav",children:e.jsx("div",{className:"container",children:p.map(t=>e.jsx(x,{to:t.path,className:({isActive:i})=>"sub-nav-item"+(i?" active":""),children:t.label},t.path))})})]})}const l=[{id:1,cat:"제품 출시",date:"2026.05.15",title:"GUARDiA ITSM v2.0 정식 출시 — AI ChatOps 오케스트레이션 플랫폼",summary:"메신저 한 줄 명령으로 1,000개+ 공공기관 레거시 인프라를 자동 운영하는 GUARDiA ITSM v2.0이 정식 출시되었습니다. 신규 기능으로 AI 자연어 명령, 에이전트리스 배포 엔진, 멀티테넌트 지원이 추가됐습니다.",content:`GUARDiA ITSM v2.0은 공공기관의 레거시 IT 인프라 운영 자동화를 위한 AI 기반 플랫폼입니다.
import{j as e,b as o,a as n,r as h,N as x}from"./index-CpO7mTKO.js";/* empty css */const p=[{path:"/news/newsroom",label:"뉴스룸"},{path:"/news/blog",label:"기술 블로그"}];function d({title:a}){return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"page-hero",children:e.jsxs("div",{className:"container",children:[e.jsx("span",{className:"section-label",children:"News"}),e.jsx("h1",{className:"page-hero-title",children:a})]})}),e.jsx("nav",{className:"sub-nav",children:e.jsx("div",{className:"container",children:p.map(t=>e.jsx(x,{to:t.path,className:({isActive:i})=>"sub-nav-item"+(i?" active":""),children:t.label},t.path))})})]})}const l=[{id:1,cat:"제품 출시",date:"2026.05.15",title:"GUARDiA ITSM v2.0 정식 출시 — AI ChatOps 오케스트레이션 플랫폼",summary:"메신저 한 줄 명령으로 1,000개+ 공공기관 레거시 인프라를 자동 운영하는 GUARDiA ITSM v2.0이 정식 출시되었습니다. 신규 기능으로 AI 자연어 명령, 에이전트리스 배포 엔진, 멀티테넌트 지원이 추가됐습니다.",content:`GUARDiA ITSM v2.0은 공공기관의 레거시 IT 인프라 운영 자동화를 위한 AI 기반 플랫폼입니다.
주요 신기능:
- AI ChatOps: 메신저 자연어 명령 Ollama LLM 파싱 자동 실행

View File

@ -1 +1 @@
import{j as e,L as t}from"./index-B5QEzx5R.js";function i(){return e.jsxs("main",{style:{paddingTop:"var(--header-h)",minHeight:"60vh",display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:"16px",textAlign:"center"},children:[e.jsx("div",{style:{fontSize:"72px"},children:"404"}),e.jsx("h1",{style:{fontSize:"24px",fontWeight:"700"},children:"페이지를 찾을 수 없습니다"}),e.jsx("p",{style:{color:"var(--gray-600)"},children:"요청하신 페이지가 존재하지 않거나 이동되었습니다."}),e.jsx(t,{to:"/",className:"btn btn-primary",children:"홈으로 돌아가기"})]})}export{i as default};
import{j as e,L as t}from"./index-CpO7mTKO.js";function i(){return e.jsxs("main",{style:{paddingTop:"var(--header-h)",minHeight:"60vh",display:"flex",alignItems:"center",justifyContent:"center",flexDirection:"column",gap:"16px",textAlign:"center"},children:[e.jsx("div",{style:{fontSize:"72px"},children:"404"}),e.jsx("h1",{style:{fontSize:"24px",fontWeight:"700"},children:"페이지를 찾을 수 없습니다"}),e.jsx("p",{style:{color:"var(--gray-600)"},children:"요청하신 페이지가 존재하지 않거나 이동되었습니다."}),e.jsx(t,{to:"/",className:"btn btn-primary",children:"홈으로 돌아가기"})]})}export{i as default};

View File

@ -1 +1 @@
import{j as s}from"./index-B5QEzx5R.js";/* empty css */import{u as i}from"./useSeoMeta-SwLKmP5e.js";function c(){return i({title:"개인정보처리방침",description:"(주)지오정보기술 개인정보처리방침. 수집 항목, 보유 기간, 이용자 권리, 개인정보 보호책임자 안내.",path:"/privacy"}),s.jsx("main",{id:"main-content",className:"inner-page",children:s.jsx("section",{className:"section",children:s.jsxs("div",{className:"container",style:{maxWidth:"800px"},children:[s.jsxs("div",{className:"section-header",children:[s.jsx("span",{className:"section-label",children:"Privacy Policy"}),s.jsx("h1",{className:"section-title",children:"개인정보처리방침"}),s.jsx("p",{className:"section-desc",style:{fontSize:"13px",color:"var(--gray-500)"},children:"시행일자: 2026년 01월 01일  |  최종 수정: 2026년 05월 31일"})]}),s.jsxs("div",{className:"prose",children:[s.jsx("p",{children:'(주)지오정보기술(이하 "회사")은 이용자의 개인정보를 중요시하며, 「개인정보 보호법」 및 관련 법령을 준수합니다.'}),s.jsx("h2",{children:"제1조 (개인정보의 수집 항목 및 목적)"}),s.jsxs("table",{className:"policy-table",children:[s.jsx("thead",{children:s.jsxs("tr",{children:[s.jsx("th",{children:"구분"}),s.jsx("th",{children:"수집 항목"}),s.jsx("th",{children:"수집 목적"})]})}),s.jsxs("tbody",{children:[s.jsxs("tr",{children:[s.jsx("td",{children:"회원가입"}),s.jsx("td",{children:"이름, 이메일, 비밀번호, 연락처, 소속"}),s.jsx("td",{children:"회원 식별, 서비스 제공"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"문의 접수"}),s.jsx("td",{children:"이름, 이메일, 연락처, 문의 내용"}),s.jsx("td",{children:"문의 처리, 답변 발송"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"채용 지원"}),s.jsx("td",{children:"이름, 이메일, 연락처, 이력서"}),s.jsx("td",{children:"채용 심사, 합격자 통보"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"서비스 이용"}),s.jsx("td",{children:"접속 IP, 쿠키, 방문 이력"}),s.jsx("td",{children:"서비스 개선, 보안"})]})]})]}),s.jsx("h2",{children:"제2조 (개인정보의 보유 및 이용 기간)"}),s.jsxs("ul",{children:[s.jsx("li",{children:"회원 정보: 회원 탈퇴 시 즉시 파기"}),s.jsx("li",{children:"문의/상담 이력: 처리 완료 후 3년"}),s.jsx("li",{children:"채용 서류: 채용 완료 후 6개월 (불합격자 즉시 파기 원칙)"}),s.jsx("li",{children:"법령에 의한 보존이 필요한 경우 해당 기간"})]}),s.jsx("h2",{children:"제3조 (개인정보의 제3자 제공)"}),s.jsx("p",{children:"회사는 이용자의 개인정보를 원칙적으로 외부에 제공하지 않습니다. 단, 이용자의 동의가 있거나 법령에 의한 경우에는 예외로 합니다."}),s.jsx("h2",{children:"제4조 (개인정보 처리의 위탁)"}),s.jsx("p",{children:"현재 개인정보 처리를 위탁하는 업무는 없습니다. 추후 위탁 발생 시 사전 고지합니다."}),s.jsx("h2",{children:"제5조 (이용자의 권리)"}),s.jsxs("ul",{children:[s.jsx("li",{children:"개인정보 열람, 정정, 삭제, 처리정지 요청 가능"}),s.jsx("li",{children:"요청 방법: 이메일(info@zioinfo.co.kr) 또는 전화(031-483-1766)"}),s.jsx("li",{children:"처리 기간: 요청 후 10일 이내"})]}),s.jsx("h2",{children:"제6조 (개인정보의 파기)"}),s.jsx("p",{children:"보유 기간 만료 시 지체 없이 파기합니다. 전자 파일은 복구 불가능한 방법으로 삭제하며, 서면은 분쇄 또는 소각합니다."}),s.jsx("h2",{children:"제7조 (쿠키 사용)"}),s.jsx("p",{children:"홈페이지 이용 편의를 위해 쿠키를 사용합니다. 브라우저 설정에서 쿠키 허용 여부를 조정할 수 있습니다."}),s.jsx("h2",{children:"제8조 (개인정보 보호책임자)"}),s.jsx("table",{className:"policy-table",children:s.jsxs("tbody",{children:[s.jsxs("tr",{children:[s.jsx("td",{children:"성명"}),s.jsx("td",{children:"홍영택"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"직책"}),s.jsx("td",{children:"대표이사"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"연락처"}),s.jsx("td",{children:"031-483-1766"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"이메일"}),s.jsx("td",{children:"info@zioinfo.co.kr"})]})]})}),s.jsx("h2",{children:"제9조 (개인정보 침해 신고)"}),s.jsxs("ul",{children:[s.jsx("li",{children:"개인정보보호위원회 개인정보 침해 신고센터: (국번없이) 182"}),s.jsx("li",{children:"대검찰청 사이버수사과: (국번없이) 1301"}),s.jsx("li",{children:"경찰청 사이버안전국: (국번없이) 182"})]}),s.jsxs("p",{className:"policy-footer",children:["본 방침은 2026년 01월 01일부터 시행됩니다.",s.jsx("br",{}),"변경 시 홈페이지를 통해 공지합니다."]})]})]})})})}export{c as default};
import{j as s}from"./index-CpO7mTKO.js";/* empty css */import{u as i}from"./useSeoMeta-DR7HJfMM.js";function c(){return i({title:"개인정보처리방침",description:"(주)지오정보기술 개인정보처리방침. 수집 항목, 보유 기간, 이용자 권리, 개인정보 보호책임자 안내.",path:"/privacy"}),s.jsx("main",{id:"main-content",className:"inner-page",children:s.jsx("section",{className:"section",children:s.jsxs("div",{className:"container",style:{maxWidth:"800px"},children:[s.jsxs("div",{className:"section-header",children:[s.jsx("span",{className:"section-label",children:"Privacy Policy"}),s.jsx("h1",{className:"section-title",children:"개인정보처리방침"}),s.jsx("p",{className:"section-desc",style:{fontSize:"13px",color:"var(--gray-500)"},children:"시행일자: 2026년 01월 01일  |  최종 수정: 2026년 05월 31일"})]}),s.jsxs("div",{className:"prose",children:[s.jsx("p",{children:'(주)지오정보기술(이하 "회사")은 이용자의 개인정보를 중요시하며, 「개인정보 보호법」 및 관련 법령을 준수합니다.'}),s.jsx("h2",{children:"제1조 (개인정보의 수집 항목 및 목적)"}),s.jsxs("table",{className:"policy-table",children:[s.jsx("thead",{children:s.jsxs("tr",{children:[s.jsx("th",{children:"구분"}),s.jsx("th",{children:"수집 항목"}),s.jsx("th",{children:"수집 목적"})]})}),s.jsxs("tbody",{children:[s.jsxs("tr",{children:[s.jsx("td",{children:"회원가입"}),s.jsx("td",{children:"이름, 이메일, 비밀번호, 연락처, 소속"}),s.jsx("td",{children:"회원 식별, 서비스 제공"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"문의 접수"}),s.jsx("td",{children:"이름, 이메일, 연락처, 문의 내용"}),s.jsx("td",{children:"문의 처리, 답변 발송"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"채용 지원"}),s.jsx("td",{children:"이름, 이메일, 연락처, 이력서"}),s.jsx("td",{children:"채용 심사, 합격자 통보"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"서비스 이용"}),s.jsx("td",{children:"접속 IP, 쿠키, 방문 이력"}),s.jsx("td",{children:"서비스 개선, 보안"})]})]})]}),s.jsx("h2",{children:"제2조 (개인정보의 보유 및 이용 기간)"}),s.jsxs("ul",{children:[s.jsx("li",{children:"회원 정보: 회원 탈퇴 시 즉시 파기"}),s.jsx("li",{children:"문의/상담 이력: 처리 완료 후 3년"}),s.jsx("li",{children:"채용 서류: 채용 완료 후 6개월 (불합격자 즉시 파기 원칙)"}),s.jsx("li",{children:"법령에 의한 보존이 필요한 경우 해당 기간"})]}),s.jsx("h2",{children:"제3조 (개인정보의 제3자 제공)"}),s.jsx("p",{children:"회사는 이용자의 개인정보를 원칙적으로 외부에 제공하지 않습니다. 단, 이용자의 동의가 있거나 법령에 의한 경우에는 예외로 합니다."}),s.jsx("h2",{children:"제4조 (개인정보 처리의 위탁)"}),s.jsx("p",{children:"현재 개인정보 처리를 위탁하는 업무는 없습니다. 추후 위탁 발생 시 사전 고지합니다."}),s.jsx("h2",{children:"제5조 (이용자의 권리)"}),s.jsxs("ul",{children:[s.jsx("li",{children:"개인정보 열람, 정정, 삭제, 처리정지 요청 가능"}),s.jsx("li",{children:"요청 방법: 이메일(info@zioinfo.co.kr) 또는 전화(031-483-1766)"}),s.jsx("li",{children:"처리 기간: 요청 후 10일 이내"})]}),s.jsx("h2",{children:"제6조 (개인정보의 파기)"}),s.jsx("p",{children:"보유 기간 만료 시 지체 없이 파기합니다. 전자 파일은 복구 불가능한 방법으로 삭제하며, 서면은 분쇄 또는 소각합니다."}),s.jsx("h2",{children:"제7조 (쿠키 사용)"}),s.jsx("p",{children:"홈페이지 이용 편의를 위해 쿠키를 사용합니다. 브라우저 설정에서 쿠키 허용 여부를 조정할 수 있습니다."}),s.jsx("h2",{children:"제8조 (개인정보 보호책임자)"}),s.jsx("table",{className:"policy-table",children:s.jsxs("tbody",{children:[s.jsxs("tr",{children:[s.jsx("td",{children:"성명"}),s.jsx("td",{children:"홍영택"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"직책"}),s.jsx("td",{children:"대표이사"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"연락처"}),s.jsx("td",{children:"031-483-1766"})]}),s.jsxs("tr",{children:[s.jsx("td",{children:"이메일"}),s.jsx("td",{children:"info@zioinfo.co.kr"})]})]})}),s.jsx("h2",{children:"제9조 (개인정보 침해 신고)"}),s.jsxs("ul",{children:[s.jsx("li",{children:"개인정보보호위원회 개인정보 침해 신고센터: (국번없이) 182"}),s.jsx("li",{children:"대검찰청 사이버수사과: (국번없이) 1301"}),s.jsx("li",{children:"경찰청 사이버안전국: (국번없이) 182"})]}),s.jsxs("p",{className:"policy-footer",children:["본 방침은 2026년 01월 01일부터 시행됩니다.",s.jsx("br",{}),"변경 시 홈페이지를 통해 공지합니다."]})]})]})})})}export{c as default};

View File

@ -1 +1 @@
import{j as a,L as n}from"./index-B5QEzx5R.js";/* empty css */import{u as s}from"./useSeoMeta-SwLKmP5e.js";const p=[{title:"홈",icon:"🏠",links:[{label:"메인 홈페이지",path:"/"}]},{title:"회사소개",icon:"🏢",links:[{label:"CEO 인사말",path:"/company/greeting"},{label:"연혁",path:"/company/history"},{label:"조직도",path:"/company/organization"},{label:"CI 소개",path:"/company/ci"},{label:"오시는 길",path:"/company/location"}]},{title:"솔루션",icon:"🛡️",links:[{label:"GUARDiA ITSM",path:"/solution/guardia",badge:"NEW"},{label:"ERP 솔루션",path:"/solution/erp"},{label:"CRM 솔루션",path:"/solution/crm"},{label:"BI 솔루션",path:"/solution/bi"}]},{title:"사업실적",icon:"📊",links:[{label:"구축 레퍼런스",path:"/business/reference"},{label:"파트너",path:"/business/partner"}]},{title:"고객지원",icon:"💬",links:[{label:"공지사항",path:"/support/notice"},{label:"FAQ",path:"/support/faq"},{label:"카탈로그",path:"/support/catalog"},{label:"문의하기",path:"/support/contact"}]},{title:"채용",icon:"👥",links:[{label:"채용공고",path:"/recruit/jobs"},{label:"복리후생",path:"/recruit/welfare"},{label:"지원하기",path:"/recruit/apply"}]},{title:"뉴스",icon:"📰",links:[{label:"뉴스룸",path:"/news/newsroom"},{label:"기술 블로그",path:"/news/blog"}]},{title:"회원",icon:"🔑",links:[{label:"로그인 / 회원가입",path:"/login"}]},{title:"정책",icon:"📋",links:[{label:"개인정보처리방침",path:"/privacy"},{label:"이용약관",path:"/terms"},{label:"사이트맵",path:"/sitemap"}]}];function h(){return s({title:"사이트맵",description:"(주)지오정보기술 홈페이지 전체 메뉴 안내. 회사소개, 솔루션, 사업실적, 고객지원, 채용, 뉴스 등 모든 페이지를 확인하세요.",path:"/sitemap"}),a.jsx("main",{id:"main-content",className:"inner-page",children:a.jsx("section",{className:"section",children:a.jsxs("div",{className:"container",style:{maxWidth:"960px"},children:[a.jsxs("div",{className:"section-header",children:[a.jsx("span",{className:"section-label",children:"Sitemap"}),a.jsx("h1",{className:"section-title",children:"사이트맵"}),a.jsx("p",{className:"section-desc",children:"(주)지오정보기술 홈페이지 전체 메뉴 안내"})]}),a.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:"24px",marginTop:"40px"},children:p.map((l,t)=>a.jsxs("div",{style:{background:"#fff",borderRadius:"12px",padding:"24px",boxShadow:"0 2px 12px rgba(0,0,0,.06)",border:"1px solid var(--gray-200)"},children:[a.jsxs("h2",{style:{fontSize:"16px",fontWeight:"700",color:"var(--gray-900)",marginBottom:"16px",display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{children:l.icon})," ",l.title]}),a.jsx("ul",{style:{listStyle:"none",display:"flex",flexDirection:"column",gap:"10px"},children:l.links.map((e,i)=>a.jsx("li",{children:a.jsxs(n,{to:e.path,style:{color:"var(--primary)",textDecoration:"none",fontSize:"14px",display:"flex",alignItems:"center",gap:"6px"},children:[a.jsx("span",{style:{color:"var(--gray-400)",fontSize:"12px"},children:""}),e.label,e.badge&&a.jsx("span",{style:{fontSize:"10px",padding:"1px 6px",background:"var(--accent)",color:"#fff",borderRadius:"8px",fontWeight:"700"},children:e.badge})]})},i))})]},t))})]})})})}export{h as default};
import{j as a,L as n}from"./index-CpO7mTKO.js";/* empty css */import{u as s}from"./useSeoMeta-DR7HJfMM.js";const p=[{title:"홈",icon:"🏠",links:[{label:"메인 홈페이지",path:"/"}]},{title:"회사소개",icon:"🏢",links:[{label:"CEO 인사말",path:"/company/greeting"},{label:"연혁",path:"/company/history"},{label:"조직도",path:"/company/organization"},{label:"CI 소개",path:"/company/ci"},{label:"오시는 길",path:"/company/location"}]},{title:"솔루션",icon:"🛡️",links:[{label:"GUARDiA ITSM",path:"/solution/guardia",badge:"NEW"},{label:"ERP 솔루션",path:"/solution/erp"},{label:"CRM 솔루션",path:"/solution/crm"},{label:"BI 솔루션",path:"/solution/bi"}]},{title:"사업실적",icon:"📊",links:[{label:"구축 레퍼런스",path:"/business/reference"},{label:"파트너",path:"/business/partner"}]},{title:"고객지원",icon:"💬",links:[{label:"공지사항",path:"/support/notice"},{label:"FAQ",path:"/support/faq"},{label:"카탈로그",path:"/support/catalog"},{label:"문의하기",path:"/support/contact"}]},{title:"채용",icon:"👥",links:[{label:"채용공고",path:"/recruit/jobs"},{label:"복리후생",path:"/recruit/welfare"},{label:"지원하기",path:"/recruit/apply"}]},{title:"뉴스",icon:"📰",links:[{label:"뉴스룸",path:"/news/newsroom"},{label:"기술 블로그",path:"/news/blog"}]},{title:"회원",icon:"🔑",links:[{label:"로그인 / 회원가입",path:"/login"}]},{title:"정책",icon:"📋",links:[{label:"개인정보처리방침",path:"/privacy"},{label:"이용약관",path:"/terms"},{label:"사이트맵",path:"/sitemap"}]}];function h(){return s({title:"사이트맵",description:"(주)지오정보기술 홈페이지 전체 메뉴 안내. 회사소개, 솔루션, 사업실적, 고객지원, 채용, 뉴스 등 모든 페이지를 확인하세요.",path:"/sitemap"}),a.jsx("main",{id:"main-content",className:"inner-page",children:a.jsx("section",{className:"section",children:a.jsxs("div",{className:"container",style:{maxWidth:"960px"},children:[a.jsxs("div",{className:"section-header",children:[a.jsx("span",{className:"section-label",children:"Sitemap"}),a.jsx("h1",{className:"section-title",children:"사이트맵"}),a.jsx("p",{className:"section-desc",children:"(주)지오정보기술 홈페이지 전체 메뉴 안내"})]}),a.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:"24px",marginTop:"40px"},children:p.map((l,t)=>a.jsxs("div",{style:{background:"#fff",borderRadius:"12px",padding:"24px",boxShadow:"0 2px 12px rgba(0,0,0,.06)",border:"1px solid var(--gray-200)"},children:[a.jsxs("h2",{style:{fontSize:"16px",fontWeight:"700",color:"var(--gray-900)",marginBottom:"16px",display:"flex",alignItems:"center",gap:"8px"},children:[a.jsx("span",{children:l.icon})," ",l.title]}),a.jsx("ul",{style:{listStyle:"none",display:"flex",flexDirection:"column",gap:"10px"},children:l.links.map((e,i)=>a.jsx("li",{children:a.jsxs(n,{to:e.path,style:{color:"var(--primary)",textDecoration:"none",fontSize:"14px",display:"flex",alignItems:"center",gap:"6px"},children:[a.jsx("span",{style:{color:"var(--gray-400)",fontSize:"12px"},children:""}),e.label,e.badge&&a.jsx("span",{style:{fontSize:"10px",padding:"1px 6px",background:"var(--accent)",color:"#fff",borderRadius:"8px",fontWeight:"700"},children:e.badge})]})},i))})]},t))})]})})})}export{h as default};

View File

@ -1 +1 @@
import{r as $}from"./index-B5QEzx5R.js";const u="https://zioinfo.co.kr",d="(주)지오정보기술";function S({title:a,description:o,path:m="",image:c="/logo.png",keywords:r=""}){$.useEffect(()=>{const l=a?`${a} | ${d}`:d,i=`${u}${m}`,p=c.startsWith("http")?c:`${u}${c}`;document.title=l;const t=(s,f,g)=>{let n=document.querySelector(s);if(!n){n=document.createElement("meta");const[h,E]=s.replace("meta[","").replace("]","").split("=");n.setAttribute(h,E.replace(/"/g,"")),document.head.appendChild(n)}n.setAttribute(f,g)};let e=document.querySelector('link[rel="canonical"]');e||(e=document.createElement("link"),e.rel="canonical",document.head.appendChild(e)),e.href=i,t('meta[name="description"]',"content",o),r&&t('meta[name="keywords"]',"content",r),t('meta[property="og:title"]',"content",l),t('meta[property="og:description"]',"content",o),t('meta[property="og:url"]',"content",i),t('meta[property="og:image"]',"content",p),t('meta[name="twitter:title"]',"content",l),t('meta[name="twitter:description"]',"content",o),t('meta[name="twitter:image"]',"content",p)},[a,o,m,c,r])}export{S as u};
import{r as $}from"./index-CpO7mTKO.js";const u="https://zioinfo.co.kr",d="(주)지오정보기술";function S({title:a,description:o,path:m="",image:c="/logo.png",keywords:r=""}){$.useEffect(()=>{const l=a?`${a} | ${d}`:d,i=`${u}${m}`,p=c.startsWith("http")?c:`${u}${c}`;document.title=l;const t=(s,f,g)=>{let n=document.querySelector(s);if(!n){n=document.createElement("meta");const[h,E]=s.replace("meta[","").replace("]","").split("=");n.setAttribute(h,E.replace(/"/g,"")),document.head.appendChild(n)}n.setAttribute(f,g)};let e=document.querySelector('link[rel="canonical"]');e||(e=document.createElement("link"),e.rel="canonical",document.head.appendChild(e)),e.href=i,t('meta[name="description"]',"content",o),r&&t('meta[name="keywords"]',"content",r),t('meta[property="og:title"]',"content",l),t('meta[property="og:description"]',"content",o),t('meta[property="og:url"]',"content",i),t('meta[property="og:image"]',"content",p),t('meta[name="twitter:title"]',"content",l),t('meta[name="twitter:description"]',"content",o),t('meta[name="twitter:image"]',"content",p)},[a,o,m,c,r])}export{S as u};

View File

@ -87,7 +87,7 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<script type="module" crossorigin src="/assets/index-B5QEzx5R.js"></script>
<script type="module" crossorigin src="/assets/index-CpO7mTKO.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-Dk81znn6.css">
</head>
<body>

View File

@ -48,8 +48,9 @@ export default function Footer() {
{/* 회사 정보 */}
<div className="footer-brand">
<Link to="/" className="footer-logo">
<img src="/logo-white.png" alt="(주)지오정보기술 로고" height="36"
onError={e => { e.target.style.display='none'; e.target.nextSibling.style.display='block'; }} />
<img src="/지오정보기술로고.png" alt="(주)지오정보기술 로고" height="36"
style={{ filter: 'brightness(0) invert(1)' }}
onError={e => { e.target.src='/ziologo.png'; e.target.onerror = () => { e.target.style.display='none'; e.target.nextSibling.style.display='block'; }; }} />
<span className="footer-logo-text" style={{display:'none'}}>
<strong>Zio</strong>Info
</span>

View File

@ -49,10 +49,10 @@ export default function Contact() {
<div className="contact-info">
<h2>연락처 정보</h2>
{[
{ icon: '📞', label: '대표전화', value: '02-000-0000' },
{ icon: '📞', label: '대표전화', value: '031-483-1766' },
{ icon: '✉️', label: '이메일', value: 'info@zioinfo.co.kr' },
{ icon: '🕐', label: '운영시간', value: '평일 09:00 ~ 18:00' },
{ icon: '📍', label: '주소', value: '서울특별시' },
{ icon: '📍', label: '주소', value: '경기도 안산시 단원구 광덕4로 220 오피스브이 578호' },
].map((c,i) => (
<div key={i} className="info-item">
<span className="info-icon">{c.icon}</span>