diff --git a/kodata/index.php b/kodata/index.php new file mode 100644 index 0000000..45a97e8 --- /dev/null +++ b/kodata/index.php @@ -0,0 +1,442 @@ + + + + + + KoDATA EW 리포트 인터뷰 계획안 - SAM Project + + + + + + + + + + + + + + + + '12월 23일(화) 예정', + 'target' => 'KoDATA 영업 및 기술 담당자', + 'purpose' => [ + 'EW 리포트 API 도입 비용 산정', + '데이터 가공 및 재제공에 따른 법적 리스크 점검', + '서비스 종료 이슈 대응' + ] +]; + +$SECTIONS = [ + [ + 'id' => 'cost', + 'title' => 'Ⅰ. 비용 및 계약 조건', + 'subtitle' => 'Cost Efficiency & Terms', + 'icon' => 'credit-card', + 'color' => 'blue', + 'questions' => [ + ['id' => 'c1', 'text' => '과금 체계: EW 리포트 API 호출 시 건당 과금 방식인지, 아니면 정액제인지 명확한 기준은 무엇입니까?', 'priority' => 'high'], + ['id' => 'c2', 'text' => 'API 방식별 차등: VALUE(JSON/XML) 방식과 WEB API(HTML/URL) 방식 간에 이용료 차이가 존재합니까?', 'priority' => 'high'], + ['id' => 'c3', 'text' => '대량 호출 할인: SAM 프로젝트 규모에 따라 호출량이 늘어날 경우 적용 가능한 슬라이딩 단가제(구간별 할인)가 있습니까?', 'priority' => 'medium'], + ['id' => 'c4', 'text' => '유지보수비: API 연동 이후 발생하는 별도의 기술 지원료나 유지보수 비용이 포함됩니까?', 'priority' => 'medium'] + ] + ], + [ + 'id' => 'legal', + 'title' => 'Ⅱ. 데이터 가공 및 법적 리스크', + 'subtitle' => 'Legal Stability & Usage Rights', + 'icon' => 'shield-check', + 'color' => 'emerald', + 'questions' => [ + ['id' => 'l1', 'text' => '데이터 가공 권한: VALUE 방식을 통해 받은 JSON 데이터를 SAM 프로젝트의 UI에 맞춰 재가공하거나, 다른 지표와 결합하여 새로운 인사이트를 도출해 제공하는 것이 저작권법상 허용됩니까?', 'priority' => 'high'], + ['id' => 'l2', 'text' => '재제공 범위: KoDATA에서 제공하는 EW등급, 등급산출사유 등의 정보를 SAM 프로젝트 사용자(제3자)에게 열람하게 하는 것이 계약상 위반 소지가 없습니까?', 'priority' => 'high'], + ['id' => 'l3', 'text' => '데이터 저장: API로 호출한 기업 개요, 재무 정보, 연체 정보 등을 당사 DB에 영구적 또는 일시적으로 저장하여 리포트 이력 관리용으로 사용할 수 있습니까?', 'priority' => 'medium'], + ['id' => 'l4', 'text' => '법적 책임 소재: KoDATA 제공 데이터의 오류로 인해 SAM 프로젝트 사용자가 의사결정 손실을 보았을 경우, 법적 책임의 한계와 면책 조항은 어떻게 됩니까?', 'priority' => 'high'] + ] + ], + [ + 'id' => 'continuity', + 'title' => 'Ⅲ. 서비스 종료 및 연속성 대응', + 'subtitle' => 'Business Continuity', + 'icon' => 'refresh-ccw', + 'color' => 'amber', + 'questions' => [ + ['id' => 's1', 'text' => "종료 사유 및 영향: 2026년 2월 27일 종료 예정인 '기업신용안심서비스'의 종료 사유가 API 서비스의 품질 저하나 데이터 공급 중단과 관련이 있습니까?", 'priority' => 'medium'], + ['id' => 's2', 'text' => "대체 서비스: 서비스 종료 공지에서 언급된 '더 좋은 서비스'가 현재 SAM 프로젝트에서 검토 중인 EW 리포트 API와 어떤 차별점이 있습니까?", 'priority' => 'medium'], + ['id' => 's3', 'text' => '전환 지원: 만약 향후 API 사양이나 서비스 체계가 변경될 경우, SAM 프로젝트가 중단 없이 운영될 수 있도록 하는 마이그레이션 지원 대책이 있습니까?', 'priority' => 'medium'] + ] + ], + [ + 'id' => 'technical', + 'title' => 'Ⅳ. 기술적 활용 상세', + 'subtitle' => 'Technical Integration', + 'icon' => 'cpu', + 'color' => 'slate', + 'questions' => [ + ['id' => 't1', 'text' => '항목 선택: VALUE 방식을 선택할 경우, EW등급 외에 단기연체(신용정보원), 휴폐업정보 등 필요한 항목만 선별하여 단가를 낮추는 구성이 가능합니까?', 'priority' => 'medium'], + ['id' => 't2', 'text' => "'VALUE API 목록WEB' 방식 사용 시 HTML에 인코딩된 CSS가 SAM 프로젝트의 기존 스타일과 충돌할 가능성에 대해 기술적 가이드를 제공합니까?", 'priority' => 'low'] + ] + ] +]; +?> + +
+ + + + +
+
+

+ + KoDATA EW API Interview Dashboard +

+
+ + +
+
+ +
+ +
+
+ +
+ +
+
+ + +
+ +
+

+ KoDATA EW 리포트
+ 인터뷰 계획안 +

+

+ 비용 효율성과 데이터 활용의 법적 안정성을 최우선으로 고려한 + SAM 프로젝트의 데이터 소싱 가이드라인입니다. +

+
+ +
+
+
+ +
+
+

미팅 대상

+

+
+
+
+
+ +
+
+

주요 목적

+
    + +
  • + + +
  • + +
+
+
+
+
+
+ + +
+ '총 질문수', 'value' => '13건', 'color' => 'text-slate-900', 'bg' => 'bg-white'], + ['label' => '필수 항목', 'value' => '6건', 'color' => 'text-rose-600', 'bg' => 'bg-rose-50/50'], + ['label' => '미팅 시간', 'value' => '오전(90m)', 'color' => 'text-slate-900', 'bg' => 'bg-white'], + ['label' => '전략 우선순위', 'value' => '비용/법무', 'color' => 'text-indigo-600', 'bg' => 'bg-indigo-50/50'], + ]; + foreach ($stats as $stat): ?> +
+

+

+
+ +
+ + +
+ +
+
+
+
+ +
+
+

+

+
+
+ +
+ +
+ $q): ?> +
+
+
+ +
+
+

+ 1): ?> + + : + + + + +

+
+ + + + Essential + + + +
+
+
+
+ +
+
+ + + +
+
+
+ +
+

인터뷰 협상 전략 및 팁

+
+ +
+
+ +
+ +
+
+

+ "데이터의 소유권은 KoDATA에 있지만, 활용권은 SAM 프로젝트에 있다"는 점을 명확히 하고, 가공된 데이터가 원본을 대체하지 않음을 강조하십시오. +

+
+ +
+
+
+
+ +
+

식재료와 레시피의 비유

+
+

+ 이 과정은 마치 고급 식재료(KoDATA 데이터)를 구매하여
+ 우리만의 레시피(SAM 프로젝트)로 요리해
+ 손님에게 대접할 때의 과정과 같습니다. +

+
+ +
+
+ + Core Negotiation Points +
+
    + +
  • +
    + +
    + +
  • + +
+
+
+
+
+
+
+ + +
+
+
+ + + + + \ No newline at end of file diff --git a/kodata/ref/.gitignore b/kodata/ref/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/kodata/ref/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/kodata/ref/App.tsx b/kodata/ref/App.tsx new file mode 100644 index 0000000..542bf66 --- /dev/null +++ b/kodata/ref/App.tsx @@ -0,0 +1,130 @@ + +import React from 'react'; +import Layout from './components/Layout'; +import SectionCard from './components/SectionCard'; +import { SECTIONS, MEETING_OVERVIEW } from './constants'; +import { Calendar, User, Target, Lightbulb, ChefHat, Package } from 'lucide-react'; + +const App: React.FC = () => { + return ( + +
+ {/* Hero / Overview */} +
+
+ +
+ +
+
+ + 12월 23일(화) 예정 미팅 +
+ +
+

+ KoDATA EW 리포트
+ 인터뷰 계획안 +

+

+ 비용 효율성과 데이터 활용의 법적 안정성을 최우선으로 고려한 SAM 프로젝트의 핵심 질의 가이드라인입니다. +

+
+ +
+
+ +
+

미팅 대상

+

{MEETING_OVERVIEW.target}

+
+
+
+ +
+

주요 목적

+
    + {MEETING_OVERVIEW.purpose.map((p, i) => ( +
  • {p}
  • + ))} +
+
+
+
+
+
+ + {/* Stats Summary */} +
+ {[ + { label: '총 질문수', value: '13건', color: 'text-slate-900' }, + { label: '필수 항목', value: '6건', color: 'text-rose-600' }, + { label: '미팅 시간', value: '오전 예정', color: 'text-slate-900' }, + { label: '전략 우선순위', value: '비용/법무', color: 'text-indigo-600' }, + ].map((stat, i) => ( +
+

{stat.label}

+

{stat.value}

+
+ ))} +
+ + {/* Sections */} +
+ {SECTIONS.map((section) => ( + + ))} +
+ + {/* Tips Section */} +
+
+ +

인터뷰 협상 전략 및 팁

+
+ +
+

+ "데이터의 소유권은 KoDATA에 있지만, 활용권은 SAM 프로젝트에 있다"는 점을 명확히 하고, 가공된 데이터가 KoDATA의 원본 데이터를 대체하는 경쟁 상품이 되지 않음을 강조하십시오. +

+ +
+
+
+
+ +
+

식재료와 레시피의 비유

+
+

+ 이 과정은 마치 고급 식재료(KoDATA 데이터)를 구매하여 우리만의 레시피(SAM 프로젝트)로 요리해 손님에게 대접할 때의 과정과 같습니다. +

+
+ +
+
+ + 협상 포인트 +
+
    + {[ + "이 요리를 우리 메뉴로 팔아도 되는가? (활용권)", + "재료비는 얼마나 깎아줄 수 있는가? (대량 할인)", + "재료 공급이 중단될 경우 대안은? (연속성)" + ].map((item, idx) => ( +
  • + + {item} +
  • + ))} +
+
+
+
+
+
+
+ ); +}; + +export default App; diff --git a/kodata/ref/README.md b/kodata/ref/README.md new file mode 100644 index 0000000..1399cff --- /dev/null +++ b/kodata/ref/README.md @@ -0,0 +1,20 @@ +
+GHBanner +
+ +# Run and deploy your AI Studio app + +This contains everything you need to run your app locally. + +View your app in AI Studio: https://ai.studio/apps/drive/1sjPYpIWhj0KUSRKJ2WG-5kA8vh1bo9KF + +## Run Locally + +**Prerequisites:** Node.js + + +1. Install dependencies: + `npm install` +2. Set the `GEMINI_API_KEY` in [.env.local](.env.local) to your Gemini API key +3. Run the app: + `npm run dev` diff --git a/kodata/ref/components/Layout.tsx b/kodata/ref/components/Layout.tsx new file mode 100644 index 0000000..a0078ee --- /dev/null +++ b/kodata/ref/components/Layout.tsx @@ -0,0 +1,98 @@ + +import React from 'react'; +import { Calendar, User, Target, ChevronRight, Printer, Share2, Info } from 'lucide-react'; +import { MEETING_OVERVIEW } from '../constants'; + +interface LayoutProps { + children: React.ReactNode; +} + +const Layout: React.FC = ({ children }) => { + return ( +
+ {/* Sidebar - Desktop Only */} + + + {/* Main Content Area */} +
+
+

+ KoDATA EW 리포트 API 도입 인터뷰 계획안 +

+
+ + +
+
+ +
+ {children} + +
+

© 2024 SAM Project - Internal Use Only

+
+
+
+
+ ); +}; + +export default Layout; diff --git a/kodata/ref/components/SectionCard.tsx b/kodata/ref/components/SectionCard.tsx new file mode 100644 index 0000000..f372f10 --- /dev/null +++ b/kodata/ref/components/SectionCard.tsx @@ -0,0 +1,81 @@ + +import React from 'react'; +import { CreditCard, ShieldCheck, RefreshCcw, Cpu, LucideIcon, CheckCircle2 } from 'lucide-react'; +import { Section } from '../types'; + +const IconMap: Record = { + CreditCard, + ShieldCheck, + RefreshCcw, + Cpu, +}; + +interface SectionCardProps { + section: Section; +} + +const SectionCard: React.FC = ({ section }) => { + const Icon = IconMap[section.icon] || Cpu; + + const getPriorityColor = (priority: string) => { + switch (priority) { + case 'high': return 'border-l-4 border-l-rose-500'; + case 'medium': return 'border-l-4 border-l-amber-500'; + default: return 'border-l-4 border-l-slate-300'; + } + }; + + return ( +
+
+
+ +
+
+

{section.title}

+

{section.subtitle}

+
+
+ +
+ {section.questions.map((q, idx) => ( +
+
+
+ {idx + 1} +
+
+

+ {q.text.split(':').length > 1 ? ( + <> + {q.text.split(':')[0]}: + {q.text.split(':')[1]} + + ) : q.text} +

+
+ {q.priority === 'high' && ( + + Essential + + )} +
+ +
+
+
+
+
+ ))} +
+
+ ); +}; + +export default SectionCard; diff --git a/kodata/ref/constants.tsx b/kodata/ref/constants.tsx new file mode 100644 index 0000000..8952765 --- /dev/null +++ b/kodata/ref/constants.tsx @@ -0,0 +1,62 @@ + +import React from 'react'; +import { Section, MeetingOverview } from './types'; +import { CreditCard, ShieldCheck, RefreshCcw, Cpu } from 'lucide-react'; + +export const MEETING_OVERVIEW: MeetingOverview = { + date: '2024년 12월 23일 (화) 오전', + target: 'KoDATA 영업 및 기술 담당자', + purpose: [ + 'EW 리포트 API 도입 비용 산정', + '데이터 가공 및 재제공에 따른 법적 리스크 점검', + '서비스 종료 이슈 대응' + ] +}; + +export const SECTIONS: Section[] = [ + { + id: 'cost', + title: 'Ⅰ. 비용 및 계약 조건', + subtitle: 'Cost Efficiency & Terms', + icon: 'CreditCard', + questions: [ + { id: 'c1', category: 'cost', text: '과금 체계: EW 리포트 API 호출 시 건당 과금 방식인지, 아니면 정액제인지 명확한 기준은 무엇입니까?', priority: 'high' }, + { id: 'c2', category: 'cost', text: 'API 방식별 차등: VALUE(JSON/XML) 방식과 WEB API(HTML/URL) 방식 간에 이용료 차이가 존재합니까?', priority: 'high' }, + { id: 'c3', category: 'cost', text: '대량 호출 할인: SAM 프로젝트 규모에 따라 호출량이 늘어날 경우 적용 가능한 슬라이딩 단가제(구간별 할인)가 있습니까?', priority: 'medium' }, + { id: 'c4', category: 'cost', text: '유지보수비: API 연동 이후 발생하는 별도의 기술 지원료나 유지보수 비용이 포함됩니까?', priority: 'medium' } + ] + }, + { + id: 'legal', + title: 'Ⅱ. 데이터 가공 및 법적 리스크', + subtitle: 'Legal Stability & Usage Rights', + icon: 'ShieldCheck', + questions: [ + { id: 'l1', category: 'legal', text: '데이터 가공 권한: VALUE 방식을 통해 받은 JSON 데이터를 SAM 프로젝트의 UI에 맞춰 재가공하거나, 다른 지표와 결합하여 새로운 인사이트를 도출해 제공하는 것이 저작권법상 허용됩니까?', priority: 'high' }, + { id: 'l2', category: 'legal', text: '재제공 범위: KoDATA에서 제공하는 EW등급, 등급산출사유 등의 정보를 SAM 프로젝트 사용자(제3자)에게 열람하게 하는 것이 계약상 위반 소지가 없습니까?', priority: 'high' }, + { id: 'l3', category: 'legal', text: '데이터 저장: API로 호출한 기업 개요, 재무 정보, 연체 정보 등을 당사 DB에 영구적 또는 일시적으로 저장하여 리포트 이력 관리용으로 사용할 수 있습니까?', priority: 'medium' }, + { id: 'l4', category: 'legal', text: '법적 책임 소재: KoDATA 제공 데이터의 오류로 인해 SAM 프로젝트 사용자가 의사결정 손실을 보았을 경우, 법적 책임의 한계와 면책 조항은 어떻게 됩니까?', priority: 'high' } + ] + }, + { + id: 'continuity', + title: 'Ⅲ. 서비스 종료 및 연속성 대응', + subtitle: 'Business Continuity', + icon: 'RefreshCcw', + questions: [ + { id: 's1', category: 'continuity', text: "종료 사유 및 영향: 2026년 2월 27일 종료 예정인 '기업신용안심서비스'의 종료 사유가 API 서비스의 품질 저하나 데이터 공급 중단과 관련이 있습니까?", priority: 'medium' }, + { id: 's2', category: 'continuity', text: "대체 서비스: 서비스 종료 공지에서 언급된 '더 좋은 서비스'가 현재 SAM 프로젝트에서 검토 중인 EW 리포트 API와 어떤 차별점이 있습니까?", priority: 'medium' }, + { id: 's3', category: 'continuity', text: '전환 지원: 만약 향후 API 사양이나 서비스 체계가 변경될 경우, SAM 프로젝트가 중단 없이 운영될 수 있도록 하는 마이그레이션 지원 대책이 있습니까?', priority: 'medium' } + ] + }, + { + id: 'technical', + title: 'Ⅳ. 기술적 활용 상세', + subtitle: 'Technical Integration', + icon: 'Cpu', + questions: [ + { id: 't1', category: 'technical', text: '항목 선택: VALUE 방식을 선택할 경우, EW등급 외에 단기연체(신용정보원), 휴폐업정보 등 필요한 항목만 선별하여 단가를 낮추는 구성이 가능합니까?', priority: 'medium' }, + { id: 't2', category: 'technical', text: "'VALUE API 목록WEB' 방식 사용 시 HTML에 인코딩된 CSS가 SAM 프로젝트의 기존 스타일과 충돌할 가능성에 대해 기술적 가이드를 제공합니까?", priority: 'low' } + ] + } +]; diff --git a/kodata/ref/index.html b/kodata/ref/index.html new file mode 100644 index 0000000..a641e33 --- /dev/null +++ b/kodata/ref/index.html @@ -0,0 +1,29 @@ + + + + + + + SAM Project | KoDATA Interview Plan + + + + + + + +
+ + + diff --git a/kodata/ref/index.tsx b/kodata/ref/index.tsx new file mode 100644 index 0000000..aaa0c6e --- /dev/null +++ b/kodata/ref/index.tsx @@ -0,0 +1,16 @@ + +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import App from './App'; + +const rootElement = document.getElementById('root'); +if (!rootElement) { + throw new Error("Could not find root element to mount to"); +} + +const root = ReactDOM.createRoot(rootElement); +root.render( + + + +); diff --git a/kodata/ref/metadata.json b/kodata/ref/metadata.json new file mode 100644 index 0000000..2717d35 --- /dev/null +++ b/kodata/ref/metadata.json @@ -0,0 +1,5 @@ +{ + "name": "SAM-KoDATA-Interview-Planner", + "description": "A sophisticated interview planning dashboard for the SAM project's KoDATA EW Report API integration, focusing on cost efficiency and legal stability.", + "requestFramePermissions": [] +} \ No newline at end of file diff --git a/kodata/ref/package.json b/kodata/ref/package.json new file mode 100644 index 0000000..20b74de --- /dev/null +++ b/kodata/ref/package.json @@ -0,0 +1,22 @@ +{ + "name": "sam-kodata-interview-planner", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "react": "^19.2.3", + "lucide-react": "^0.562.0", + "react-dom": "^19.2.3" + }, + "devDependencies": { + "@types/node": "^22.14.0", + "@vitejs/plugin-react": "^5.0.0", + "typescript": "~5.8.2", + "vite": "^6.2.0" + } +} diff --git a/kodata/ref/tsconfig.json b/kodata/ref/tsconfig.json new file mode 100644 index 0000000..2c6eed5 --- /dev/null +++ b/kodata/ref/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ES2022", + "experimentalDecorators": true, + "useDefineForClassFields": false, + "module": "ESNext", + "lib": [ + "ES2022", + "DOM", + "DOM.Iterable" + ], + "skipLibCheck": true, + "types": [ + "node" + ], + "moduleResolution": "bundler", + "isolatedModules": true, + "moduleDetection": "force", + "allowJs": true, + "jsx": "react-jsx", + "paths": { + "@/*": [ + "./*" + ] + }, + "allowImportingTsExtensions": true, + "noEmit": true + } +} \ No newline at end of file diff --git a/kodata/ref/types.ts b/kodata/ref/types.ts new file mode 100644 index 0000000..0c87518 --- /dev/null +++ b/kodata/ref/types.ts @@ -0,0 +1,21 @@ + +export interface Question { + id: string; + text: string; + category: string; + priority: 'high' | 'medium' | 'low'; +} + +export interface Section { + id: string; + title: string; + subtitle: string; + icon: string; + questions: Question[]; +} + +export interface MeetingOverview { + date: string; + target: string; + purpose: string[]; +}