[기획/설계 문서] - CONTENT/ARCHITECTURE_EBAY_PARTS_TOOL.md: 3-tier 아키텍처 설계서 - CONTENT/ebay-tool-proposal.html: 공식 제안서 (3단 패키지 120/198/330만원) - CONTENT/ebay-tool-questionnaire.html: 사전 요구사항 질문지 (17항목) [관리자 문서 뷰어] - admin/documents/page.tsx: 프로젝트 문서 카드 목록 + iframe 미리보기 - api/admin/documents/[filename]: 인증 기반 HTML 문서 서빙 API - AdminSidebar: "프로젝트 문서" 메뉴 추가 [MVP 스캐폴딩] - tools/ebay-parts/page.tsx: 품번 입력 → 5탭 결과 UI (Mock 데이터) - api/tools/ebay-parts/search: POST 검색 API (Mock 반환) - Sidebar: "이베이 부품 검색" 메뉴 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1702 lines
50 KiB
HTML
1702 lines
50 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>이베이 자동차 부품 AI 리스팅 자동화 — 프로젝트 제안서 | 쟁승메이드</title>
|
|
<style>
|
|
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;600;700;900&display=swap');
|
|
|
|
:root {
|
|
--primary: #1a56db;
|
|
--primary-light: #3b82f6;
|
|
--primary-dark: #1e40af;
|
|
--accent: #f59e0b;
|
|
--accent-light: #fbbf24;
|
|
--dark: #0f172a;
|
|
--dark-soft: #1e293b;
|
|
--gray-50: #f8fafc;
|
|
--gray-100: #f1f5f9;
|
|
--gray-200: #e2e8f0;
|
|
--gray-300: #cbd5e1;
|
|
--gray-400: #94a3b8;
|
|
--gray-500: #64748b;
|
|
--gray-600: #475569;
|
|
--gray-700: #334155;
|
|
--gray-800: #1e293b;
|
|
--white: #ffffff;
|
|
--green: #059669;
|
|
--green-light: #d1fae5;
|
|
--red: #dc2626;
|
|
}
|
|
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, sans-serif;
|
|
color: var(--dark);
|
|
background: var(--gray-100);
|
|
line-height: 1.7;
|
|
font-size: 14px;
|
|
-webkit-font-smoothing: antialiased;
|
|
}
|
|
|
|
.document {
|
|
max-width: 800px;
|
|
margin: 0 auto;
|
|
background: var(--white);
|
|
box-shadow: 0 4px 24px rgba(0,0,0,0.08);
|
|
}
|
|
|
|
/* ── Cover Page ── */
|
|
.cover {
|
|
background: linear-gradient(135deg, var(--dark) 0%, #162544 50%, var(--primary-dark) 100%);
|
|
color: var(--white);
|
|
padding: 100px 60px 80px;
|
|
position: relative;
|
|
overflow: hidden;
|
|
page-break-after: always;
|
|
}
|
|
|
|
.cover::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: -100px;
|
|
right: -100px;
|
|
width: 400px;
|
|
height: 400px;
|
|
background: radial-gradient(circle, rgba(245,158,11,0.12) 0%, transparent 70%);
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.cover::after {
|
|
content: '';
|
|
position: absolute;
|
|
bottom: -60px;
|
|
left: -60px;
|
|
width: 300px;
|
|
height: 300px;
|
|
background: radial-gradient(circle, rgba(26,86,219,0.15) 0%, transparent 70%);
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.cover-brand {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.cover-brand .logo-text {
|
|
font-size: 16px;
|
|
font-weight: 700;
|
|
letter-spacing: 3px;
|
|
text-transform: uppercase;
|
|
color: var(--accent);
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.cover-brand .logo-sub {
|
|
font-size: 12px;
|
|
color: var(--gray-400);
|
|
letter-spacing: 1px;
|
|
margin-bottom: 60px;
|
|
}
|
|
|
|
.cover-title {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.cover-title h1 {
|
|
font-size: 32px;
|
|
font-weight: 900;
|
|
line-height: 1.35;
|
|
margin-bottom: 12px;
|
|
letter-spacing: -0.5px;
|
|
}
|
|
|
|
.cover-title h1 .highlight {
|
|
color: var(--accent);
|
|
}
|
|
|
|
.cover-title .subtitle {
|
|
font-size: 18px;
|
|
font-weight: 400;
|
|
color: var(--gray-300);
|
|
margin-bottom: 60px;
|
|
}
|
|
|
|
.cover-meta {
|
|
position: relative;
|
|
z-index: 1;
|
|
border-top: 1px solid rgba(255,255,255,0.15);
|
|
padding-top: 30px;
|
|
display: flex;
|
|
gap: 48px;
|
|
}
|
|
|
|
.cover-meta .meta-item {
|
|
font-size: 13px;
|
|
}
|
|
|
|
.cover-meta .meta-label {
|
|
color: var(--gray-400);
|
|
font-size: 11px;
|
|
text-transform: uppercase;
|
|
letter-spacing: 1px;
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.cover-meta .meta-value {
|
|
font-weight: 600;
|
|
}
|
|
|
|
.cover-badge {
|
|
position: absolute;
|
|
top: 40px;
|
|
right: 50px;
|
|
z-index: 1;
|
|
background: rgba(245,158,11,0.15);
|
|
border: 1px solid rgba(245,158,11,0.3);
|
|
color: var(--accent);
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
padding: 6px 14px;
|
|
border-radius: 20px;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
/* ── Section Layout ── */
|
|
.section {
|
|
padding: 48px 60px;
|
|
border-bottom: 1px solid var(--gray-200);
|
|
}
|
|
|
|
.section:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.section-number {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: var(--primary);
|
|
letter-spacing: 2px;
|
|
text-transform: uppercase;
|
|
margin-bottom: 6px;
|
|
}
|
|
|
|
.section-title {
|
|
font-size: 22px;
|
|
font-weight: 800;
|
|
color: var(--dark);
|
|
margin-bottom: 24px;
|
|
letter-spacing: -0.3px;
|
|
}
|
|
|
|
.section-title .accent {
|
|
color: var(--primary);
|
|
}
|
|
|
|
.section-desc {
|
|
font-size: 14.5px;
|
|
color: var(--gray-600);
|
|
margin-bottom: 28px;
|
|
line-height: 1.8;
|
|
}
|
|
|
|
/* ── Overview Cards ── */
|
|
.overview-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr 1fr;
|
|
gap: 16px;
|
|
margin-bottom: 28px;
|
|
}
|
|
|
|
.overview-card {
|
|
background: var(--gray-50);
|
|
border: 1px solid var(--gray-200);
|
|
border-radius: 10px;
|
|
padding: 24px 20px;
|
|
text-align: center;
|
|
}
|
|
|
|
.overview-card .icon {
|
|
font-size: 28px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.overview-card .label {
|
|
font-size: 12px;
|
|
color: var(--gray-500);
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.overview-card .value {
|
|
font-size: 18px;
|
|
font-weight: 800;
|
|
color: var(--dark);
|
|
}
|
|
|
|
.overview-card .value .small {
|
|
font-size: 13px;
|
|
font-weight: 500;
|
|
color: var(--gray-500);
|
|
}
|
|
|
|
.overview-card .sub {
|
|
font-size: 12px;
|
|
color: var(--green);
|
|
font-weight: 600;
|
|
margin-top: 4px;
|
|
}
|
|
|
|
/* ── Context Box ── */
|
|
.context-box {
|
|
background: var(--gray-50);
|
|
border-left: 4px solid var(--primary);
|
|
border-radius: 0 8px 8px 0;
|
|
padding: 20px 24px;
|
|
margin-bottom: 24px;
|
|
}
|
|
|
|
.context-box p {
|
|
font-size: 14px;
|
|
color: var(--gray-700);
|
|
line-height: 1.8;
|
|
}
|
|
|
|
.context-box strong {
|
|
color: var(--dark);
|
|
}
|
|
|
|
/* ── Feature List ── */
|
|
.feature-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 16px;
|
|
}
|
|
|
|
.feature-item {
|
|
background: var(--gray-50);
|
|
border: 1px solid var(--gray-200);
|
|
border-radius: 10px;
|
|
padding: 22px 20px;
|
|
transition: border-color 0.2s;
|
|
}
|
|
|
|
.feature-item:hover {
|
|
border-color: var(--primary-light);
|
|
}
|
|
|
|
.feature-item .f-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.feature-item .f-icon {
|
|
width: 36px;
|
|
height: 36px;
|
|
background: var(--primary);
|
|
color: var(--white);
|
|
border-radius: 8px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 16px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.feature-item .f-title {
|
|
font-size: 14px;
|
|
font-weight: 700;
|
|
color: var(--dark);
|
|
}
|
|
|
|
.feature-item .f-desc {
|
|
font-size: 13px;
|
|
color: var(--gray-600);
|
|
line-height: 1.7;
|
|
}
|
|
|
|
/* ── Pricing Table ── */
|
|
.pricing-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr 1fr;
|
|
gap: 0;
|
|
border: 1px solid var(--gray-200);
|
|
border-radius: 12px;
|
|
overflow: hidden;
|
|
margin-bottom: 28px;
|
|
}
|
|
|
|
.pricing-col {
|
|
padding: 0;
|
|
background: var(--white);
|
|
position: relative;
|
|
}
|
|
|
|
.pricing-col.recommended {
|
|
border: 2px solid var(--primary);
|
|
border-radius: 12px;
|
|
z-index: 1;
|
|
margin: -1px;
|
|
box-shadow: 0 4px 20px rgba(26,86,219,0.15);
|
|
}
|
|
|
|
.pricing-header {
|
|
padding: 28px 20px 20px;
|
|
text-align: center;
|
|
border-bottom: 1px solid var(--gray-200);
|
|
}
|
|
|
|
.pricing-col.recommended .pricing-header {
|
|
background: var(--primary);
|
|
color: var(--white);
|
|
border-bottom: none;
|
|
}
|
|
|
|
.pricing-badge {
|
|
display: inline-block;
|
|
background: var(--accent);
|
|
color: var(--dark);
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
padding: 3px 10px;
|
|
border-radius: 10px;
|
|
margin-bottom: 8px;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
.pricing-name {
|
|
font-size: 14px;
|
|
font-weight: 700;
|
|
letter-spacing: 2px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.pricing-price {
|
|
font-size: 28px;
|
|
font-weight: 900;
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
.pricing-price .won {
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.pricing-period {
|
|
font-size: 12px;
|
|
color: var(--gray-400);
|
|
}
|
|
|
|
.pricing-col.recommended .pricing-period {
|
|
color: rgba(255,255,255,0.7);
|
|
}
|
|
|
|
.pricing-body {
|
|
padding: 20px;
|
|
}
|
|
|
|
.pricing-body ul {
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
.pricing-body li {
|
|
font-size: 13px;
|
|
color: var(--gray-700);
|
|
padding: 7px 0;
|
|
border-bottom: 1px solid var(--gray-100);
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 8px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.pricing-body li:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.pricing-body li .check {
|
|
color: var(--green);
|
|
font-weight: 700;
|
|
flex-shrink: 0;
|
|
margin-top: 1px;
|
|
}
|
|
|
|
.pricing-body li .cross {
|
|
color: var(--gray-300);
|
|
flex-shrink: 0;
|
|
margin-top: 1px;
|
|
}
|
|
|
|
.pricing-footer {
|
|
padding: 0 20px 24px;
|
|
text-align: center;
|
|
}
|
|
|
|
.pricing-footer .support-info {
|
|
font-size: 12px;
|
|
color: var(--gray-500);
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.pricing-cta {
|
|
display: block;
|
|
width: 100%;
|
|
padding: 10px;
|
|
border-radius: 8px;
|
|
font-size: 13px;
|
|
font-weight: 700;
|
|
text-align: center;
|
|
text-decoration: none;
|
|
border: 2px solid var(--primary);
|
|
color: var(--primary);
|
|
background: var(--white);
|
|
cursor: pointer;
|
|
transition: all 0.2s;
|
|
}
|
|
|
|
.pricing-cta:hover {
|
|
background: var(--primary);
|
|
color: var(--white);
|
|
}
|
|
|
|
.pricing-col.recommended .pricing-cta {
|
|
background: var(--primary);
|
|
color: var(--white);
|
|
border-color: var(--primary);
|
|
}
|
|
|
|
.pricing-col.recommended .pricing-cta:hover {
|
|
background: var(--primary-dark);
|
|
border-color: var(--primary-dark);
|
|
}
|
|
|
|
.pricing-note {
|
|
font-size: 12px;
|
|
color: var(--gray-500);
|
|
text-align: center;
|
|
margin-top: 8px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* ── Milestone Timeline ── */
|
|
.timeline {
|
|
position: relative;
|
|
padding-left: 36px;
|
|
}
|
|
|
|
.timeline::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: 14px;
|
|
top: 8px;
|
|
bottom: 8px;
|
|
width: 2px;
|
|
background: var(--gray-200);
|
|
}
|
|
|
|
.timeline-item {
|
|
position: relative;
|
|
margin-bottom: 20px;
|
|
padding: 16px 20px;
|
|
background: var(--gray-50);
|
|
border: 1px solid var(--gray-200);
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.timeline-item:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.timeline-item::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: -30px;
|
|
top: 22px;
|
|
width: 10px;
|
|
height: 10px;
|
|
background: var(--primary);
|
|
border: 2px solid var(--white);
|
|
border-radius: 50%;
|
|
box-shadow: 0 0 0 2px var(--primary);
|
|
}
|
|
|
|
.timeline-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 6px;
|
|
}
|
|
|
|
.timeline-step {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
color: var(--primary);
|
|
letter-spacing: 1px;
|
|
}
|
|
|
|
.timeline-duration {
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
color: var(--gray-500);
|
|
background: var(--gray-200);
|
|
padding: 2px 10px;
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.timeline-title {
|
|
font-size: 15px;
|
|
font-weight: 700;
|
|
color: var(--dark);
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.timeline-desc {
|
|
font-size: 13px;
|
|
color: var(--gray-600);
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.timeline-output {
|
|
font-size: 12px;
|
|
color: var(--gray-500);
|
|
margin-top: 6px;
|
|
}
|
|
|
|
.timeline-output strong {
|
|
color: var(--gray-600);
|
|
}
|
|
|
|
/* ── Payment ── */
|
|
.payment-flow {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
margin-bottom: 28px;
|
|
}
|
|
|
|
.payment-step {
|
|
flex: 1;
|
|
text-align: center;
|
|
background: var(--gray-50);
|
|
border: 1px solid var(--gray-200);
|
|
border-radius: 10px;
|
|
padding: 20px 16px;
|
|
}
|
|
|
|
.payment-step .percent {
|
|
font-size: 24px;
|
|
font-weight: 900;
|
|
color: var(--primary);
|
|
}
|
|
|
|
.payment-step .p-label {
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
color: var(--dark);
|
|
margin-top: 4px;
|
|
}
|
|
|
|
.payment-step .p-timing {
|
|
font-size: 12px;
|
|
color: var(--gray-500);
|
|
margin-top: 2px;
|
|
}
|
|
|
|
.payment-arrow {
|
|
font-size: 20px;
|
|
color: var(--gray-400);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.cost-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
margin-bottom: 16px;
|
|
}
|
|
|
|
.cost-table th {
|
|
text-align: left;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
color: var(--gray-500);
|
|
text-transform: uppercase;
|
|
letter-spacing: 1px;
|
|
padding: 10px 16px;
|
|
border-bottom: 2px solid var(--gray-200);
|
|
}
|
|
|
|
.cost-table td {
|
|
padding: 12px 16px;
|
|
font-size: 13px;
|
|
color: var(--gray-700);
|
|
border-bottom: 1px solid var(--gray-100);
|
|
}
|
|
|
|
.cost-table tr:last-child td {
|
|
border-bottom: none;
|
|
}
|
|
|
|
/* ── Tech Stack ── */
|
|
.tech-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 12px;
|
|
}
|
|
|
|
.tech-item {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
padding: 14px 16px;
|
|
background: var(--gray-50);
|
|
border: 1px solid var(--gray-200);
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.tech-item .t-cat {
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
color: var(--white);
|
|
background: var(--primary);
|
|
padding: 3px 8px;
|
|
border-radius: 4px;
|
|
letter-spacing: 0.5px;
|
|
flex-shrink: 0;
|
|
min-width: 60px;
|
|
text-align: center;
|
|
}
|
|
|
|
.tech-item .t-name {
|
|
font-size: 13px;
|
|
font-weight: 600;
|
|
color: var(--dark);
|
|
}
|
|
|
|
/* ── Safety Section ── */
|
|
.safety-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 16px;
|
|
}
|
|
|
|
.safety-card {
|
|
padding: 20px;
|
|
border-radius: 10px;
|
|
border: 1px solid var(--gray-200);
|
|
background: var(--gray-50);
|
|
}
|
|
|
|
.safety-card .s-icon {
|
|
width: 32px;
|
|
height: 32px;
|
|
background: var(--green-light);
|
|
color: var(--green);
|
|
border-radius: 8px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 16px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.safety-card .s-title {
|
|
font-size: 14px;
|
|
font-weight: 700;
|
|
color: var(--dark);
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.safety-card .s-desc {
|
|
font-size: 13px;
|
|
color: var(--gray-600);
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* ── Notes List ── */
|
|
.notes-list {
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
.notes-list li {
|
|
font-size: 13.5px;
|
|
color: var(--gray-700);
|
|
padding: 10px 0;
|
|
border-bottom: 1px solid var(--gray-100);
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 10px;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
.notes-list li:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.notes-list .n-num {
|
|
flex-shrink: 0;
|
|
width: 22px;
|
|
height: 22px;
|
|
background: var(--gray-200);
|
|
color: var(--gray-600);
|
|
border-radius: 50%;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-top: 1px;
|
|
}
|
|
|
|
/* ── Contact Footer ── */
|
|
.contact-section {
|
|
background: var(--dark);
|
|
color: var(--white);
|
|
padding: 48px 60px;
|
|
text-align: center;
|
|
}
|
|
|
|
.contact-section .section-title {
|
|
color: var(--white);
|
|
}
|
|
|
|
.contact-info-grid {
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: 48px;
|
|
margin-top: 24px;
|
|
}
|
|
|
|
.contact-item {
|
|
text-align: center;
|
|
}
|
|
|
|
.contact-item .c-label {
|
|
font-size: 11px;
|
|
color: var(--gray-400);
|
|
letter-spacing: 1px;
|
|
text-transform: uppercase;
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.contact-item .c-value {
|
|
font-size: 15px;
|
|
font-weight: 600;
|
|
color: var(--white);
|
|
}
|
|
|
|
.contact-item .c-value a {
|
|
color: var(--accent-light);
|
|
text-decoration: none;
|
|
}
|
|
|
|
.contact-cta {
|
|
display: inline-block;
|
|
margin-top: 32px;
|
|
padding: 14px 40px;
|
|
background: var(--accent);
|
|
color: var(--dark);
|
|
font-size: 14px;
|
|
font-weight: 700;
|
|
border-radius: 8px;
|
|
text-decoration: none;
|
|
transition: background 0.2s;
|
|
}
|
|
|
|
.contact-cta:hover {
|
|
background: var(--accent-light);
|
|
}
|
|
|
|
.footer-note {
|
|
margin-top: 28px;
|
|
font-size: 12px;
|
|
color: var(--gray-500);
|
|
}
|
|
|
|
/* ── Comparison Helper ── */
|
|
.compare-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 20px;
|
|
margin-bottom: 20px;
|
|
padding: 20px 24px;
|
|
background: var(--gray-50);
|
|
border: 1px solid var(--gray-200);
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.compare-before, .compare-after {
|
|
flex: 1;
|
|
text-align: center;
|
|
}
|
|
|
|
.compare-before .time {
|
|
font-size: 28px;
|
|
font-weight: 900;
|
|
color: var(--red);
|
|
}
|
|
|
|
.compare-after .time {
|
|
font-size: 28px;
|
|
font-weight: 900;
|
|
color: var(--green);
|
|
}
|
|
|
|
.compare-label {
|
|
font-size: 12px;
|
|
color: var(--gray-500);
|
|
margin-top: 2px;
|
|
}
|
|
|
|
.compare-arrow-big {
|
|
font-size: 24px;
|
|
color: var(--primary);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.compare-saving {
|
|
text-align: center;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.compare-saving .badge {
|
|
display: inline-block;
|
|
background: var(--green-light);
|
|
color: var(--green);
|
|
font-size: 14px;
|
|
font-weight: 800;
|
|
padding: 6px 16px;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
/* ── Confidence Level ── */
|
|
.confidence-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
margin-top: 16px;
|
|
}
|
|
|
|
.confidence-table th {
|
|
text-align: left;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
color: var(--gray-500);
|
|
padding: 8px 12px;
|
|
border-bottom: 2px solid var(--gray-200);
|
|
}
|
|
|
|
.confidence-table td {
|
|
padding: 10px 12px;
|
|
font-size: 13px;
|
|
color: var(--gray-700);
|
|
border-bottom: 1px solid var(--gray-100);
|
|
}
|
|
|
|
.badge-high {
|
|
display: inline-block;
|
|
background: var(--green-light);
|
|
color: var(--green);
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
padding: 2px 10px;
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.badge-medium {
|
|
display: inline-block;
|
|
background: #fef3c7;
|
|
color: #d97706;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
padding: 2px 10px;
|
|
border-radius: 10px;
|
|
}
|
|
|
|
.badge-low {
|
|
display: inline-block;
|
|
background: #fee2e2;
|
|
color: var(--red);
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
padding: 2px 10px;
|
|
border-radius: 10px;
|
|
}
|
|
|
|
/* ── Print Styles ── */
|
|
@media print {
|
|
body {
|
|
background: white;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.document {
|
|
box-shadow: none;
|
|
max-width: none;
|
|
}
|
|
|
|
.cover {
|
|
padding: 80px 50px 60px;
|
|
-webkit-print-color-adjust: exact;
|
|
print-color-adjust: exact;
|
|
}
|
|
|
|
.section {
|
|
padding: 36px 50px;
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
.pricing-grid {
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
.timeline {
|
|
page-break-inside: avoid;
|
|
}
|
|
|
|
.contact-section {
|
|
-webkit-print-color-adjust: exact;
|
|
print-color-adjust: exact;
|
|
padding: 36px 50px;
|
|
}
|
|
|
|
.pricing-col.recommended {
|
|
box-shadow: none;
|
|
}
|
|
|
|
a {
|
|
color: var(--primary) !important;
|
|
text-decoration: none !important;
|
|
}
|
|
}
|
|
|
|
/* ── Divider ── */
|
|
.section-divider {
|
|
width: 40px;
|
|
height: 3px;
|
|
background: var(--primary);
|
|
border-radius: 2px;
|
|
margin-bottom: 24px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<div class="document">
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- COVER PAGE -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="cover">
|
|
<div class="cover-badge">CONFIDENTIAL</div>
|
|
<div class="cover-brand">
|
|
<div class="logo-text">JaengseungMade</div>
|
|
<div class="logo-sub">Premium Development Service</div>
|
|
</div>
|
|
<div class="cover-title">
|
|
<h1>이베이 자동차 부품<br><span class="highlight">AI 리스팅 자동화</span></h1>
|
|
<div class="subtitle">프로젝트 제안서 겸 견적서</div>
|
|
</div>
|
|
<div class="cover-meta">
|
|
<div class="meta-item">
|
|
<div class="meta-label">작성일</div>
|
|
<div class="meta-value">2026년 4월</div>
|
|
</div>
|
|
<div class="meta-item">
|
|
<div class="meta-label">작성자</div>
|
|
<div class="meta-value">쟁승메이드 (박재오)</div>
|
|
</div>
|
|
<div class="meta-item">
|
|
<div class="meta-label">문서 분류</div>
|
|
<div class="meta-value">프로젝트 제안서</div>
|
|
</div>
|
|
<div class="meta-item">
|
|
<div class="meta-label">유효기간</div>
|
|
<div class="meta-value">발행일로부터 30일</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- 1. PROJECT OVERVIEW -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="section">
|
|
<div class="section-number">SECTION 01</div>
|
|
<h2 class="section-title">프로젝트 <span class="accent">개요</span></h2>
|
|
<div class="section-divider"></div>
|
|
|
|
<div class="context-box">
|
|
<p>
|
|
이베이 자동차 부품 셀러는 하나의 리스팅을 작성하기 위해 <strong>여러 부품 사이트를 수동으로 탐색</strong>하고,
|
|
OEM 번호 확인, 호환 차종 조사, 가격 비교, 환율 계산 등 반복적이고 시간 소모적인 작업을 수행합니다.
|
|
본 프로젝트는 이 전 과정을 <strong>AI 자동화</strong>하여 셀러의 업무 효율을 획기적으로 개선합니다.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="compare-row">
|
|
<div class="compare-before">
|
|
<div class="time">30분</div>
|
|
<div class="compare-label">리스팅 1건 (현재)</div>
|
|
</div>
|
|
<div class="compare-arrow-big">→</div>
|
|
<div class="compare-after">
|
|
<div class="time">3분</div>
|
|
<div class="compare-label">리스팅 1건 (자동화 후)</div>
|
|
</div>
|
|
<div class="compare-saving">
|
|
<div class="badge">90% 절감</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="overview-grid">
|
|
<div class="overview-card">
|
|
<div class="icon">🔍</div>
|
|
<div class="label">입력</div>
|
|
<div class="value">품번 1개</div>
|
|
<div class="sub">단일 입력으로 시작</div>
|
|
</div>
|
|
<div class="overview-card">
|
|
<div class="icon">🤖</div>
|
|
<div class="label">처리</div>
|
|
<div class="value">AI 자동 분석</div>
|
|
<div class="sub">웹 탐색 + 데이터 구조화</div>
|
|
</div>
|
|
<div class="overview-card">
|
|
<div class="icon">📋</div>
|
|
<div class="label">출력</div>
|
|
<div class="value">리스팅 완성본</div>
|
|
<div class="sub">제목 / Specifics / Fitment</div>
|
|
</div>
|
|
</div>
|
|
|
|
<p class="section-desc" style="margin-bottom:0;">
|
|
<strong>핵심 목표:</strong> 품번 하나만 입력하면 AI가 자동으로 웹을 탐색하고,
|
|
부품 정보를 수집/구조화하여 이베이 리스팅에 필요한 모든 데이터를 완성합니다.
|
|
셀러는 최종 확인만 하면 됩니다.
|
|
</p>
|
|
</div>
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- 2. FEATURES -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="section">
|
|
<div class="section-number">SECTION 02</div>
|
|
<h2 class="section-title">제공 <span class="accent">기능</span></h2>
|
|
<div class="section-divider"></div>
|
|
|
|
<p class="section-desc">
|
|
각 기능은 독립적으로 동작하면서도 하나의 파이프라인으로 연결되어,
|
|
품번 입력부터 리스팅 완성까지 끊김 없는 자동화를 제공합니다.
|
|
</p>
|
|
|
|
<div class="feature-grid">
|
|
<div class="feature-item">
|
|
<div class="f-header">
|
|
<div class="f-icon">🌐</div>
|
|
<div class="f-title">멀티 사이트 자동 탐색</div>
|
|
</div>
|
|
<div class="f-desc">
|
|
Playwright 기반 브라우저 자동화로 주요 자동차 부품 사이트를 동시 탐색합니다.
|
|
JavaScript 렌더링이 필요한 사이트도 완벽 지원하며, 안티봇 대응 stealth 모드를 적용합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="feature-item">
|
|
<div class="f-header">
|
|
<div class="f-icon">🧠</div>
|
|
<div class="f-title">AI 데이터 추출 및 구조화</div>
|
|
</div>
|
|
<div class="f-desc">
|
|
Claude AI의 Tool Use 기능으로 비정형 웹 데이터에서 부품명, 규격, 가격, 호환 정보 등을
|
|
정형화된 JSON으로 추출합니다. 사이트 구조가 변경되어도 AI가 자동 대응합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="feature-item">
|
|
<div class="f-header">
|
|
<div class="f-icon">🔀</div>
|
|
<div class="f-title">OEM/OE 크로스레퍼런스</div>
|
|
</div>
|
|
<div class="f-desc">
|
|
입력된 품번의 OEM 원본 번호와 호환 부품 번호를 자동 매칭합니다.
|
|
복수의 소스에서 교차 확인하여 정확도를 높이고, 리스팅 노출을 극대화합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="feature-item">
|
|
<div class="f-header">
|
|
<div class="f-icon">🚗</div>
|
|
<div class="f-title">호환 차종(Fitment) 수집</div>
|
|
</div>
|
|
<div class="f-desc">
|
|
AI가 단독 생성하지 않고, 실제 소스 데이터 기반으로 Fitment을 수집합니다.
|
|
복수 소스 교차검증을 통해 신뢰도를 확보하며, 신뢰도 레벨(High/Medium/Low)을 함께 표시합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="feature-item">
|
|
<div class="f-header">
|
|
<div class="f-icon">💰</div>
|
|
<div class="f-title">가격 비교표 + 환율 변환</div>
|
|
</div>
|
|
<div class="f-desc">
|
|
복수 사이트의 판매가를 한눈에 비교할 수 있는 테이블을 자동 생성합니다.
|
|
실시간 KRW/USD 환율을 적용하여 원가 계산을 즉시 지원합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="feature-item">
|
|
<div class="f-header">
|
|
<div class="f-icon">📜</div>
|
|
<div class="f-title">관세 계산기 입력값 생성</div>
|
|
</div>
|
|
<div class="f-desc">
|
|
부품 카테고리, 중량, 원산지 정보를 기반으로 관세 계산에 필요한 입력값을
|
|
자동으로 정리합니다. HS Code 추정 및 예상 관세율을 함께 제공합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="feature-item">
|
|
<div class="f-header">
|
|
<div class="f-icon">📄</div>
|
|
<div class="f-title">이베이 리스팅 자동 정리</div>
|
|
</div>
|
|
<div class="f-desc">
|
|
이베이 최적화된 제목(80자), 카테고리 추천, Item Specifics(Brand, Manufacturer Part Number, Fitment Type 등),
|
|
호환 차종 데이터를 이베이 형식에 맞게 자동 구성합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="feature-item">
|
|
<div class="f-header">
|
|
<div class="f-icon">📊</div>
|
|
<div class="f-title">검색 이력 및 통계</div>
|
|
</div>
|
|
<div class="f-desc">
|
|
모든 검색 결과를 저장하고, 과거 검색 이력을 빠르게 조회할 수 있습니다.
|
|
자주 검색하는 부품의 가격 변동 추적과 리스팅 작업 통계를 제공합니다.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- 3. PRICING -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="section">
|
|
<div class="section-number">SECTION 03</div>
|
|
<h2 class="section-title">패키지별 <span class="accent">견적</span></h2>
|
|
<div class="section-divider"></div>
|
|
|
|
<p class="section-desc">
|
|
비즈니스 규모와 자동화 수준에 따라 3가지 패키지를 제안드립니다.
|
|
STANDARD 패키지가 비용 대비 가장 높은 효율을 제공하며, 대부분의 셀러에게 적합합니다.
|
|
</p>
|
|
|
|
<div class="pricing-grid">
|
|
<!-- BASIC -->
|
|
<div class="pricing-col">
|
|
<div class="pricing-header">
|
|
<div class="pricing-name">BASIC</div>
|
|
<div class="pricing-price"><span class="won">₩</span>120<span class="won">만</span></div>
|
|
<div class="pricing-period">개발 기간: 5주</div>
|
|
</div>
|
|
<div class="pricing-body">
|
|
<ul>
|
|
<li><span class="check">✓</span> 2개 사이트 크롤링</li>
|
|
<li><span class="check">✓</span> AI 정보 추출 및 정리</li>
|
|
<li><span class="check">✓</span> 가격 비교 + 환율 계산</li>
|
|
<li><span class="check">✓</span> 이베이 제목 자동 생성</li>
|
|
<li><span class="check">✓</span> 이베이 카테고리 추천</li>
|
|
<li><span class="cross">—</span> <span style="color:var(--gray-400)">Fitment 자동 수집</span></li>
|
|
<li><span class="cross">—</span> <span style="color:var(--gray-400)">OEM 크로스레퍼런스</span></li>
|
|
<li><span class="cross">—</span> <span style="color:var(--gray-400)">관세 계산기</span></li>
|
|
<li><span class="cross">—</span> <span style="color:var(--gray-400)">CSV 일괄 처리</span></li>
|
|
<li><span class="cross">—</span> <span style="color:var(--gray-400)">eBay API 연동</span></li>
|
|
</ul>
|
|
</div>
|
|
<div class="pricing-footer">
|
|
<div class="support-info">수정 2회 | AS 2주</div>
|
|
<div class="pricing-cta">문의하기</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- STANDARD (Recommended) -->
|
|
<div class="pricing-col recommended">
|
|
<div class="pricing-header">
|
|
<div class="pricing-badge">BEST VALUE</div>
|
|
<div class="pricing-name">STANDARD</div>
|
|
<div class="pricing-price"><span class="won">₩</span>198<span class="won">만</span></div>
|
|
<div class="pricing-period">개발 기간: 8~9주</div>
|
|
</div>
|
|
<div class="pricing-body">
|
|
<ul>
|
|
<li><span class="check">✓</span> <strong>4개 사이트</strong> 크롤링</li>
|
|
<li><span class="check">✓</span> AI 정보 추출 및 정리</li>
|
|
<li><span class="check">✓</span> 가격 비교 + 환율 계산</li>
|
|
<li><span class="check">✓</span> 이베이 제목 자동 생성</li>
|
|
<li><span class="check">✓</span> 이베이 카테고리 추천</li>
|
|
<li><span class="check">✓</span> <strong>Fitment 자동 수집 + 교차검증</strong></li>
|
|
<li><span class="check">✓</span> <strong>OEM 크로스레퍼런스</strong></li>
|
|
<li><span class="check">✓</span> <strong>관세 계산기 입력값</strong></li>
|
|
<li><span class="check">✓</span> <strong>검색 이력 저장/관리</strong></li>
|
|
<li><span class="cross">—</span> <span style="color:var(--gray-400)">CSV 일괄 처리</span></li>
|
|
</ul>
|
|
</div>
|
|
<div class="pricing-footer">
|
|
<div class="support-info">수정 3회 | AS 1개월</div>
|
|
<div class="pricing-cta">문의하기</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- PREMIUM -->
|
|
<div class="pricing-col">
|
|
<div class="pricing-header">
|
|
<div class="pricing-name">PREMIUM</div>
|
|
<div class="pricing-price"><span class="won">₩</span>330<span class="won">만</span></div>
|
|
<div class="pricing-period">개발 기간: 12주</div>
|
|
</div>
|
|
<div class="pricing-body">
|
|
<ul>
|
|
<li><span class="check">✓</span> <strong>6+개 사이트</strong> 크롤링</li>
|
|
<li><span class="check">✓</span> AI 정보 추출 및 정리</li>
|
|
<li><span class="check">✓</span> 가격 비교 + 환율 계산</li>
|
|
<li><span class="check">✓</span> 이베이 제목 자동 생성</li>
|
|
<li><span class="check">✓</span> 이베이 카테고리 추천</li>
|
|
<li><span class="check">✓</span> Fitment 자동 수집 + 교차검증</li>
|
|
<li><span class="check">✓</span> OEM 크로스레퍼런스</li>
|
|
<li><span class="check">✓</span> 관세 계산기 입력값</li>
|
|
<li><span class="check">✓</span> <strong>CSV 일괄 처리 (엑셀 업로드)</strong></li>
|
|
<li><span class="check">✓</span> <strong>eBay Listing API 직접 연동</strong></li>
|
|
<li><span class="check">✓</span> <strong>리스팅 템플릿 관리</strong></li>
|
|
<li><span class="check">✓</span> <strong>가격 변동 알림 (텔레그램)</strong></li>
|
|
</ul>
|
|
</div>
|
|
<div class="pricing-footer">
|
|
<div class="support-info">수정 5회 | AS 2개월</div>
|
|
<div class="pricing-cta">문의하기</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<p class="pricing-note">
|
|
* 모든 금액은 VAT 별도입니다. 견적은 발행일로부터 30일간 유효합니다.<br>
|
|
* AI API 사용료(월 1~3만원) 및 서버 비용(VPS 월 2~5만원)은 별도입니다.
|
|
</p>
|
|
</div>
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- 4. MILESTONE -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="section">
|
|
<div class="section-number">SECTION 04</div>
|
|
<h2 class="section-title">진행 <span class="accent">절차</span></h2>
|
|
<div class="section-divider"></div>
|
|
|
|
<p class="section-desc">
|
|
7단계 마일스톤 기반으로 진행하며, 각 단계마다 산출물을 공유드립니다.
|
|
아래 일정은 STANDARD 패키지 기준이며, 패키지에 따라 조정될 수 있습니다.
|
|
</p>
|
|
|
|
<div class="timeline">
|
|
<div class="timeline-item">
|
|
<div class="timeline-header">
|
|
<div class="timeline-step">STEP 1</div>
|
|
<div class="timeline-duration">3~4일</div>
|
|
</div>
|
|
<div class="timeline-title">요구사항 확정 및 킥오프</div>
|
|
<div class="timeline-desc">
|
|
타겟 부품 사이트 선정, 필요 데이터 항목 확정, 이베이 리스팅 양식 구체화.
|
|
고객의 실제 리스팅 프로세스를 분석하여 자동화 범위를 확정합니다.
|
|
</div>
|
|
<div class="timeline-output"><strong>산출물:</strong> 요구사항 정의서 (RFP), 사이트 목록, 데이터 스키마</div>
|
|
</div>
|
|
|
|
<div class="timeline-item">
|
|
<div class="timeline-header">
|
|
<div class="timeline-step">STEP 2</div>
|
|
<div class="timeline-duration">4~5일</div>
|
|
</div>
|
|
<div class="timeline-title">시스템 설계</div>
|
|
<div class="timeline-desc">
|
|
아키텍처 설계, DB 스키마, API 설계, 크롤링 전략 수립.
|
|
각 사이트별 데이터 추출 방식과 AI 파이프라인 흐름을 설계합니다.
|
|
</div>
|
|
<div class="timeline-output"><strong>산출물:</strong> 시스템 아키텍처 문서, DB ERD, API 명세서</div>
|
|
</div>
|
|
|
|
<div class="timeline-item">
|
|
<div class="timeline-header">
|
|
<div class="timeline-step">STEP 3</div>
|
|
<div class="timeline-duration">7~10일</div>
|
|
</div>
|
|
<div class="timeline-title">크롤링 엔진 개발</div>
|
|
<div class="timeline-desc">
|
|
Playwright 기반 멀티 사이트 크롤러 구축. 안티봇 우회, 요청 간격 제한, 프록시 설정,
|
|
에러 처리 및 재시도 로직을 구현합니다. 각 사이트별 동작을 검증합니다.
|
|
</div>
|
|
<div class="timeline-output"><strong>산출물:</strong> 크롤러 모듈 (사이트별), 테스트 결과 리포트</div>
|
|
</div>
|
|
|
|
<div class="timeline-item">
|
|
<div class="timeline-header">
|
|
<div class="timeline-step">STEP 4</div>
|
|
<div class="timeline-duration">7~10일</div>
|
|
</div>
|
|
<div class="timeline-title">AI 파이프라인 구축</div>
|
|
<div class="timeline-desc">
|
|
Claude AI Tool Use를 활용한 데이터 추출/구조화 파이프라인 개발.
|
|
OEM 크로스레퍼런스, Fitment 교차검증, 가격 비교, 환율 변환, 관세 계산 로직을 구현합니다.
|
|
</div>
|
|
<div class="timeline-output"><strong>산출물:</strong> AI 파이프라인 모듈, 정확도 테스트 결과</div>
|
|
</div>
|
|
|
|
<div class="timeline-item">
|
|
<div class="timeline-header">
|
|
<div class="timeline-step">STEP 5</div>
|
|
<div class="timeline-duration">7~10일</div>
|
|
</div>
|
|
<div class="timeline-title">UI 통합 및 프론트엔드</div>
|
|
<div class="timeline-desc">
|
|
웹 대시보드 UI 개발. 검색 인터페이스, 결과 뷰, 이력 관리, 리스팅 편집/내보내기 기능을 구현합니다.
|
|
직관적인 UX로 최소한의 학습 비용으로 사용할 수 있도록 합니다.
|
|
</div>
|
|
<div class="timeline-output"><strong>산출물:</strong> 웹 애플리케이션 (베타 버전)</div>
|
|
</div>
|
|
|
|
<div class="timeline-item">
|
|
<div class="timeline-header">
|
|
<div class="timeline-step">STEP 6</div>
|
|
<div class="timeline-duration">5~7일</div>
|
|
</div>
|
|
<div class="timeline-title">테스트 및 최적화</div>
|
|
<div class="timeline-desc">
|
|
실제 부품 번호로 엔드투엔드 테스트 수행. AI 정확도 검증, 성능 최적화, 엣지 케이스 처리.
|
|
고객과 함께 실사용 시나리오를 테스트하고 피드백을 반영합니다.
|
|
</div>
|
|
<div class="timeline-output"><strong>산출물:</strong> 테스트 리포트, 정확도 통계, 수정 반영</div>
|
|
</div>
|
|
|
|
<div class="timeline-item">
|
|
<div class="timeline-header">
|
|
<div class="timeline-step">STEP 7</div>
|
|
<div class="timeline-duration">3~4일</div>
|
|
</div>
|
|
<div class="timeline-title">배포 및 납품</div>
|
|
<div class="timeline-desc">
|
|
Docker Compose를 통한 운영 환경 배포. 사용자 매뉴얼 제공 및 운영 교육을 진행합니다.
|
|
납품 후 AS 기간 동안 버그 수정 및 안정화를 지원합니다.
|
|
</div>
|
|
<div class="timeline-output"><strong>산출물:</strong> 운영 서버 배포, 사용자 매뉴얼, 관리자 가이드</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- 5. PAYMENT -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="section">
|
|
<div class="section-number">SECTION 05</div>
|
|
<h2 class="section-title">결제 <span class="accent">조건</span></h2>
|
|
<div class="section-divider"></div>
|
|
|
|
<div class="payment-flow">
|
|
<div class="payment-step">
|
|
<div class="percent">50%</div>
|
|
<div class="p-label">착수금</div>
|
|
<div class="p-timing">계약 체결 시</div>
|
|
</div>
|
|
<div class="payment-arrow">→</div>
|
|
<div class="payment-step" style="background:var(--gray-50); border-color:var(--primary); position:relative;">
|
|
<div style="position:absolute;top:-8px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:700;color:var(--white);background:var(--primary);padding:2px 10px;border-radius:10px;">개발 진행</div>
|
|
<div class="percent" style="color:var(--gray-400);font-size:18px;">STEP 1~7</div>
|
|
<div class="p-label">마일스톤 기반 진행</div>
|
|
<div class="p-timing">정기 진행보고</div>
|
|
</div>
|
|
<div class="payment-arrow">→</div>
|
|
<div class="payment-step">
|
|
<div class="percent">50%</div>
|
|
<div class="p-label">잔금</div>
|
|
<div class="p-timing">최종 납품 확인 후</div>
|
|
</div>
|
|
</div>
|
|
|
|
<h3 style="font-size:15px;font-weight:700;margin-bottom:12px;">별도 비용 안내</h3>
|
|
<table class="cost-table">
|
|
<thead>
|
|
<tr>
|
|
<th>항목</th>
|
|
<th>예상 비용</th>
|
|
<th>비고</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><strong>AI API 사용료</strong></td>
|
|
<td>월 1~3만원</td>
|
|
<td>Claude API (검색 건수에 따라 변동), 고객 부담</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>서버 비용 (VPS)</strong></td>
|
|
<td>월 2~5만원</td>
|
|
<td>고객 부담 또는 쟁승메이드 인프라 사용 협의 가능</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>환율 API</strong></td>
|
|
<td>무료~월 1만원</td>
|
|
<td>일일 요청 횟수에 따라 무료 플랜 가능</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>프록시 서비스</strong></td>
|
|
<td>월 1~3만원</td>
|
|
<td>크롤링 안정성 확보용 (선택사항)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<div class="context-box" style="margin-bottom:0;">
|
|
<p>
|
|
<strong>참고:</strong> 위 별도 비용은 운영 단계에서 발생하는 비용으로,
|
|
개발비와는 별도입니다. 서버 환경은 고객의 기존 인프라 활용 여부에 따라 협의합니다.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- 6. TECH STACK -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="section">
|
|
<div class="section-number">SECTION 06</div>
|
|
<h2 class="section-title">기술 <span class="accent">스택</span></h2>
|
|
<div class="section-divider"></div>
|
|
|
|
<p class="section-desc">
|
|
검증된 기술 스택으로 안정성과 확장성을 확보합니다.
|
|
모든 구성 요소는 Docker 기반으로 배포하여 환경 의존성을 최소화합니다.
|
|
</p>
|
|
|
|
<div class="tech-grid">
|
|
<div class="tech-item">
|
|
<div class="t-cat">Frontend</div>
|
|
<div class="t-name">Next.js 16 + Tailwind CSS</div>
|
|
</div>
|
|
<div class="tech-item">
|
|
<div class="t-cat">Backend</div>
|
|
<div class="t-name">API Routes + BullMQ + Redis</div>
|
|
</div>
|
|
<div class="tech-item">
|
|
<div class="t-cat">Crawler</div>
|
|
<div class="t-name">Playwright (Stealth Mode)</div>
|
|
</div>
|
|
<div class="tech-item">
|
|
<div class="t-cat">AI</div>
|
|
<div class="t-name">Claude API (Tool Use, 구조화 출력)</div>
|
|
</div>
|
|
<div class="tech-item">
|
|
<div class="t-cat">DB</div>
|
|
<div class="t-name">PostgreSQL</div>
|
|
</div>
|
|
<div class="tech-item">
|
|
<div class="t-cat">Queue</div>
|
|
<div class="t-name">BullMQ + Redis</div>
|
|
</div>
|
|
<div class="tech-item">
|
|
<div class="t-cat">Deploy</div>
|
|
<div class="t-name">Docker Compose (VPS)</div>
|
|
</div>
|
|
<div class="tech-item">
|
|
<div class="t-cat">External</div>
|
|
<div class="t-name">eBay API / 환율 API</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- 7. SAFETY -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="section">
|
|
<div class="section-number">SECTION 07</div>
|
|
<h2 class="section-title">계정 안전성 <span class="accent">보장</span></h2>
|
|
<div class="section-divider"></div>
|
|
|
|
<p class="section-desc">
|
|
이베이 셀러 계정의 안전은 최우선 사항입니다.
|
|
아래 4가지 원칙으로 계정 리스크를 완전히 차단합니다.
|
|
</p>
|
|
|
|
<div class="safety-grid">
|
|
<div class="safety-card">
|
|
<div class="s-icon">🔒</div>
|
|
<div class="s-title">eBay 공식 API만 사용</div>
|
|
<div class="s-desc">
|
|
이베이 사이트는 절대 크롤링하지 않습니다. 리스팅 등록, 카테고리 조회, Fitment 업로드 등
|
|
모든 이베이 연동은 공식 API를 통해서만 수행합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="safety-card">
|
|
<div class="s-icon">🛡</div>
|
|
<div class="s-title">크롤링 안전 장치</div>
|
|
<div class="s-desc">
|
|
외부 부품 사이트 크롤링 시 요청 간격 제한(Rate Limiting), IP 로테이션 프록시,
|
|
User-Agent 랜덤화 등을 적용하여 타겟 사이트의 차단을 방지합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="safety-card">
|
|
<div class="s-icon">✅</div>
|
|
<div class="s-title">Fitment 소스 기반 검증</div>
|
|
<div class="s-desc">
|
|
AI가 임의로 호환 차종을 생성하지 않습니다. 반드시 실제 소스 데이터를 기반으로 수집하며,
|
|
복수 소스 교차검증을 통해 정확도를 확보합니다.
|
|
</div>
|
|
</div>
|
|
|
|
<div class="safety-card">
|
|
<div class="s-icon">📈</div>
|
|
<div class="s-title">신뢰도 레벨 표시</div>
|
|
<div class="s-desc">
|
|
모든 자동 수집 데이터에 신뢰도 레벨을 부여합니다.
|
|
셀러가 직접 판단할 수 있도록 데이터의 출처와 검증 상태를 투명하게 공개합니다.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<table class="confidence-table">
|
|
<thead>
|
|
<tr>
|
|
<th>신뢰도</th>
|
|
<th>조건</th>
|
|
<th>셀러 액션</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><span class="badge-high">HIGH</span></td>
|
|
<td>2개 이상 소스에서 일치하는 데이터</td>
|
|
<td>바로 사용 가능</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="badge-medium">MEDIUM</span></td>
|
|
<td>1개 소스에서만 확인된 데이터</td>
|
|
<td>확인 후 사용 권장</td>
|
|
</tr>
|
|
<tr>
|
|
<td><span class="badge-low">LOW</span></td>
|
|
<td>AI 추정 데이터 (소스 미확인)</td>
|
|
<td>반드시 수동 확인 필요</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- 8. NOTES -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="section">
|
|
<div class="section-number">SECTION 08</div>
|
|
<h2 class="section-title"><span class="accent">유의</span>사항</h2>
|
|
<div class="section-divider"></div>
|
|
|
|
<ul class="notes-list">
|
|
<li>
|
|
<span class="n-num">1</span>
|
|
<span>
|
|
<strong>추가 기능 별도 견적:</strong>
|
|
본 제안서에 명시된 기능 범위 외의 추가 요청은 별도 견적을 통해 진행합니다.
|
|
범위 변경 시 일정 및 비용이 조정될 수 있습니다.
|
|
</span>
|
|
</li>
|
|
<li>
|
|
<span class="n-num">2</span>
|
|
<span>
|
|
<strong>변경 요청(CR) 정책:</strong>
|
|
패키지별 무료 수정 횟수 이후의 변경 요청은 건당 별도 협의합니다.
|
|
단순 버그 수정은 AS 기간 내 무료로 처리됩니다.
|
|
</span>
|
|
</li>
|
|
<li>
|
|
<span class="n-num">3</span>
|
|
<span>
|
|
<strong>AI 정확도:</strong>
|
|
AI 데이터 추출 정확도 목표는 90% 이상입니다. 100% 정확도를 보장하지는 않으며,
|
|
최종 리스팅 등록 전 사용자의 확인을 권장합니다.
|
|
지속적인 피드백을 통해 정확도를 개선합니다.
|
|
</span>
|
|
</li>
|
|
<li>
|
|
<span class="n-num">4</span>
|
|
<span>
|
|
<strong>크롤링 대상 사이트 변동:</strong>
|
|
타겟 사이트의 구조 변경이나 접근 차단 시 대응 개발이 필요할 수 있습니다.
|
|
AS 기간 내에는 무료로 대응하며, 이후에는 별도 협의합니다.
|
|
</span>
|
|
</li>
|
|
<li>
|
|
<span class="n-num">5</span>
|
|
<span>
|
|
<strong>데이터 보안:</strong>
|
|
고객의 이베이 계정 정보 및 비즈니스 데이터는 암호화하여 저장하며,
|
|
프로젝트 종료 후 고객 요청 시 완전 삭제합니다.
|
|
</span>
|
|
</li>
|
|
<li>
|
|
<span class="n-num">6</span>
|
|
<span>
|
|
<strong>견적 유효기간:</strong>
|
|
본 견적은 발행일(2026년 4월)로부터 <strong>30일간</strong> 유효합니다.
|
|
유효기간 경과 후에는 재견적이 필요할 수 있습니다.
|
|
</span>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<!-- 9. CONTACT -->
|
|
<!-- ══════════════════════════════════════════════ -->
|
|
<div class="contact-section">
|
|
<div class="section-number" style="color:var(--accent);">SECTION 09</div>
|
|
<h2 class="section-title">프로젝트 <span style="color:var(--accent);">문의</span></h2>
|
|
|
|
<p style="font-size:15px;color:var(--gray-400);line-height:1.8;max-width:480px;margin:0 auto 24px;">
|
|
프로젝트에 관한 궁금한 점이나 상담을 원하시면 아래 연락처로 편하게 문의해 주세요.
|
|
24시간 내 회신 드리겠습니다.
|
|
</p>
|
|
|
|
<div class="contact-info-grid">
|
|
<div class="contact-item">
|
|
<div class="c-label">담당자</div>
|
|
<div class="c-value">박재오</div>
|
|
</div>
|
|
<div class="contact-item">
|
|
<div class="c-label">이메일</div>
|
|
<div class="c-value"><a href="mailto:bgg8988@gmail.com">bgg8988@gmail.com</a></div>
|
|
</div>
|
|
<div class="contact-item">
|
|
<div class="c-label">사이트</div>
|
|
<div class="c-value"><a href="https://jaengseung-made.com" target="_blank">jaengseung-made.com</a></div>
|
|
</div>
|
|
</div>
|
|
|
|
<a href="mailto:bgg8988@gmail.com?subject=[이베이 부품 자동화] 프로젝트 문의" class="contact-cta">
|
|
이메일로 문의하기
|
|
</a>
|
|
|
|
<div class="footer-note">
|
|
© 2026 JaengseungMade. All rights reserved.<br>
|
|
본 문서는 기밀 정보를 포함하고 있으며, 수신인 외 제3자에게 공유하지 마시기 바랍니다.
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
</html> |