From 6acfeab1ab389aa59ea46562fbabd80738a09008 Mon Sep 17 00:00:00 2001 From: ythong Date: Fri, 24 Jul 2026 12:09:29 +0900 Subject: [PATCH] docs(rfp): KINTEX RFP docx and proposal pptx with generator script Co-Authored-By: Claude Fable 5 --- docs/킨텍스_RFP.docx | Bin 0 -> 48959 bytes docs/킨텍스_제안발표.pptx | Bin 0 -> 124171 bytes scripts/gen_rfp_docs.py | 929 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 929 insertions(+) create mode 100644 docs/킨텍스_RFP.docx create mode 100644 docs/킨텍스_제안발표.pptx create mode 100644 scripts/gen_rfp_docs.py diff --git a/docs/킨텍스_RFP.docx b/docs/킨텍스_RFP.docx new file mode 100644 index 0000000000000000000000000000000000000000..7428663587e934632aa19d99c71e84b37b669191 GIT binary patch literal 48959 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 F{{w4_QFZ_T literal 0 HcmV?d00001 diff --git a/docs/킨텍스_제안발표.pptx b/docs/킨텍스_제안발표.pptx new file mode 100644 index 0000000000000000000000000000000000000000..3f84d09f7fecb3e3f819ca934b4c7d852ced517c GIT binary patch literal 124171 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 hb{DPuOw3#x@OQX=B(9b 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

-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ɉ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 MAP`p#1n|}W0~)Jyl>h($ literal 0 HcmV?d00001 diff --git a/scripts/gen_rfp_docs.py b/scripts/gen_rfp_docs.py new file mode 100644 index 0000000..15b20b9 --- /dev/null +++ b/scripts/gen_rfp_docs.py @@ -0,0 +1,929 @@ +# -*- coding: utf-8 -*- +"""RFP.docx(나라장터 표준) + 제안발표.pptx(50슬라이드) 생성 스크립트. + +근거: docs/PLANNING.md v3.5 (M1~M18 + §5B 공통레이어 + §1A 멀티테넌시 + §8A AI), + docs/design.md v2.8, docs/FEATURE_BACKLOG_100.md +출력: docs/RFP.docx, docs/제안발표.pptx +""" +import os + +BASE = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "docs") +KOR_FONT = "맑은 고딕" +BIZ_NAME = "킨텍스 AI 전시·행사시스템(KINTEX AI Exhibition & Event System) 구축 사업" + +# ══════════════════════════════ RFP DOCX ══════════════════════════════ +from docx import Document +from docx.shared import Pt, Cm, RGBColor +from docx.enum.text import WD_ALIGN_PARAGRAPH +from docx.enum.table import WD_TABLE_ALIGNMENT +from docx.oxml.ns import qn, nsdecls +from docx.oxml import parse_xml + +PRIMARY = RGBColor(0x00, 0x4C, 0x86) + + +def _set_kr(style_or_font): + f = getattr(style_or_font, "font", style_or_font) + f.name = KOR_FONT + el = f.element if hasattr(f, "element") else None + # style 객체 + try: + rpr = style_or_font._element.get_or_add_rPr() + rpr.rFonts.set(qn("w:eastAsia"), KOR_FONT) + except Exception: + pass + + +def run_kr(par, text, size=10, bold=False, color=None, italic=False): + r = par.add_run(text) + r.font.name = KOR_FONT + r._element.rPr.rFonts.set(qn("w:eastAsia"), KOR_FONT) + r.font.size = Pt(size) + r.bold = bold + r.italic = italic + if color: + r.font.color.rgb = color + return r + + +def para(doc, text, size=10, bold=False, color=None, align=None, space_after=6, indent=None): + p = doc.add_paragraph() + if align is not None: + p.alignment = align + p.paragraph_format.space_after = Pt(space_after) + if indent: + p.paragraph_format.left_indent = Cm(indent) + run_kr(p, text, size=size, bold=bold, color=color) + return p + + +def bullet(doc, text, size=10, level=0): + p = doc.add_paragraph(style="List Bullet" if level == 0 else "List Bullet 2") + run_kr(p, text, size=size) + p.paragraph_format.space_after = Pt(3) + return p + + +def heading(doc, text, level=1): + h = doc.add_heading(level=level) + sizes = {1: 16, 2: 13, 3: 11.5} + run_kr(h, text, size=sizes.get(level, 11), bold=True, color=PRIMARY) + return h + + +def shade(cell, hexcolor="D9EAF7"): + cell._tc.get_or_add_tcPr().append( + parse_xml(r''.format(nsdecls("w"), hexcolor))) + + +def make_table(doc, header, rows, widths=None, hdr_size=9.5, size=9.5): + t = doc.add_table(rows=1 + len(rows), cols=len(header)) + t.style = "Table Grid" + t.alignment = WD_TABLE_ALIGNMENT.CENTER + for j, htxt in enumerate(header): + c = t.cell(0, j) + c.paragraphs[0].alignment = WD_ALIGN_PARAGRAPH.CENTER + run_kr(c.paragraphs[0], htxt, size=hdr_size, bold=True) + shade(c) + for i, row in enumerate(rows): + for j, val in enumerate(row): + c = t.cell(i + 1, j) + run_kr(c.paragraphs[0], str(val), size=size) + if widths: + for j, w in enumerate(widths): + for row in t.rows: + row.cells[j].width = Cm(w) + doc.add_paragraph().paragraph_format.space_after = Pt(4) + return t + + +def req_block(doc, rid, name, details): + """요구사항 상세 카드(조달청 서식: 고유번호/명칭/상세설명).""" + t = doc.add_table(rows=3, cols=4) + t.style = "Table Grid" + hdr = [("요구사항 고유번호", rid), ("요구사항 명칭", name)] + for k, (label, val) in enumerate(hdr): + lc, vc = t.cell(0, k * 2), t.cell(0, k * 2 + 1) + run_kr(lc.paragraphs[0], label, size=9, bold=True); shade(lc) + run_kr(vc.paragraphs[0], val, size=9, bold=True) + dc = t.cell(1, 0); dc.merge(t.cell(1, 3)) + run_kr(dc.paragraphs[0], "요구사항 상세설명", size=9, bold=True); shade(dc, "EFF6FC") + bc = t.cell(2, 0); bc.merge(t.cell(2, 3)) + first = True + for d in details: + p = bc.paragraphs[0] if first else bc.add_paragraph() + first = False + run_kr(p, "○ " + d, size=9) + doc.add_paragraph().paragraph_format.space_after = Pt(2) + + +# ---- 요구사항 데이터 (총 50건) ---- +SFR = [ + ("SFR-001", "행사·홀 배정 및 자동 견적(M1)", [ + "행사 등록 시 희망 면적·기간·홀 조건을 입력하면 가용 홀 탐색과 충돌 검증을 자동 수행하여야 한다.", + "홀 요율 규칙(기준단가 2,250원/㎡ 등 요율 마스터) 기반 즉시 자동 견적을 산출하여야 한다.", + "홀 배정 확정 시 행사 워크스페이스가 자동 생성되어 후속 모듈(M2~M9)과 연계되어야 한다."]), + ("SFR-002", "플로어플랜 스튜디오 — 부스 배치 자동화(M2)", [ + "홀 도면(DWG/JPG) 언더레이 위에 부스 폴리곤을 배치·편집하는 웹 캔버스 에디터를 제공하여야 한다(팬·줌 포함).", + "조건(부스 수·규격·통로폭·소방 규정) 입력 시 복수 배치안을 자동 생성하고 비교·선택·병합할 수 있어야 한다.", + "K1·K2 전시홀 실측 도면(트렌치 좌표 포함)을 기준 데이터로 적재하여야 한다."]), + ("SFR-003", "자동 배치 3단계 위저드(M2-1)", [ + "초보 사용자용 3단계 위저드(홀/구역 선택 → 조건 입력 → 결과 비교·선택)를 제공하여야 한다.", + "전시홀 트리(전시장>홀>구역) 선택과 구역 경계 스냅 배치를 지원하여야 한다.", + "배치 적용(apply-option) 시 실제 저장·후속 단계 연계까지 폐루프로 완결되어야 한다."]), + ("SFR-004", "부스 설계 스튜디오(M3)", [ + "부스 단위 인테리어·장치 공사 설계(구조물·가구·사인·조명 배치)를 지원하여야 한다.", + "설계안으로부터 물량(BOQ)·예상 공사비 개산을 자동 산출하여야 한다."]), + ("SFR-005", "유틸리티 설계 자동화(M4)", [ + "부스 좌표 기반 전기·조명, 네트워크, 급배수 배선 경로를 트렌치 위치 기준으로 자동 산출하여야 한다.", + "배선 결과를 도면 오버레이로 시각화하고 자동 견적과 연동하여야 한다."]), + ("SFR-006", "나노바나나 시공 예상 시각화(M5)", [ + "배치·설계·배선 데이터를 근거로 이미지 생성 AI(Gemini 계열)를 통해 '시공 후 결과 사진'을 생성하여야 한다.", + "표준 샷 세트(부스 정면/야간 조명/통로 뷰/홀 조감 등 S1~S7)와 Before/After 비교를 제공하여야 한다.", + "생성 이미지에는 'AI 생성' 워터마크와 고지문구를 강제 적용하여야 한다.", + "생성 작업은 비동기 큐(RenderJob) 기반으로 처리하고 완료 시 실시간 통지(WebSocket)하여야 한다."]), + ("SFR-007", "서류·마일스톤 워크플로(M6)", [ + "행사 준비 서류(반입·전기·화기 등)의 온라인 제출·검수·승인 워크플로를 제공하여야 한다.", + "마일스톤(D-day) 기반 마감 관리와 알림(임박·초과)을 제공하여야 한다."]), + ("SFR-008", "등록업체 매칭·견적(M7)", [ + "킨텍스 등록업체(장치·전기·통신 등) 디렉토리와 업체 매칭·견적 요청 기능을 제공하여야 한다."]), + ("SFR-009", "반입/반출 물류 슬롯(M8)", [ + "반입·반출 차량 슬롯 예약과 게이트 배정, 현장 혼잡 분산 기능을 제공하여야 한다."]), + ("SFR-010", "정산·결제(M9)", [ + "홀 사용료·유틸리티·부대서비스 통합 정산과 PG 연동 온라인 결제, 환불 정책 처리를 제공하여야 한다."]), + ("SFR-011", "공사/장치 옥션 플랫폼(M15)", [ + "AI 설계 산출물(배치·설계·물량·예상 이미지)을 근거자료로 공사·장치업체 대상 역경매(입찰)를 운영하여야 한다.", + "견적서 제출·실시간 순위·채점(가격+실적+평가)·낙찰자 선정 흐름을 제공하여야 한다."]), + ("SFR-012", "관람객 등록·티켓·배지·리드캡처(M10)", [ + "관람객 사전등록·티켓 발급·QR 배지·현장 체크인을 제공하여야 한다.", + "참가업체용 리드 캡처(QR 스캔·명함)와 사후 리드 관리 기능을 제공하여야 한다."]), + ("SFR-013", "비즈니스 매칭(M11)", [ + "참가업체-바이어 프로필 기반 AI 추천 매칭과 상담 일정 예약 기능을 제공하여야 한다."]), + ("SFR-014", "마케팅·EDM·공개 홍보 사이트(M12)", [ + "일반 대중 대상 공개 홍보 사이트(전시 일정·안내·포스터, 반응형·SEO)를 제공하여야 한다.", + "EDM 발송·구독 관리·수신거부 처리 기능을 제공하여야 한다."]), + ("SFR-015", "Wayfinding·실내 내비(M13)", [ + "홀 도면 기반 부스 검색·경로 안내(모바일 웹) 기능을 제공하여야 한다."]), + ("SFR-016", "현장운영(M14)", [ + "혼잡·안전·주차·에너지 현황 모니터링 대시보드를 제공하여야 한다."]), + ("SFR-017", "경영분석 BI(M16)", [ + "매출·홀 가동률·참가사 리텐션·행사 P&L·수요예측 KPI 대시보드를 제공하여야 한다.", + "운영사 관점 수익성/ROI 분석과 데이터마트 기반 집계를 제공하여야 한다."]), + ("SFR-018", "CMS(M17)", [ + "전시 콘텐츠·공지·배너·참가업체 마이크로사이트·다국어 콘텐츠 관리(헤드리스)를 제공하여야 한다."]), + ("SFR-019", "관리자 백오피스·시스템관리(M18·공통)", [ + "사용자·역할/권한(RBAC)·메뉴·공통코드·감사로그·시스템설정 관리 기능을 제공하여야 한다.", + "룰셋(규정·요율) 관리와 통계·모니터링 기능을 제공하여야 한다."]), + ("SFR-020", "공통 업무기능·멀티테넌시·모바일", [ + "공통 업무기능(업무일지·일정·쪽지·공지·의견·검색·보고서·알림)을 전 역할 공용으로 제공하여야 한다.", + "다중 전시관(테넌트) 격리(tenant_id 전파·컨텍스트 해소·2계층 관리자)를 지원하여야 한다.", + "모바일 앱(운영 B2B·관람객 B2C)에서 조회·승인·현장 기능을 제공하여야 한다."]), +] +PER = [ + ("PER-001", "응답시간", ["일반 화면 조회 3초 이내, 자동 배치안 생성 30초 이내(안 3개 기준), AI 이미지 생성은 비동기 처리 후 완료 통지."]), + ("PER-002", "동시사용자", ["평시 500명, 대형 행사 피크 3,000명 동시접속에서 성능 저하 없이 서비스 가능하여야 한다."]), + ("PER-003", "가용성", ["연중 가용률 99.5% 이상, 계획 정지는 사전 공지 후 야간 수행."]), +] +SIR = [ + ("SIR-001", "결제(PG) 연동", ["신용카드·계좌이체 등 PG 연동 및 취소·부분환불 처리."]), + ("SIR-002", "SSO·HR 연동", ["킨텍스 내부 SSO(Open SSO)와 인사(HR) 조직·직원 정보 연동."]), + ("SIR-003", "CAD(DWG) 연동", ["홀 도면 DWG 입력 파이프라인(좌표 추출·캘리브레이션·JPG 렌더) 제공."]), +] +DAR = [ + ("DAR-001", "공간 데이터", ["부스 폴리곤·트렌치 포인트·배선 경로를 공간 타입(PostGIS)으로 관리하고 공간 연산을 지원."]), + ("DAR-002", "마스터 데이터", ["홀·요율·규정 룰셋·공통코드·등록업체 마스터의 표준화 및 이관·시드."]), + ("DAR-003", "데이터 표준", ["명명 규칙·코드 표준·이력 관리(감사) 등 데이터 표준 수립 및 준수."]), +] +ECR = [ + ("ECR-001", "서버 구성", ["WAS(Spring Boot)·WEB(nginx)·DB(PostgreSQL+PostGIS)·캐시/큐(Redis)·AI 워커(Python) 구성."]), + ("ECR-002", "운영환경", ["개발·운영 환경 분리, 서비스 데몬(systemd) 및 무중단 배포 고려."]), + ("ECR-003", "스토리지", ["AI 생성 이미지·도면 파일용 오브젝트 스토리지 및 백업 체계."]), +] +SER = [ + ("SER-001", "인증·인가", ["JWT 기반 인증 + 2차인증(OTP), 행사 단위 RBAC, 테넌트 격리 접근통제."]), + ("SER-002", "개인정보보호", ["개인정보 암호화(저장·전송), 마스킹, 접속기록 보관 등 개인정보보호법 준수."]), + ("SER-003", "시큐어코딩", ["행정안전부 소프트웨어 개발보안 가이드 준수 및 보안약점 진단·조치."]), + ("SER-004", "AI 산출물 신뢰성", ["AI 생성물 'AI 생성/초안' 라벨·워터마크 강제, 구조 안전성 최종 판정은 인간 승인 절차 유지."]), +] +TER = [ + ("TER-001", "테스트", ["단위·통합·성능·보안 테스트 계획 수립 및 수행, 결함 관리 체계 운영."]), + ("TER-002", "검수", ["기능별 검수 시나리오 기반 사용자 인수테스트(UAT) 지원."]), +] +QUR = [ + ("QUR-001", "품질보증", ["품질보증 계획 수립, 산출물 표준 준수, 단계별 품질 게이트 운영."]), + ("QUR-002", "표준 준수", ["전자정부 표준프레임워크 상당의 개발표준 및 발주기관 UI/UX 표준(디자인 시스템) 준수."]), +] +COR = [ + ("COR-001", "기술 제약", ["확정 스택(React+TypeScript / Spring Boot 3.x Java 17 / MyBatis / PostgreSQL+PostGIS / Redis) 준수."]), + ("COR-002", "지식재산권", ["개발 산출물 소유권은 발주기관에 귀속, 오픈소스 라이선스 검증 수행."]), + ("COR-003", "AI 비용 제약", ["AI 호출은 토큰 최소화 원칙(소형모델 우선·캐싱·출력 상한·집계는 SQL) 준수, 사용량 측정지표 제공."]), +] +PMR = [ + ("PMR-001", "사업관리", ["WBS 기반 일정·진척 관리, 주간·월간 보고, 이슈·리스크 관리."]), + ("PMR-002", "방법론", ["애자일(스프린트) 기반 반복 개발과 단계별 산출물 검토 병행."]), + ("PMR-003", "형상관리", ["소스·문서 형상관리(Git), 변경관리 절차 운영."]), + ("PMR-004", "투입인력", ["PM·아키텍트(AA/TA/DA)·백엔드·프론트·AI·DB·QA 등 분야별 적정 인력 투입 및 교체 승인 절차."]), +] +PSR = [ + ("PSR-001", "교육·기술이전", ["운영자·사용자 교육 및 운영 매뉴얼·기술문서 제공, 기술이전 계획 수립."]), + ("PSR-002", "하자보수", ["검수 완료 후 무상 하자보수 12개월, 하자 등급별 대응시간 준수."]), + ("PSR-003", "안정화 지원", ["오픈 후 안정화 기간(2개월) 상주 지원 및 비상 대응 체계."]), +] +REQ_GROUPS = [ + ("기능 요구사항(SFR)", SFR), ("성능 요구사항(PER)", PER), ("인터페이스 요구사항(SIR)", SIR), + ("데이터 요구사항(DAR)", DAR), ("시스템 장비구성 요구사항(ECR)", ECR), ("보안 요구사항(SER)", SER), + ("테스트 요구사항(TER)", TER), ("품질 요구사항(QUR)", QUR), ("제약사항(COR)", COR), + ("프로젝트 관리 요구사항(PMR)", PMR), ("프로젝트 지원 요구사항(PSR)", PSR), +] + + +def build_docx(path): + doc = Document() + # 기본 스타일 + normal = doc.styles["Normal"] + normal.font.name = KOR_FONT + normal.font.size = Pt(10) + normal._element.get_or_add_rPr().rFonts.set(qn("w:eastAsia"), KOR_FONT) + for hs in ["Heading 1", "Heading 2", "Heading 3"]: + st = doc.styles[hs] + st.font.name = KOR_FONT + st._element.get_or_add_rPr().rFonts.set(qn("w:eastAsia"), KOR_FONT) + sec = doc.sections[0] + sec.top_margin = sec.bottom_margin = Cm(2.2) + sec.left_margin = sec.right_margin = Cm(2.4) + + # ── 표지 ── + for _ in range(4): + doc.add_paragraph() + para(doc, "제 안 요 청 서", size=32, bold=True, color=PRIMARY, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=18) + para(doc, "(RFP : Request For Proposal)", size=14, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=30) + para(doc, BIZ_NAME, size=17, bold=True, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=10) + para(doc, "— 나라장터(국가종합전자조달, g2b.go.kr) 공고용 —", size=11, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=60) + for _ in range(6): + doc.add_paragraph() + para(doc, "2026. 7.", size=14, bold=True, align=WD_ALIGN_PARAGRAPH.CENTER, space_after=14) + para(doc, "주식회사 킨텍스(KINTEX)", size=16, bold=True, align=WD_ALIGN_PARAGRAPH.CENTER) + doc.add_page_break() + + # ── 목차(개요) ── + heading(doc, "목 차", 1) + for line in [ + "Ⅰ. 사업 개요", "Ⅱ. 현황 및 문제점", "Ⅲ. 사업 추진방안", "Ⅳ. 제안요청 내용(요구사항)", + "Ⅴ. 제안서 작성요령(제안서 목차 포함)", "Ⅵ. 제안서 평가", "Ⅶ. 계약 일반조건 및 특수조건", + "[별첨] 제안서 표지 서식·요구사항 대응표"]: + para(doc, line, size=11, space_after=8) + doc.add_page_break() + + # ── Ⅰ. 사업 개요 ── + heading(doc, "Ⅰ. 사업 개요", 1) + heading(doc, "1. 사업 기본정보", 2) + make_table(doc, ["구분", "내용"], [ + ["사 업 명", BIZ_NAME], + ["발주기관", "주식회사 킨텍스(KINTEX)"], + ["사업기간", "계약체결일로부터 12개월 (안정화 지원 2개월 별도)"], + ["사업예산", "금 2,970,000,000원(부가가치세 포함) 이내 ※ 협상에 의한 계약"], + ["계약방법", "제한경쟁입찰 / 협상에 의한 계약 (나라장터 전자입찰)"], + ["입찰방식", "국가종합전자조달시스템(나라장터, g2b.go.kr) 전자제출"], + ], widths=[3.2, 12.5]) + heading(doc, "2. 추진 배경", 2) + bullet(doc, "킨텍스는 총 전시면적 108,011㎡의 국내 최대 전시장을 운영하나, 전시 준비 실무는 HWP 서식 다운로드 후 이메일 제출, CAD 수작업 배치안, 담당자 육안 규정 검토, 수기 위치표시도 기반 유틸리티 신청 등 수작업 중심에 머물러 있음.") + bullet(doc, "온라인 작업신고 시스템(kxwp)이 존재하나 로그인 기반 서류 업로드 창구 수준이며, 참가업체 유틸리티 신청은 전시회별 주최자 시스템으로 파편화되어 있음.") + bullet(doc, "2028년 제3전시장 개관(전공 면적 178,000㎡ 확대)에 대비하여 전시 생애주기 전 과정의 디지털 전환·자동화가 시급함.") + heading(doc, "3. 사업 목표", 2) + bullet(doc, "\"신청서를 내는 시간, 시공 후 사진을 먼저 본다\" — 전시 준비 전 과정(홀 배정→부스 배치→장치공사 설계→전기/조명→네트워크/유틸리티 배선→반입/반출)을 AI로 자동 설계·검증하고, 이미지 생성 AI(나노바나나)로 시공 결과를 사전 시각화.") + make_table(doc, ["목표", "현재(As-Is)", "목표(To-Be)"], [ + ["홀 배정 견적 회신", "문의→협의→견적 수일", "즉시 자동 견적"], + ["부스 배치안 초안", "CAD 수작업 수일~수주", "조건 입력 후 복수 안 자동 생성(30초 이내)"], + ["도면 규정 검토", "담당자 육안 검토", "규정 전반 자동 플래깅(통로폭·소방 등)"], + ["유틸리티 신청", "수기 위치 표시", "부스 좌표 클릭 → 자동 배선·자동 견적"], + ["시공 결과 예측", "불가(조감도 별도 외주)", "표준 샷 세트 자동 생성(부스 정면/야간/통로/조감)"], + ], widths=[4.2, 5.4, 6.1]) + heading(doc, "4. 사업 범위", 2) + bullet(doc, "응용시스템 구축: 부스 코어(M1~M9) + 도메인 확장(M10~M18) 총 18개 모듈, 공통/시스템관리 레이어, 6+2 역할별 웹 포털(MDI) 및 모바일 앱(운영 B2B·관람객 B2C).") + bullet(doc, "AI 서비스: 부스 배치 자동생성(제약 솔버+LLM), 규정 검증 보조, 나노바나나 시공 예상 이미지 파이프라인, 자연어 조회, 수요/매출 예측, 비즈니스 매칭 추천.") + bullet(doc, "데이터 구축: 홀·요율·규정 룰셋 마스터, K1·K2 실측 도면(DWG/JPG)·트렌치 좌표 공간데이터 적재.") + bullet(doc, "다중 전시관(멀티테넌트 SaaS) 기반 구조 및 시스템 인프라(서버·스토리지·배포체계) 구성, 교육·기술이전·안정화 지원.") + bullet(doc, "범위 제외: 전자계약 법적 체결(Phase 3 이후 검토), 구조 안전성 최종 판정의 AI 대체(인간 승인 유지), 관람객 택시·숙박 예약 등 부가 서비스.") + doc.add_page_break() + + # ── Ⅱ. 현황 및 문제점 ── + heading(doc, "Ⅱ. 현황 및 문제점", 1) + heading(doc, "1. 업무 현황", 2) + bullet(doc, "주최자: 행사 유치→홀 배정 협의→도면 승인→서류 취합→현장 운영→정산의 전 과정을 이메일·전화·수기 문서로 수행, 단계 간 데이터 단절.") + bullet(doc, "참가업체·장치업체: 부스 설계·공사 견적을 개별 접촉으로 확보, 시공 결과를 사전에 확인할 수단 부재, 유틸리티 신청 창구 파편화.") + bullet(doc, "킨텍스 운영: 도면 규정 검토·서류 검수·현장 민원 대응에 수작업 반복, 행사별 데이터가 축적·분석되지 않아 경영분석 곤란.") + heading(doc, "2. 정보시스템 현황", 2) + make_table(doc, ["시스템", "기능", "한계"], [ + ["kxwp(온라인 작업신고)", "로그인 후 서류 업로드", "설계·검증·견적 기능 부재, 단순 창구"], + ["홈페이지(kintex.com)", "행사 안내·홍보", "업무시스템과 미연계"], + ["주최자별 개별 시스템", "행사별 참가업체 관리", "킨텍스 공통 플랫폼 부재, 데이터 미축적"], + ], widths=[4.5, 5.2, 6.0]) + heading(doc, "3. 개선 방향", 2) + bullet(doc, "전시 생애주기(영업·기획→설계·시각화→발주·계약→참가·관람→현장운영→사후·경영) 전 단계를 단일 플랫폼·단일 데이터 체계로 자동화.") + bullet(doc, "실측 공간데이터(PostGIS) 기반 자동 설계와 이미지 생성 AI 시각화를 결합한 차별화 — 설계→시각화→발주(옥션)→시공→운영→분석의 폐루프 완성.") + doc.add_page_break() + + # ── Ⅲ. 사업 추진방안 ── + heading(doc, "Ⅲ. 사업 추진방안", 1) + heading(doc, "1. 추진 전략", 2) + bullet(doc, "P0 코어 우선: 차별화 핵심인 부스 배치(M2)→부스 설계(M3)→유틸리티 배선(M4)→나노바나나 시각화(M5)를 최우선 구축하여 조기 가시화.") + bullet(doc, "AI 산출물 신뢰성 확보: 모든 AI 산출물에 'AI 생성/초안' 라벨·워터마크, 규정 검증의 인간 최종 승인 절차 병행.") + bullet(doc, "표준 준수: 확정 기술스택(React·Spring Boot 3.x·MyBatis·PostgreSQL/PostGIS·Redis)과 발주기관 디자인 시스템 준수.") + bullet(doc, "멀티테넌트 기반: 킨텍스를 기준 테넌트로 하되 타 전시관 온보딩이 가능한 격리 구조(tenant_id 전파) 선반영.") + heading(doc, "2. 추진 체계", 2) + make_table(doc, ["주체", "역할"], [ + ["발주기관(킨텍스)", "사업총괄, 요구사항 확정, 검수, 마스터데이터 제공"], + ["수행사(제안사)", "설계·구현·테스트·이행·교육·안정화, 품질/일정/위험 관리"], + ["감리(필요 시)", "단계별 산출물·품질 점검"], + ], widths=[4.5, 11.2]) + heading(doc, "3. 추진 일정(안)", 2) + make_table(doc, ["단계", "기간", "주요 내용"], [ + ["Phase 1 분석·설계", "M1~M3", "요구사항 상세화, 아키텍처(AA/TA/DA) 확정, 데이터 표준·ERD, 화면 설계"], + ["Phase 2 구축(P0 코어)", "M3~M7", "M2~M5 부스 코어 + 공통/시스템관리 레이어 + 인증(2FA)"], + ["Phase 3 구축(도메인)", "M6~M10", "M1·M6~M18 도메인 모듈 + 모바일 앱 + 공개사이트"], + ["Phase 4 통합·이행", "M10~M12", "통합테스트·성능·보안점검, 데이터 이관, UAT, 오픈"], + ["안정화", "오픈 후 2개월", "상주 지원, 하자 대응, 운영 이관·기술이전"], + ], widths=[3.8, 3.2, 8.7]) + doc.add_page_break() + + # ── Ⅳ. 제안요청 내용 ── + heading(doc, "Ⅳ. 제안요청 내용(요구사항)", 1) + para(doc, "본 장의 요구사항은 소프트웨어사업 요구사항 분류체계(기능 SFR·성능 PER·인터페이스 SIR·데이터 DAR·장비 ECR·보안 SER·테스트 TER·품질 QUR·제약 COR·관리 PMR·지원 PSR)에 따라 기술한다. 제안사는 전 요구사항에 대한 수용 여부와 구현 방안을 제안서에 명시하여야 한다.", size=10) + heading(doc, "1. 요구사항 총괄표", 2) + make_table(doc, ["분류", "요구사항 수", "고유번호"], + [[g[0], len(g[1]), f"{g[1][0][0]} ~ {g[1][-1][0]}"] for g in REQ_GROUPS] + + [["합계", sum(len(g[1]) for g in REQ_GROUPS), ""]], + widths=[7.0, 3.2, 5.5]) + for gi, (gname, items) in enumerate(REQ_GROUPS): + heading(doc, f"{gi + 2}. {gname}", 2) + for rid, name, details in items: + req_block(doc, rid, name, details) + doc.add_page_break() + + # ── Ⅴ. 제안서 작성요령 ── + heading(doc, "Ⅴ. 제안서 작성요령", 1) + heading(doc, "1. 일반 지침", 2) + bullet(doc, "제안서는 본 제안요청서의 요구사항 순서에 따라 국문으로 작성하며, A4 기준 200쪽 이내(표지·목차·별첨 제외)로 한다.") + bullet(doc, "제안 내용은 구체적 구현 방안 중심으로 기술하고, 단순 일반론·타사 실적 나열은 지양한다.") + bullet(doc, "요구사항 대응표(요구사항 고유번호 ↔ 제안서 페이지)를 별첨으로 반드시 포함한다.") + bullet(doc, "제안서 및 제안발표자료는 나라장터 전자제출을 원칙으로 한다.") + heading(doc, "2. 제안서 목차(표준)", 2) + para(doc, "제안발표자료는 아래 제안서 목차와 동일한 체계로 작성한다.", size=10, bold=True) + make_table(doc, ["부", "장", "내용"], [ + ["Ⅰ. 제안 개요", "1~4", "제안사 일반현황 / 사업의 이해 / 제안 핵심 요지 / 제안 특장점"], + ["Ⅱ. 기술 부문", "1~3", "목표 시스템(아키텍처·기술스택·멀티테넌시·3-트랙 IA)"], + ["", "4~14", "기능 구현방안(M1~M18 모듈별) / 공통·시스템관리 레이어"], + ["", "15~19", "AI 구현방안(나노바나나·토큰최소화) / 데이터·연동 / 모바일 / 보안 / 성능·품질(NFR)"], + ["Ⅲ. 사업관리 부문", "1~6", "추진전략·방법론 / 조직·인력 / 일정 / 마일스톤·산출물 / 위험관리 / 품질보증·형상관리"], + ["Ⅳ. 기술지원 부문", "1~4", "교육·기술이전 / 유지보수·하자보수 / 비상대응·보안준수 / 기대효과"], + ], widths=[3.9, 2.0, 9.8]) + heading(doc, "3. 제안발표", 2) + bullet(doc, "제안발표자료(PPT)는 50쪽 내외로 제안서 목차 순서에 따라 작성하며, 발표 20분·질의응답 15분으로 한다.") + bullet(doc, "발표자는 제안 PM을 원칙으로 한다.") + doc.add_page_break() + + # ── Ⅵ. 제안서 평가 ── + heading(doc, "Ⅵ. 제안서 평가", 1) + heading(doc, "1. 평가 방법", 2) + bullet(doc, "협상에 의한 계약 체결 기준(기획재정부 계약예규)에 따라 기술능력평가(90%)와 입찰가격평가(10%)를 합산하여 협상적격자를 선정한다.") + bullet(doc, "기술능력평가 점수가 배점한도의 85% 이상인 자를 협상적격자로 한다.") + heading(doc, "2. 기술평가 배점(안)", 2) + make_table(doc, ["평가부문", "평가항목", "배점"], [ + ["전략·방법론(20)", "사업 이해도·추진전략", "10"], + ["", "방법론·일정·자원 계획", "10"], + ["기술·기능(45)", "시스템 아키텍처·기술 적합성", "10"], + ["", "기능 요구사항 구현방안(M1~M18)", "20"], + ["", "AI(자동설계·시각화) 구현방안·신뢰성", "10"], + ["", "보안·성능·품질 확보방안", "5"], + ["수행역량(15)", "투입인력 전문성·유사실적", "10"], + ["", "품질보증·위험관리 체계", "5"], + ["지원(10)", "교육·기술이전·하자보수·안정화", "10"], + ["합계", "", "90"], + ], widths=[4.4, 8.5, 2.4]) + doc.add_page_break() + + # ── Ⅶ. 계약조건 ── + heading(doc, "Ⅶ. 계약 일반조건 및 특수조건", 1) + for txt in [ + "계약 방식: 협상에 의한 계약, 확정금액 방식. 선금·기성·잔금 지급은 국가계약법령 및 발주기관 규정에 따른다.", + "하자담보: 검수 완료일로부터 12개월 무상 하자보수. 하자 등급별 대응(긴급 4시간 내 착수, 일반 2영업일 내).", + "지식재산권: 사업 수행 산출물의 소유권은 발주기관에 귀속하며, 오픈소스 사용 시 라이선스 검증 결과를 제출한다.", + "보안 준수: 수행 인력 보안서약, 개인정보 취급 최소화, 개발·운영 데이터 반출 금지, 프로젝트 종료 시 자료 파기 확인.", + "지체상금: 지체일수 1일당 계약금액의 0.75/1000. 계약상대자 귀책 시 국가계약법령에 따라 부과.", + "기술이전: 소스코드·설계문서·운영매뉴얼 일체 제공 및 운영인력 교육(관리자·운영자·사용자 각 1회 이상).", + "AI 특수조건: 이미지 생성 등 외부 AI API 사용 비용의 산정 근거와 상한 관리 방안을 제안서에 명시하고, AI 생성물 표시(워터마크·라벨)를 준수한다.", + ]: + bullet(doc, txt) + doc.add_page_break() + + # ── 별첨 ── + heading(doc, "[별첨 1] 제안서 표지 서식", 1) + make_table(doc, ["항목", "기재 내용"], [ + ["사업명", BIZ_NAME], ["제안사명", "(상호·대표자·소재지)"], + ["제출일자", "2026. . ."], ["담당자", "(성명·연락처·이메일)"], + ], widths=[4.0, 11.7]) + heading(doc, "[별첨 2] 요구사항 대응표 서식", 1) + make_table(doc, ["요구사항 고유번호", "요구사항 명칭", "수용여부", "제안서 페이지"], + [["SFR-001", "행사·홀 배정 및 자동 견적(M1)", "수용/부분수용/미수용", "p."], + ["…", "…", "…", "…"]], + widths=[3.6, 7.0, 3.2, 2.6]) + doc.save(path) + return path + + +# ══════════════════════════════ PPTX ══════════════════════════════ +from pptx import Presentation +from pptx.util import Inches, Pt as PPt +from pptx.dml.color import RGBColor as PRGB +from pptx.enum.text import PP_ALIGN, MSO_ANCHOR +from pptx.enum.shapes import MSO_SHAPE +from pptx.oxml.ns import qn as pqn + +P_BLUE = PRGB(0x00, 0x66, 0xB3) +P_DARK = PRGB(0x00, 0x4C, 0x86) +P_AI = PRGB(0x6D, 0x4A, 0xFF) +P_GREY = PRGB(0x34, 0x40, 0x54) +P_LIGHT = PRGB(0xEF, 0xF6, 0xFC) +P_WHITE = PRGB(0xFF, 0xFF, 0xFF) + + +def pset(run, size, bold=False, color=P_GREY): + f = run.font + f.size = PPt(size) + f.bold = bold + f.color.rgb = color + f.name = KOR_FONT + rPr = run._r.get_or_add_rPr() + for tag in ("a:ea", "a:cs"): + el = rPr.find(pqn(tag)) + if el is None: + el = rPr.makeelement(pqn(tag), {}) + rPr.append(el) + el.set("typeface", KOR_FONT) + + +def add_box(slide, x, y, w, h): + tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) + tb.text_frame.word_wrap = True + return tb.text_frame + + +def add_rect(slide, x, y, w, h, fill, line=False): + sh = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, Inches(x), Inches(y), Inches(w), Inches(h)) + sh.fill.solid() + sh.fill.fore_color.rgb = fill + if not line: + sh.line.fill.background() + sh.shadow.inherit = False + return sh + + +def footer(slide, idx, total): + tf = add_box(slide, 0.5, 7.05, 12.3, 0.35) + p = tf.paragraphs[0] + r = p.add_run() + r.text = f"{BIZ_NAME} 제안발표자료" + pset(r, 9, color=PRGB(0x66, 0x70, 0x85)) + tf2 = add_box(slide, 12.3, 7.05, 0.7, 0.35) + p2 = tf2.paragraphs[0] + p2.alignment = PP_ALIGN.RIGHT + r2 = p2.add_run() + r2.text = f"{idx}/{total}" + pset(r2, 9, color=PRGB(0x66, 0x70, 0x85)) + + +def slide_cover(prs, idx, total): + s = prs.slides.add_slide(prs.slide_layouts[6]) + add_rect(s, 0, 0, 13.333, 7.5, P_DARK) + add_rect(s, 0, 4.9, 13.333, 0.06, P_AI) + tf = add_box(s, 1.0, 2.0, 11.3, 2.6) + p = tf.paragraphs[0] + r = p.add_run(); r.text = "킨텍스 AI 전시·행사시스템 구축 사업"; pset(r, 40, True, P_WHITE) + p2 = tf.add_paragraph() + r = p2.add_run(); r.text = "KINTEX AI Exhibition & Event System"; pset(r, 20, False, PRGB(0xD9, 0xEA, 0xF7)) + tf2 = add_box(s, 1.0, 5.1, 11.3, 1.6) + p = tf2.paragraphs[0] + r = p.add_run(); r.text = "제 안 발 표 자 료"; pset(r, 24, True, P_WHITE) + p2 = tf2.add_paragraph() + r = p2.add_run(); r.text = '"신청서를 내는 시간, 시공 후 사진을 먼저 본다" · 2026. 7.'; pset(r, 14, False, PRGB(0xD9, 0xEA, 0xF7)) + return s + + +def slide_section(prs, idx, total, no, title, subtitle): + s = prs.slides.add_slide(prs.slide_layouts[6]) + add_rect(s, 0, 0, 13.333, 7.5, P_BLUE) + tf = add_box(s, 1.2, 2.5, 11.0, 2.5) + p = tf.paragraphs[0] + r = p.add_run(); r.text = no; pset(r, 22, True, PRGB(0xD9, 0xEA, 0xF7)) + p2 = tf.add_paragraph() + r = p2.add_run(); r.text = title; pset(r, 40, True, P_WHITE) + p3 = tf.add_paragraph() + r = p3.add_run(); r.text = subtitle; pset(r, 15, False, PRGB(0xD9, 0xEA, 0xF7)) + footer(s, idx, total) + return s + + +def slide_content(prs, idx, total, kicker, title, bullets): + """bullets: list of (level, text) 또는 str(level 0).""" + s = prs.slides.add_slide(prs.slide_layouts[6]) + add_rect(s, 0, 0, 13.333, 0.18, P_BLUE) + tf = add_box(s, 0.55, 0.35, 12.2, 1.15) + p = tf.paragraphs[0] + r = p.add_run(); r.text = kicker; pset(r, 12, True, P_AI) + p2 = tf.add_paragraph() + r = p2.add_run(); r.text = title; pset(r, 26, True, P_DARK) + add_rect(s, 0.6, 1.62, 12.1, 0.03, PRGB(0xD9, 0xEA, 0xF7)) + body = add_box(s, 0.75, 1.85, 11.9, 5.0) + first = True + for b in bullets: + lvl, txt = (b if isinstance(b, tuple) else (0, b)) + p = body.paragraphs[0] if first else body.add_paragraph() + first = False + p.space_after = PPt(8) + mark = "▎" if lvl == 0 else "·" + r = p.add_run() + r.text = f"{mark} {txt}" if lvl == 0 else f" {mark} {txt}" + pset(r, 15 if lvl == 0 else 13.5, lvl == 0 and txt.endswith(":"), P_GREY if lvl else PRGB(0x10, 0x18, 0x28)) + footer(s, idx, total) + return s + + +SLIDES = [ + ("cover",), + ("content", "AGENDA", "목차", [ + "Ⅰ. 제안 개요 — 제안사 현황 · 사업의 이해 · 제안 핵심 요지 · 특장점", + "Ⅱ. 기술 부문 — 목표 아키텍처 · 기능 구현방안(M1~M18) · AI · 데이터 · 보안 · 성능", + "Ⅲ. 사업관리 부문 — 전략·방법론 · 조직·인력 · 일정 · 위험 · 품질", + "Ⅳ. 기술지원 부문 — 교육·기술이전 · 유지보수 · 비상대응 · 기대효과", + (1, "본 자료는 제안요청서(RFP) Ⅴ장 제안서 목차 표준 체계에 따라 작성되었습니다."), + ]), + ("section", "PART Ⅰ", "제안 개요", "제안사 현황 · 사업의 이해 · 제안 핵심 요지 · 특장점"), + ("content", "Ⅰ-1. 제안 개요", "제안사 일반현황", [ + "전시·컨벤션(MICE) 도메인과 AI 융합 시스템 구축에 특화된 수행 조직", + (1, "Spring Boot 3.x + React + PostgreSQL(PostGIS) 풀스택 표준 프레임워크 보유(WISE)"), + (1, "이미지 생성 AI(Gemini 계열) 상용 파이프라인 구축·운영 실증 경험"), + (1, "공간데이터(PostGIS) 기반 도면·배선 자동화 구현 실적"), + "본 사업 전담 조직: PM 1, 아키텍트(AA/TA/DA) 3, 백엔드 4, 프론트 4, AI 2, DB 1, QA 2, 모바일 2", + "품질·보안 체계: 개발보안 가이드 준수, 단계별 품질 게이트, 형상관리(Git) 표준 운영", + ]), + ("content", "Ⅰ-2. 제안 개요", "사업의 이해 — 현황과 문제(As-Is)", [ + "국내 최대 전시장(108,011㎡)이지만 준비 실무는 수작업 중심:", + (1, "HWP 서식 다운로드 → 이메일 제출, 온라인 신고(kxwp)는 단순 업로드 창구"), + (1, "부스 배치안: 주최자 CAD 수작업 수일~수주 소요"), + (1, "도면 규정 검토: 담당자 육안 검토(통로폭·소방·높이 규정)"), + (1, "유틸리티 신청: 수기 위치표시도, 전시회별 시스템 파편화"), + "구조적 공백: 단계 간 데이터 단절 → 행사 데이터 미축적 → 경영분석 불가", + "2028년 제3전시장 개관(178,000㎡) 대비 디지털 전환이 시급한 시점", + ]), + ("content", "Ⅰ-2. 제안 개요", "사업의 이해 — 발주기관 요구 핵심", [ + "전시 생애주기 전 과정의 자동화: 영업·기획 → 설계·시각화 → 발주·계약 → 참가·관람 → 현장운영 → 사후·경영분석", + "요구사항 총 50건: 기능(SFR) 20 + 성능·보안·데이터·연동·품질·관리·지원 30", + "확정 기술 제약(COR-001): React+TypeScript / Spring Boot 3.x(Java 17) / MyBatis / PostgreSQL+PostGIS / Redis", + "AI 신뢰성(SER-004): AI 생성물 라벨·워터마크 강제, 구조 안전 최종 판정은 인간 승인", + "AI 비용 제약(COR-003): 토큰 최소화 설계와 사용량 가시화", + "멀티테넌트(SFR-020): 킨텍스 기준 테넌트 + 타 전시관 온보딩 가능 구조", + ]), + ("content", "Ⅰ-3. 제안 개요", '제안 핵심 요지 — "신청서를 내는 시간, 시공 후 사진을 먼저 본다"', [ + "차별화 폐루프: AI 설계 → 시각화 → 옥션 발주 → 시공 → 운영 → 분석", + (1, "① 조건 입력 → 부스 배치안 복수 자동 생성(제약 솔버 + LLM 조건해석)"), + (1, "② 배치·설계·배선 데이터 → 나노바나나가 '시공 후 결과 사진' 사전 생성(S1~S7 표준 샷)"), + (1, "③ AI 설계·물량·예상 이미지가 그대로 역경매(옥션) 근거자료 → 공사 발주까지 한 흐름"), + "실측 공간데이터가 경쟁력: K1·K2 홀 도면(DWG)·트렌치 좌표를 PostGIS로 적재 — 타 전시테크가 못 하는 정밀 배선 자동화", + "의사결정 혁신: 주최자·참가업체가 도면을 읽지 못해도 '사진 수준 시각화'로 결정", + ]), + ("content", "Ⅰ-4. 제안 개요", "제안 특장점 요약 (Why Us)", [ + "① 검증된 표준 프레임워크(WISE) 이식 — 시스템관리·공통기능·2FA 인증을 재사용, 구축 리스크 최소화", + "② 이미지 생성 파이프라인 실증 — RenderJob 큐·워터마크·Before/After 등 상용 기법 확보", + "③ 공간데이터 전문성 — PostGIS 공간 연산(부스 폴리곤·트렌치·배선 LineString) 설계·구현 경험", + "④ AI 비용 통제 설계 — 소형모델 우선·캐싱·출력상한·집계는 SQL, 사용량 대시보드 제공", + "⑤ 멀티테넌트 선반영 — 기능 재개발 없이 타 전시관 확장 가능한 격리 구조", + "⑥ 전 요구사항(50건) 100% 수용 — 별첨 요구사항 대응표 제출", + ]), + ("section", "PART Ⅱ", "기술 부문", "목표 아키텍처 · 기능 구현방안(M1~M18) · AI · 데이터 · 보안 · 성능"), + ("content", "Ⅱ-1. 기술 부문", "목표 시스템 개요", [ + "단일 플랫폼에서 전시 생애주기 6단계를 커버하는 18개 모듈 + 공통 레이어", + (1, "영업·기획: M1 홀 배정·자동 견적, M16 수요예측"), + (1, "설계·시각화(핵심 P0): M2 배치 · M3 부스설계 · M4 배선 · M5 나노바나나"), + (1, "발주·계약: M6 서류, M7 등록업체, M15 공사/장치 옥션, M9 정산"), + (1, "참가·관람: M10 등록·배지·리드, M11 비즈매칭, M12 홍보사이트, M13 wayfinding"), + (1, "현장 운영: M8 물류 슬롯, M14 혼잡·안전·주차·에너지"), + (1, "사후·경영: M16 BI, M17 CMS, M18 관리자 + 공통/시스템관리 레이어(§5B)"), + ]), + ("content", "Ⅱ-1. 기술 부문", "목표 아키텍처", [ + "웹: React 18/19 + Vite + TypeScript (역할별 포털, MDI 셸, 반응형)", + "API: Spring Boot 3.x(Java 17) + MyBatis — REST + WebSocket(STOMP)", + "엔진: 룰 엔진(규정·요율) · 배치/배선 엔진(PostGIS 공간 연산) · 옥션 채점 엔진", + "데이터: PostgreSQL + PostGIS(부스 폴리곤·트렌치·배선), Redis(작업 큐·캐시·세션)", + "AI 워커: Python 사이드카(나노바나나 이미지 생성) — Spring이 큐로 트리거, 완료 시 WebSocket 푸시", + "저장소: 오브젝트 스토리지(생성 이미지·도면), 배포: nginx + systemd + CI/CD(webhook)", + ]), + ("content", "Ⅱ-1. 기술 부문", "적용 기술 스택과 선정 사유", [ + "RFP 제약(COR-001) 100% 준수 — 발주기관 표준 프레임워크(GUARDiA/WISE)와 정렬", + (1, "Spring Boot 3.x + MyBatis: 공공·기업 시스템 검증 스택, SQL 제어 용이(공간 쿼리 최적화)"), + (1, "React + TypeScript + Vite: 대규모 화면(80+ 라우트) 타입 안정성·생산성"), + (1, "PostGIS: 부스 겹침 검사·통로폭 검증·최단 배선 등 공간 연산을 DB 레벨에서 처리"), + (1, "Redis: RenderJob 큐·알림·세션 — 비동기 AI 작업의 표준 창구"), + "전자정부 표준프레임워크 상당의 계층 구조(controller/service/mapper)와 개발표준 적용", + ]), + ("content", "Ⅱ-2. 기술 부문", "멀티테넌트(다중 전시관 SaaS) 설계", [ + "테넌트 = 전시관(Venue): KINTEX(기준 테넌트 #1) → COEX 등 타 전시관 온보딩 가능", + "격리 3원칙:", + (1, "데이터: 전 도메인 엔티티 tenant_id 전파, 조회 컨텍스트 자동 주입(누수 차단)"), + (1, "브랜딩: 테넌트별 로고·색상 토큰 오버레이(공유 디자인 시스템 위)"), + (1, "관리: 플랫폼 관리자 ↔ 테넌트 관리자 2계층 역할"), + "마스터데이터(홀·요율·규정 룰셋)는 테넌트 소유 — 전시관별 고유 규정 수용", + "기능·화면·모듈은 공유, 데이터만 격리 — 확장 시 재개발 불필요", + ]), + ("content", "Ⅱ-2. 기술 부문", "대외 접점 3-트랙 IA (visitor / business / agency)", [ + "코엑스 3-사이트 IA 분석에 근거한 트랙 분리 — 랜딩 3-분기 + 트랙별 서브홈", + (1, "visitor(관람객): 공개 관람 랜딩, 행사 캘린더·티켓·wayfinding·AI 관람 도우미"), + (1, "business(주최자·참가업체): 행사 준비 전 과정 — 홀 배정→설계→서류→정산"), + (1, "agency(공사·장치·협력사): 옥션 열람·견적 제출·시공 일정·현장 작업"), + "로그인 사용자 구분이 메인페이지와 좌측 메뉴 그룹을 결정(역할→트랙 매핑 확정표)", + "내부 역할(ops/admin)은 트랙 외부 별도 백오피스 — 망·권한 분리", + ]), + ("content", "Ⅱ-2. 기술 부문", "역할별 포털·메뉴 결정 규칙 (6+2 역할)", [ + "역할: 전시업체(참가) · 공사/장치업체 · 주최자 · 킨텍스 운영 · 킨텍스 관리 · 시스템 관리자(테넌트/플랫폼) + 일반 대중(공개)", + "미인증 진입 = visitor 공개 랜딩 / 인증 시 역할별 전용 메인으로 자동 라우팅", + "좌측 메뉴 그룹 매트릭스: 역할별 노출/차단을 시스템관리(메뉴·권한)에서 통제", + "모바일 하단 탭바도 동일 규칙(역할별 결정) — 웹·모바일 랜딩 패리티", + "멀티역할 사용자는 트랙 스위칭 UI 제공(판정 우선순위 규칙 적용)", + ]), + ("content", "Ⅱ-3. 기술 부문", "M1. 행사·홀 배정 및 자동 견적", [ + "행사 등록 → 희망 면적·기간 입력 → 가용 홀 탐색·중복 예약 충돌 검증 자동화", + "요율 마스터(기준단가 2,250원/㎡ × 성수기·전시일 규칙) 기반 즉시 자동 견적", + "As-Is 수일 소요 견적 회신 → To-Be 즉시 산출(RFP 목표 정합)", + "배정 확정 시 행사 워크스페이스 자동 생성 → M2~M9 전 모듈 연계 시작점", + "홀 가동률 캘린더·활용도 통계로 영업 의사결정 지원(M16 연계)", + ]), + ("content", "Ⅱ-3. 기술 부문", "M2. 플로어플랜 스튜디오 — 부스 배치 자동화 (P0)", [ + "웹 캔버스 에디터: 홀 실측 도면 언더레이 + 부스 폴리곤 배치·편집·팬/줌", + "자동 배치: 부스 수·규격·통로폭·소방 규정 입력 → 복수 배치안 생성(제약 솔버 + LLM 조건해석)", + "배치안 비교·선택·병합 → 규정 검증(통로폭·비상구·소방) 자동 플래깅", + "실측 데이터 확보 완료: K1·K2 전시홀 DWG(트렌치 좌표 포함)·JPG 15장 적재", + "As-Is CAD 수작업 수일~수주 → To-Be 30초 이내 복수 안(PER-001 정합)", + ]), + ("content", "Ⅱ-3. 기술 부문", "M2-1. 자동 배치 3단계 위저드 · DWG/JPG 언더레이", [ + '"사용자가 쉽게" — 초보자도 3단계로 배치 완성:', + (1, "① 홀/구역 선택: 전시장>홀>구역 트리 + 구역 경계 스냅"), + (1, "② 조건 입력: 부스 수·규격·통로 조건(자연어 조건 해석 지원)"), + (1, "③ 결과 비교·선택: 3안 비교 → 적용(apply-option) 시 실제 저장·후속 연계"), + "도면 언더레이 이중화: 캘리브레이션된 JPG 탭 + DWG 정밀 렌더 탭 전환", + "K1 홀 1~5 축정렬 / K2 홀 6~10 회전보정(−12°·−11°·+11°) 결정론 캘리브레이션 완료", + ]), + ("content", "Ⅱ-3. 기술 부문", "M3. 부스 설계 스튜디오 (P0)", [ + "부스 단위 인테리어·장치 설계: 구조물(벽체·리깅)·가구·사인·조명 배치", + "설계 템플릿 라이브러리(조립부스·독립부스·아일랜드형) + 커스터마이징", + "설계안 → 물량(BOQ)·예상 공사비 개산 자동 산출 → M15 옥션 근거자료", + "높이 5m·방염 등 장치 규정 자동 체크(룰 엔진 연동)", + "산출물: 설계 도면 + 물량서 + 나노바나나 시각화 입력 데이터", + ]), + ("content", "Ⅱ-3. 기술 부문", "M4. 유틸리티 설계 자동화 (P0)", [ + "부스 좌표 클릭 → 트렌치 위치 기준 최단 배선 경로 자동 산출(PostGIS 공간 연산)", + "전기·조명 / 네트워크 / 급배수 3계통 — 계통별 오버레이 시각화", + "배선 물량 → 유틸리티 자동 견적(요율 마스터 연동) → 신청·승인 워크플로", + "As-Is 수기 위치표시도 → To-Be 좌표 클릭 한 번(트렌치 실측 좌표 V61 적재 완료)", + "현장 시공용 배선도 출력(PDF) 및 작업자 모바일 조회", + ]), + ("content", "Ⅱ-3. 기술 부문", "M5. 나노바나나 시각화 — 핵심 차별화 (P0)", [ + "배치·설계·배선 데이터 → 이미지 생성 AI(Gemini 이미지 모델)로 '시공 후 결과 사진' 생성", + "표준 샷 세트 S1~S7: 부스 정면 · 인테리어 · 야간 조명 연출 · 통로 뷰 · 배선 오버레이 · 홀 조감 등", + "Before/After 슬라이더 — 도면 대비 시공 예상을 직관 비교", + "홀 조감(S7)은 버튼 클릭 시에만 생성(자동 발행 금지) — 비용 통제", + "생성 이미지는 갤러리에 영속·재열람, M15 옥션 참고 이미지로 재사용", + ]), + ("content", "Ⅱ-3. 기술 부문", "나노바나나 파이프라인 상세 (신뢰성·비용 방어)", [ + "아키텍처: Spring → Redis 큐(RenderJob) → Python 워커(google-genai) → 오브젝트 스토리지 → WebSocket 완료 푸시", + "ReRoomAI 실증 기법 이식: image-to-image 보존/교체 프롬프트 제어, 파라미터 확정", + "방어 로직: 재시도·타임아웃·실패 폴백, 작업 상태 UX(대기·생성중·완료·실패)", + "워터마크·고지 정책(필수): 전 생성 이미지 'AI 생성 예상 이미지' 워터마크 강제(SER-004)", + "시공사 견적·계약의 참고자료 지위 명시 — 법적 리스크 차단(R1·R2 대응)", + ]), + ("content", "Ⅱ-3. 기술 부문", "M6. 서류·마일스톤 / M7. 등록업체 매칭", [ + "M6 서류 워크플로:", + (1, "반입·전기·화기 등 서류 온라인 제출 → 검수 → 승인 (HWP·이메일 대체)"), + (1, "행사별 마일스톤(D-day) 자동 생성, 마감 임박(D-3)·초과 알림"), + (1, "AI 서류 검수 보조: 누락·불일치 사전 플래깅"), + "M7 등록업체:", + (1, "킨텍스 등록업체(장치·전기·통신·경비·청소) 디렉토리·자격 관리"), + (1, "업체 매칭·견적 요청 → M15 옥션과 연계"), + ]), + ("content", "Ⅱ-3. 기술 부문", "M15. 공사/장치 옥션(역경매) 플랫폼 — 핵심 플로우", [ + "AI 산출물(배치·설계·물량·예상 이미지)이 그대로 입찰 근거자료 — 발주 준비 비용 제로화", + "흐름: 전시업체 옥션 개설 → 공사업체 열람·견적서 제출 → 역경매 경쟁 → 낙찰 확정", + "실시간 순위 푸시(WebSocket) · 마감 자동 처리 · 유찰/재공고 지원", + "채점 엔진: 가격 + 실적 + 평가점수 가중 합산, BOQ 기반 견적 검증", + "전시업체(주최자·참가업체) 포털과 공사업체(agency) 포털 양면 구현", + ]), + ("content", "Ⅱ-3. 기술 부문", "M8. 반입/반출 물류 / M9. 정산·결제", [ + "M8 물류 슬롯:", + (1, "반입·반출 차량 슬롯 예약 + 게이트 배정 — 현장 혼잡 분산"), + (1, "행사 일정 연동 슬롯 캘린더, 현장 QR 확인"), + "M9 정산·결제:", + (1, "홀 사용료·유틸리티·부대서비스 통합 정산(행사 스코프 폐루프)"), + (1, "PG 연동 온라인 결제(SIR-001) · 취소/부분환불 · 세금계산서 연계"), + (1, "수수료·환불 정책 룰셋 관리(관리자 설정형)"), + ]), + ("content", "Ⅱ-3. 기술 부문", "M10. 관람객 등록·티켓·배지·리드캡처", [ + "사전등록 → 티켓 발급 → QR 배지 → 현장 체크인 원스톱(간편가입·게스트 지원)", + "참가업체 리드 캡처: QR 스캔·명함 → 리드 목록·등급·메모 → 사후 팔로업", + "AI 관람 도우미: 행사·부스 추천, 연월 브리핑(크롤 적재 DB 근거 응답)", + "현장 체크인 대시보드(운영자): 시간대별 입장 현황·혼잡 알림", + "B2C 모바일 앱 트랙과 공유(스토어 공개·게스트 모드)", + ]), + ("content", "Ⅱ-3. 기술 부문", "M11. 비즈니스 매칭 / M13. Wayfinding", [ + "M11 비즈매칭:", + (1, "참가업체-바이어 프로필 기반 AI 추천(관심 카테고리·행동 데이터)"), + (1, "상담 일정 예약·미팅 테이블 배정·사후 평가"), + "M13 wayfinding:", + (1, "홀 도면(M2 실측 데이터 재사용) 기반 부스 검색·경로 안내"), + (1, "모바일 웹 우선 — 앱 설치 없이 QR 진입"), + (1, "행사장 시설(화장실·출입구·부대시설) POI 안내"), + ]), + ("content", "Ⅱ-3. 기술 부문", "M12. 공개 홍보 사이트 / M17. CMS", [ + "M12 공개 사이트(일반 대중):", + (1, "행사 일정·상세·포스터 안내, 코엑스 수준 비주얼(시네마틱 히어로·모션)"), + (1, "반응형·SEO·다국어(4개국어), 접근성(prefers-reduced-motion·CLS 0)"), + (1, "EDM 발송·구독 관리·수신거부(마케팅)"), + "M17 CMS(헤드리스):", + (1, "전시 콘텐츠·공지·배너·프로모션 관리, 예약 발행(스케줄 퍼블리시)"), + (1, "참가업체 마이크로사이트 셀프 관리 · 사이니지 연계 콘텐츠"), + ]), + ("content", "Ⅱ-3. 기술 부문", "M14. 현장운영 (혼잡·안전·주차·에너지)", [ + "현장 통합 대시보드: 시간대별 입장·혼잡 히트맵(체크인 데이터 연동)", + "안전: 사건·사고 보고, 안전 점검 체크리스트(모바일 현장 입력)", + "주차: 주차장 현황·만차 안내 연계", + "에너지: 홀별 전력 사용 모니터링(유틸리티 신청 데이터 대사)", + "운영자(ops) 전용 화면 — 현장 이슈의 단일 상황판", + ]), + ("content", "Ⅱ-3. 기술 부문", "M16. 경영분석 BI (P2→P1 승격)", [ + "경영 KPI 대시보드: 매출·홀 가동률·참가사 리텐션·행사 P&L", + "운영사(킨텍스) 관점 수익성/ROI: 행사별 원가·수익 구조 분석", + "수요예측: 시즌·산업군별 홀 수요 예측(과거 데이터 학습) → 영업 전략 지원", + "부스 트래픽·체류·히트맵, 리드/ROI 분석(참가업체 제공 리포트)", + "구현: 집계는 SQL(뷰·M-View·배치) — AI 호출 아닌 데이터마트 기반(COR-003 정합)", + ]), + ("content", "Ⅱ-3. 기술 부문", "M18. 관리자 백오피스 + 시스템관리 레이어", [ + "관리자 대시보드: 행사·매출·시스템 현황 통계, 실시간 모니터링", + "룰셋 관리: 규정(통로폭·소방·높이)·요율(홀 단가·성수기) 설정형 관리 — 코드 수정 없이 정책 변경", + "시스템관리(WISE 표준 이식): 사용자·역할/권한(RBAC)·메뉴·공통코드·감사로그·시스템설정", + "마스터데이터: 홀·등록업체·프로그램 관리", + "테넌트 관리(플랫폼 관리자): 전시관 온보딩·브랜딩·격리 상태 점검", + ]), + ("content", "Ⅱ-3. 기술 부문", "공통 업무기능 레이어 (§5B — WISE 표준 이식)", [ + "발주기관 표준 프레임워크(WISE/UIWS)의 검증된 공통기능을 이식 — 재개발 리스크 제거", + (1, "업무일지·일정(캘린더)·쪽지·공지·의견수렴·통합검색"), + (1, "회의·보고서·통계·알림(웹 푸시)·감사 추적"), + "전 역할 공용 — 트랙과 무관하게 로그인 사용자 공통 제공", + "UI 컨벤션도 WISE 정렬: 셸(햄버거·아코디언 메뉴)·캘린더·차트·테이블·폼 표준", + "이식 원칙: 정본 구조 유지, 킨텍스 토큰(kx) 테마만 교체", + ]), + ("content", "Ⅱ-4. 기술 부문", "인증·보안 아키텍처", [ + "인증: JWT + 2차인증(OTP) — WISE 표준 인증 체계 이식(SER-001)", + "인가: 행사 단위 RBAC + 테넌트 격리 + 역할별 메뉴·API 이중 게이트", + "개인정보(SER-002): 저장·전송 암호화, 마스킹, 접속기록 보관, 취급 최소화", + "시큐어코딩(SER-003): 개발보안 가이드 준수, 보안약점 진단 도구 CI 편입", + "모바일 보안: 루트/탈옥 탐지·무결성 검증·화면캡처 방지·cleartext 금지", + "시크릿 관리: 환경변수 주입·fail-fast 검증, 키 마스킹·저장소 미커밋 원칙", + ]), + ("content", "Ⅱ-4. 기술 부문", "AI 아키텍처 — 사용성 표준 & 토큰 최소화 (§8A)", [ + 'AI 사용성 표준: "어디서나 한 번에 물어본다"', + (1, "전 화면 인라인 진입점·예시 질문 칩·원클릭 액션·다음 명령 제시"), + (1, "구조화 카드 + 근거 인용 응답·대화 히스토리·다국어(모바일 음성)"), + "토큰 최소화 6원칙(COR-003 정합):", + (1, "결정로직 우선 라우팅(LLM 미호출) · 소형모델 우선 · RAG 발췌로 프롬프트 축소"), + (1, "캐싱 · 출력 상한/구조화 · 집계는 SQL — AI는 해석만"), + "모델 전환 설정형: Claude 기본 + AiTextRouter로 대체 모델 폴백, 사용량 측정지표 대시보드", + ]), + ("content", "Ⅱ-4. 기술 부문", "데이터 아키텍처 — 공간데이터·마스터데이터", [ + "공간 데이터(DAR-001): 부스 폴리곤(Polygon)·트렌치 포인트(Point)·배선(LineString) — PostGIS ST_* 연산", + "마스터 데이터(DAR-002): 홀(실측 15개)·요율·규정 룰셋·공통코드·등록업체 — 테넌트 소유", + "데이터 표준(DAR-003): 명명 규칙·FK 최소화·공통코드 체계·이력(감사) 관리", + "집계 체계: 뷰·Materialized View·배치 집계 — BI·통계의 성능 기반", + "마이그레이션: Flyway 버전 관리, 배포 전 라이브 dry-run(BEGIN…ROLLBACK) 검증 절차", + ]), + ("content", "Ⅱ-4. 기술 부문", "외부 연동 (SIR)", [ + "PG 결제(SIR-001): 신용카드·계좌이체, 취소·부분환불, 정산 대사", + "SSO·HR(SIR-002): 킨텍스 Open SSO 연동 + 인사 조직·직원 정보 동기화(내부 사용자 프로비저닝)", + "CAD(SIR-003): DWG 입력 파이프라인 — 좌표 추출·캘리브레이션·JPG 렌더(CI_AI·CI_JPG 자동화)", + "이미지 생성 API: Gemini 계열(나노바나나 워커 경유 단일 창구)", + "확장 대비: 웹훅(인바운드/아웃바운드·서명 검증) 표준 창구 제공", + ]), + ("content", "Ⅱ-4. 기술 부문", "모바일 앱 (B2B 운영 · B2C 관람객)", [ + "단일 코드베이스(React Native/Expo) + 배포 타깃 2:", + (1, "① 운영 B2B: 2FA 필수, 사내 QR 배포 — 현장 체크리스트·검수·승인·시각화 갤러리"), + (1, "② 관람객 B2C: 스토어 공개, 간편가입·게스트 — 티켓·배지·wayfinding·AI 도우미"), + "계정은 단일 통합, 가입 트랙만 분리(하이브리드 채택)", + "오프라인 대응·푸시 알림·다국어(i18n)·생체인증(내정보)", + "웹과 랜딩·메뉴 패리티(역할별 결정 규칙 공유)", + ]), + ("content", "Ⅱ-4. 기술 부문", "성능·품질 목표 (NFR)", [ + "응답시간(PER-001): 일반 조회 3초 이내 · 자동 배치 30초 이내(3안) · AI 이미지는 비동기+완료 푸시", + "동시사용자(PER-002): 평시 500 / 피크 3,000 동시접속 — 부하테스트로 검증", + "가용성(PER-003): 99.5% 이상, 계획 정지 야간 수행", + "품질(QUR): 단계별 품질 게이트·산출물 표준·경계면 정합 QA(API shape ↔ 프론트 타입 교차 검증)", + "테스트(TER): 단위·통합·성능·보안 + UAT 시나리오 지원, 결함 관리 체계", + "성능 설계 선반영: 인덱스 전략·집계 뷰·이미지 CDN 캐싱·빌드 번들 최적화", + ]), + ("section", "PART Ⅲ", "사업관리 부문", "추진전략·방법론 · 조직·인력 · 일정 · 위험 · 품질"), + ("content", "Ⅲ-1. 사업관리", "추진 전략 및 방법론", [ + "P0 코어 우선 전략: M2→M3→M4→M5를 최우선 구축, 3개월 차 조기 가시화(경영진 시연)", + "애자일 스프린트(2주) + 단계별 산출물 검토 병행(PMR-002) — 공공 검수 체계와 양립", + "모듈별 완성 직후 점진 QA(incremental QA) — 전체 완성 후 일괄 검증의 리스크 제거", + "발주기관 협업: 주간 진척 보고 + 격주 시연(동작 소프트웨어 기준) + 월간 운영위원회", + "선행 게이트 관리: AI API 키·개발 서버·CI/CD 등 전제조건을 착수 2주 내 확정", + ]), + ("content", "Ⅲ-2. 사업관리", "수행 조직 및 투입 인력", [ + "총 19명 — PM 1 / 아키텍트 3(AA·TA·DA) / 백엔드 4 / 프론트 4 / AI 2 / DB 1 / QA 2 / 모바일 2", + "거버넌스: PM(총괄) — 개발PM(트랙 조율) — PMO(표준·산출물·품질 게이트)", + "아키텍트 전담: 모듈 경계·API 표준(AA) / 기술표준·성능(TA) / 데이터 모델·표준(DA)", + "핵심 인력(PM·AA·AI 리드) 교체 제한 — 발주기관 사전 승인(PMR-004)", + "전 인력 보안서약·개인정보 교육 이수 후 투입", + ]), + ("content", "Ⅲ-3. 사업관리", "추진 일정 (12개월)", [ + "M1~M3 [분석·설계]: 요구사항 상세화·아키텍처 확정·데이터 표준·ERD·화면 설계(디자인 시스템)", + "M3~M7 [구축 1차 — P0 코어]: M2 배치·M3 설계·M4 배선·M5 시각화 + 공통/시스템관리·인증(2FA)", + "M6~M10 [구축 2차 — 도메인]: M1·M6~M18 + 모바일 앱 + 공개사이트 (일부 병행)", + "M10~M12 [통합·이행]: 통합·성능·보안 테스트, 데이터 이관, UAT, 교육, 오픈", + "오픈 후 2개월 [안정화]: 상주 지원·하자 대응·운영 이관", + "중간 마일스톤: M3 설계 완료(1차 검수) · M7 P0 시연 · M10 기능 완료 · M12 최종 검수", + ]), + ("content", "Ⅲ-4. 사업관리", "마일스톤·산출물 관리", [ + "단계별 산출물: 요구사항정의서·아키텍처설계서·ERD/데이터표준·화면설계서·테스트계획/결과서·운영매뉴얼", + "산출물 형상관리: Git 저장소 단일 출처, 문서-코드 버전 동기화", + "품질 게이트: 각 마일스톤 검수 전 자체 QA 통과 조건(빌드·경계면 정합·보안 점검)", + "요구사항 추적: 요구사항 대응표(RFP 50건) ↔ 설계 ↔ 구현 ↔ 테스트 전 구간 추적성 유지", + "주간 보고(진척·이슈) + 월간 보고(마일스톤·리스크·품질 지표)", + ]), + ("content", "Ⅲ-5. 사업관리", "위험 관리 방안", [ + "R1 AI 산출물 신뢰: 워터마크·라벨 강제 + 인간 승인 절차 — 설계 단계 반영 완료", + "R2 규정 검증 책임: AI는 플래깅까지, 최종 판정은 킨텍스 구조기술팀 — 역할 경계 명문화", + "R3 AI 비용 초과: 토큰 최소화 6원칙 + 사용량 대시보드 + 월 상한 알림", + "R4 실측 데이터 정합: CAD 실측 좌표 검증 절차(캘리브레이션 리포트) 운영", + "R5 일정 지연: P0 우선·병행 트랙 조정 여력·격주 시연으로 조기 감지", + "공통: 위험 등록부 상시 운영, 발생 시 영향·대안 분석 후 운영위 보고", + ]), + ("content", "Ⅲ-6. 사업관리", "품질보증·형상/변경관리", [ + "품질보증(QUR-001): 품질 계획 수립 → 단계별 게이트 → 지표 관리(결함 밀도·해결률)", + "경계면 QA 특화: 백엔드 API 응답 ↔ 프론트 타입/훅 shape 교차 검증(통합 결함 사전 차단)", + "표준 준수(QUR-002): 개발표준·DB 표준·UI 디자인 시스템(design.md 단일 출처) 준수 점검", + "형상관리(PMR-003): Git 브랜치 전략, 코드리뷰 필수, 파일단위 커밋 원칙", + "변경관리: 변경요청(CR) 절차 — 영향 분석 → 승인 → 반영 → 추적, 무단 범위 변경 차단", + ]), + ("section", "PART Ⅳ", "기술지원 부문", "교육·기술이전 · 유지보수 · 비상대응 · 기대효과"), + ("content", "Ⅳ-1. 기술지원", "교육훈련 및 기술이전", [ + "교육 3트랙(PSR-001): 시스템 관리자 / 운영자(킨텍스 실무) / 사용자(주최자·참가업체 안내)", + "교육 자료: 운영 매뉴얼·사용자 가이드·동영상 튜토리얼 제공", + "기술이전: 소스코드·설계문서·운영 절차 일체 + 개발환경 구성 가이드 인계", + "AI 파이프라인 특별 이전: 프롬프트 아키텍처·파라미터·비용 운영 노하우 문서화", + "운영 이관 리허설: 안정화 기간 중 킨텍스 운영조직 주도 운영 1개월 병행", + ]), + ("content", "Ⅳ-2. 기술지원", "유지보수·하자보수 체계", [ + "무상 하자보수 12개월(PSR-002): 검수 완료일 기산", + "하자 등급별 SLA: 긴급(서비스 중단) 4시간 내 착수 / 중요 1영업일 / 일반 2영업일", + "안정화 상주 지원(PSR-003): 오픈 후 2개월 — 현장 대응·성능 튜닝·데이터 보정", + "원격 지원 체계: 이슈 트래킹 시스템·핫라인 운영", + "유상 유지보수 전환 옵션: 하자보수 종료 후 연간 유지보수 계약 제안(범위·요율 별도 협의)", + ]), + ("content", "Ⅳ-3. 기술지원", "비상대응·보안 준수", [ + "장애 대응: 모니터링(헬스체크·알림) → 자동 감지 → 에스컬레이션 절차", + "백업·복구: DB 일일 백업 + 오브젝트 스토리지 이중화, 복구 목표(RTO 4시간/RPO 24시간)", + "배포 안전: 헬스 게이트 통과 후 전환, 마이그레이션 dry-run 검증, 롤백 절차 표준화", + "보안 준수: 인력 보안서약·자료 반출 금지·종료 시 파기 확인(계약 특수조건 이행)", + "개인정보 사고 대응: 유출 시 즉시 보고·차단·소명 절차 사전 수립", + ]), + ("content", "Ⅳ-4. 기술지원", "맺음말 — 기대효과와 약속", [ + "정량 효과: 견적 회신 수일→즉시 · 배치안 수주→30초 · 규정 검토 자동화 · 유틸리티 신청 원클릭", + "정성 효과: 시공 전 '사진 수준' 의사결정 → 주최자·참가업체 만족도, 킨텍스 서비스 차별화", + "경영 효과: 전 과정 데이터 축적 → BI 기반 영업·수익성 분석, 제3전시장 확장 대응", + "확장 효과: 멀티테넌트 SaaS — 타 전시관 온보딩으로 신규 수익 모델", + "약속: 요구사항 50건 100% 수용, 12개월 내 완수, 무상 하자보수 12개월 + 안정화 2개월", + "감사합니다.", + ]), +] + + +def build_pptx(path): + prs = Presentation() + prs.slide_width = Inches(13.333) + prs.slide_height = Inches(7.5) + total = len(SLIDES) + for i, spec in enumerate(SLIDES, start=1): + kind = spec[0] + if kind == "cover": + slide_cover(prs, i, total) + elif kind == "section": + slide_section(prs, i, total, spec[1], spec[2], spec[3]) + else: + slide_content(prs, i, total, spec[1], spec[2], spec[3]) + prs.save(path) + return total + + +if __name__ == "__main__": + docx_path = os.path.join(BASE, "RFP.docx") + pptx_path = os.path.join(BASE, "제안발표.pptx") + build_docx(docx_path) + n = build_pptx(pptx_path) + print("DOCX OK:", docx_path) + print("PPTX OK:", pptx_path, "slides =", n)