feat(homepage): 개인정보처리방침·이용약관·사이트맵 페이지 추가

- Privacy.jsx: 개인정보처리방침 (수집항목/목적/보유기간/권리/책임자)
- Terms.jsx: 이용약관 (10개 조항, 지오정보기술 정보 포함)
- Sitemap.jsx: 전체 메뉴 그리드 안내 (9개 섹션)
- App.jsx: /privacy, /terms, /sitemap 라우트 등록
- Common.css: prose/policy 스타일 추가

URL:
  https://zioinfo.co.kr/privacy
  https://zioinfo.co.kr/terms
  https://zioinfo.co.kr/sitemap

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DESKTOP-TKLFCPRython 2026-05-31 12:31:38 +09:00
parent 257ccb57af
commit 8c4e189576
5 changed files with 340 additions and 0 deletions

View File

@ -16,6 +16,9 @@ const NotFound = lazy(() => import('./pages/NotFound'));
// Member Auth
const MemberLogin = lazy(() => import('./pages/MemberLogin'));
const Privacy = lazy(() => import('./pages/Privacy'));
const Terms = lazy(() => import('./pages/Terms'));
const Sitemap = lazy(() => import('./pages/Sitemap'));
// Admin
const AdminLogin = lazy(() => import('./pages/admin/AdminLogin'));
@ -84,6 +87,9 @@ export default function App() {
<Route path="/news/*" element={<NewsPage />} />
<Route path="/login" element={<MemberLogin />} />
<Route path="/register" element={<MemberLogin />} />
<Route path="/privacy" element={<Privacy />} />
<Route path="/terms" element={<Terms />} />
<Route path="/sitemap" element={<Sitemap />} />
<Route path="*" element={<NotFound />} />
</Routes>
</PublicLayout>

View File

@ -5,3 +5,15 @@
}
.page-hero-title { font-size: 40px; font-weight: 900; margin: 8px 0 12px; }
.page-hero p { color: rgba(255,255,255,.75); font-size: 16px; }
/* ── 정책/약관 페이지 ─────────────────────────────────────── */
.prose { color: var(--gray-700); line-height: 1.8; font-size: 15px; }
.prose h2 { font-size: 18px; font-weight: 700; color: var(--gray-900); margin: 32px 0 12px; border-left: 4px solid var(--accent); padding-left: 12px; }
.prose p { margin-bottom: 14px; }
.prose ul { margin: 0 0 14px 20px; }
.prose ul li { margin-bottom: 6px; }
.prose a { color: var(--accent); }
.policy-table { width: 100%; border-collapse: collapse; margin: 14px 0; font-size: 14px; }
.policy-table th, .policy-table td { padding: 10px 14px; border: 1px solid var(--gray-200); }
.policy-table th { background: var(--gray-50); font-weight: 600; color: var(--gray-700); text-align: left; }
.policy-footer { margin-top: 40px; padding: 20px; background: var(--gray-50); border-radius: 10px; font-size: 13px; color: var(--gray-500); line-height: 1.8; }

View File

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

View File

@ -0,0 +1,140 @@
import React from 'react';
import { Link } from 'react-router-dom';
import './Common.css';
const MAP = [
{
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' },
],
},
];
export default function Sitemap() {
return (
<main id="main-content" className="inner-page">
<section className="section">
<div className="container" style={{ maxWidth: '960px' }}>
<div className="section-header">
<span className="section-label">Sitemap</span>
<h1 className="section-title">사이트맵</h1>
<p className="section-desc">()지오정보기술 홈페이지 전체 메뉴 안내</p>
</div>
<div style={{
display: 'grid',
gridTemplateColumns: 'repeat(auto-fill, minmax(220px, 1fr))',
gap: '24px',
marginTop: '40px',
}}>
{MAP.map((section, i) => (
<div key={i} style={{
background: '#fff',
borderRadius: '12px',
padding: '24px',
boxShadow: '0 2px 12px rgba(0,0,0,.06)',
border: '1px solid var(--gray-200)',
}}>
<h2 style={{
fontSize: '16px', fontWeight: '700', color: 'var(--gray-900)',
marginBottom: '16px', display: 'flex', alignItems: 'center', gap: '8px',
}}>
<span>{section.icon}</span> {section.title}
</h2>
<ul style={{ listStyle: 'none', display: 'flex', flexDirection: 'column', gap: '10px' }}>
{section.links.map((link, j) => (
<li key={j}>
<Link to={link.path} style={{
color: 'var(--primary)',
textDecoration: 'none',
fontSize: '14px',
display: 'flex',
alignItems: 'center',
gap: '6px',
}}>
<span style={{ color: 'var(--gray-400)', fontSize: '12px' }}></span>
{link.label}
{link.badge && (
<span style={{
fontSize: '10px', padding: '1px 6px',
background: 'var(--accent)', color: '#fff',
borderRadius: '8px', fontWeight: '700',
}}>
{link.badge}
</span>
)}
</Link>
</li>
))}
</ul>
</div>
))}
</div>
</div>
</section>
</main>
);
}

View File

@ -0,0 +1,91 @@
import React from 'react';
import './Common.css';
export default function Terms() {
return (
<main id="main-content" className="inner-page">
<section className="section">
<div className="container" style={{ maxWidth: '800px' }}>
<div className="section-header">
<span className="section-label">Terms of Service</span>
<h1 className="section-title">이용약관</h1>
<p className="section-desc" style={{ fontSize: '13px', color: 'var(--gray-500)' }}>
시행일자: 2026 01 01
</p>
</div>
<div className="prose">
<h2>제1조 (목적)</h2>
<p> 약관은 ()지오정보기술(이하 "회사") 운영하는 홈페이지 GUARDiA ITSM 서비스(이하 "서비스")
이용함에 있어 회사와 이용자 간의 권리·의무 책임사항을 규정함을 목적으로 합니다.</p>
<h2>제2조 (정의)</h2>
<ul>
<li>"서비스" 회사가 제공하는 홈페이지, GUARDiA ITSM, 관련 모바일 애플리케이션을 말합니다.</li>
<li>"이용자" 약관에 동의하고 서비스를 이용하는 자를 말합니다.</li>
<li>"회원"이란 서비스에 가입하여 이용자 ID를 발급받은 자를 말합니다.</li>
</ul>
<h2>제3조 (약관의 효력 변경)</h2>
<ul>
<li> 약관은 서비스 화면에 게시함으로써 효력을 발생합니다.</li>
<li>회사는 관련 법령에 위반되지 않는 범위 내에서 약관을 변경할 있습니다.</li>
<li>변경 시행 7 홈페이지를 통해 공지합니다.</li>
</ul>
<h2>제4조 (서비스 이용)</h2>
<ul>
<li>서비스는 연중 24시간 제공함을 원칙으로 합니다.</li>
<li>시스템 점검, 장애, 기타 사유로 서비스가 중단될 있습니다.</li>
<li>회사는 서비스 중단으로 인한 손해에 대해 귀책 사유가 없는 책임을 지지 않습니다.</li>
</ul>
<h2>제5조 (회원 의무)</h2>
<ul>
<li>이용자는 허위 정보를 등록해서는 됩니다.</li>
<li>타인의 정보를 도용하거나 부정 이용해서는 됩니다.</li>
<li>서비스를 이용하여 타인의 명예를 훼손하거나 불법 행위를 해서는 됩니다.</li>
<li>회사의 지적재산권을 무단으로 복제·배포해서는 됩니다.</li>
</ul>
<h2>제6조 (개인정보 보호)</h2>
<p>회사는 관련 법령에 따라 이용자의 개인정보를 보호합니다.
자세한 내용은 <a href="/privacy">개인정보처리방침</a> 참조하십시오.</p>
<h2>제7조 (면책조항)</h2>
<ul>
<li>회사는 천재지변, 불가항력적 사유로 인한 서비스 장애에 대해 책임을 지지 않습니다.</li>
<li>이용자의 귀책 사유로 발생한 손해에 대해서는 책임을 지지 않습니다.</li>
<li>서비스를 통해 연결된 외부 사이트의 내용에 대해 책임을 지지 않습니다.</li>
</ul>
<h2>제8조 (지적재산권)</h2>
<p>서비스 콘텐츠의 저작권은 회사에 귀속됩니다.
이용자는 서비스를 이용하여 얻은 정보를 회사의 사전 동의 없이 복제·배포할 없습니다.</p>
<h2>제9조 (분쟁 해결)</h2>
<ul>
<li>서비스 이용과 관련한 분쟁은 상호 협의로 해결합니다.</li>
<li>협의가 이루어지지 않는 경우 회사 소재지 관할 법원에서 해결합니다.</li>
</ul>
<h2>제10조 (연락처)</h2>
<table className="policy-table">
<tbody>
<tr><td>회사명</td><td>()지오정보기술</td></tr>
<tr><td>대표이사</td><td>홍영택</td></tr>
<tr><td>주소</td><td>경기도 안산시 단원구 광덕4로 220 오피스브이 578</td></tr>
<tr><td>전화</td><td>031-483-1766</td></tr>
<tr><td>이메일</td><td>info@zioinfo.co.kr</td></tr>
</tbody>
</table>
<p className="policy-footer">
약관은 2026 01 01일부터 시행됩니다.
</p>
</div>
</div>
</section>
</main>
);
}