출처 문서 06_기술스택선정_및_개발기획서.md v1.0
문서 버전 v1.0 · 2026-08-04
목적 06 문서는 사내 도구를 전제로 작성되었다. 그 전제를 상용 서비스로 바꿀 때 무엇이 깨지고, 무엇이 새로 필요한가를 식별·기록한다.
06 문서는 여러 결정을 "사내 도구니까" 라는 근거로 내렸다. 그 전제가 사라지면 아래 결정들이 함께 무너진다.
| 06 문서의 서술 | 상용 전환 시 |
|---|---|
| §4.2 "사내 도구는 무방하나 배포·SaaS 전환 시 소스 공개 의무가 발생한다" | P0 블로커 — §1 |
| §4.8 "서버를 늘리지 않는다… 다중 사용자 웹이 필요해지면 그때 바꾼다" | 그때가 지금 — §3 |
| §2.3 "기본 모드는 로컬 처리" | SaaS는 정의상 로컬이 아니다 — §2 |
| §6.4 R3 "기준문서 개정 → M4-F05 버전 diff" | 사내는 늦어도 되지만 상용은 SLA — §5 |
| 부록 B "AGPL·GPL 2건이 이 스택의 유일한 법적 리스크다" | 법적 리스크는 3건 더 있다 — §1.2, §2 |
06 문서에 없는 가장 큰 리스크 두 가지: 기준문서(수행안내서)의 저작권과, 도구가 스스로 개인정보 수탁처리자가 된다는 사실. 아래 §1.2와 §2에서 다룬다.
| 패키지 | 라이선스 | 사내 도구 | 상용 SaaS | 상용 온프렘 배포 |
|---|---|---|---|---|
| PyMuPDF | AGPL-3.0 | 무방 | ❌ AGPL §13 네트워크 조항 — 이용자에게 전체 소스 제공 의무 | ❌ 배포 = 소스 공개 |
| pyhwp | GPL | 무방 | 프로세스 격리 시 완화(다툼 여지) | ❌ 링크 시 감염 |
| pdfplumber, pypdfium2, anthropic, pydantic, typer, jinja2, xlsxwriter, structlog | MIT·BSD·Apache-2.0 | 무방 | 무방 | 무방 |
| BGE-M3 | MIT | 무방 | 무방 | 무방 |
| PaddleOCR | Apache-2.0 | 무방 | 무방 | 무방 |
AGPL은 "배포하지 않으니 괜찮다"가 통하지 않는다. GPL과 달리 AGPL 제13조는 네트워크를 통한 이용만으로 소스 제공 의무를 발생시킨다. SaaS가 정확히 그 경우다.
선택지 3개 — 반드시 하나를 고른다
| # | 방안 | 비용 | 리드타임 | 비고 |
|---|---|---|---|---|
| A | Artifex PyMuPDF 상용 라이선스 구매 | 연간 라이선스료 | 계약 수 주 | 코드 변경 없음. 가장 빠름 |
| B | 대체 백엔드로 전환 (pdfplumber + pypdfium2) | 개발 2~3주 | 즉시 착수 가능 | 06 §4.2가 이미 대비해 둔 경로. 표 추출 품질 저하 감수 |
| C | AGPL 준수 (전체 소스 공개) | — | — | 상용 제품에서 통상 선택 불가 |
수행안내서 원문(변환본 p.5)에 다음이 명시되어 있다.
저작권 표시 — 본 안내서 내용의 무단전재를 금하며, 가공·인용할 때는 출처를 밝혀 주시기 바랍니다.
* 출처 : 개인정보보호위원회 「개인정보 영향평가 수행안내서」 2025.10.
문제의 구조 — 이 제품의 핵심 자산인 지식베이스(121개 지표 + 12개 체크리스트 + 산식) 는 이 안내서를 가공한 파생물이다. 사내 참고용이면 문제되지 않지만, 그것을 내장한 제품을 판매하면 성격이 달라진다.
확인한 사실
- 문서 내 공공누리(KOGL) 유형 표시가 없다 (전문 검색 결과 0건). 즉 "자유이용"이 명시적으로 보장되어 있지 않다.
- 발간등록번호 11-1790365-100028-14 — 정부간행물이다.
해야 할 일 (P0)
| # | 조치 |
|---|---|
| 1 | 개인정보보호위원회에 상용 제품 내 가공·수록 가능 여부를 서면 질의하고 회신을 보관한다 |
| 2 | 「공공데이터법」·공공저작물 자유이용 대상 여부를 법무 검토한다 |
| 3 | 제품 UI·리포트·문서 전체에 출처 표기를 강제한다 (선택 아닌 필수 렌더링) |
| 4 | 회신이 부정적일 경우의 대체 설계를 미리 준비한다 — 지표 전문을 내장하지 않고 지표 번호·분야명만 참조하고 원문은 고객이 직접 보유한 안내서를 가리키는 구조 |
판단: 회신을 받기 전까지 지표 전문 내장을 전제로 한 영업·데모를 하지 않는다. 조치 4의 대체 설계는 제품 가치를 크게 훼손하지 않는다 — 판정 로직은 유지되고 원문 인용만 링크로 바뀐다.
입력물(RFP·제안서·산출물)은 고객 자산이며 상당수가 미공개 사업정보다.
| 항목 | 요건 |
|---|---|
| 학습 이용 | 일절 금지를 약관에 명시. Anthropic API는 기본적으로 학습에 쓰이지 않으나, 이를 계약 문구로 보증 |
| 보관 기간 | 분석 완료 후 N일 자동 파기. 고객이 기간을 지정 가능 |
| 격리 | 테넌트 간 물리적/논리적 격리 (§3) |
| 비밀유지 | 제안서에는 경쟁사 제안 내용이 들어간다. 평가 담당자 계정 단위 접근통제 필수 |
| 항목 | 요건 |
|---|---|
| 성격 고지 | "본 도구의 판정은 법률 자문이 아니며, 최종 판단은 이용자 책임" — 리포트 모든 페이지에 렌더링 |
| 오탐·미탐 | 책임 한계를 약관에 규정. INSUFFICIENT_EVIDENCE 3값 판정이 이를 뒷받침하는 설계 근거 |
| 기준 최신성 | 지식베이스 버전과 기준일을 리포트에 명시. 개정 반영 지연에 대한 책임 범위를 SLA에 규정 (§5) |
| 감사 | 누가·언제·어떤 지식베이스 버전으로 판정했는지 전량 기록 |
이 제품의 가장 아이러니한 요건이다. 개인정보 준거성을 점검하는 도구가, SaaS가 되는 순간 스스로 개인정보처리자·수탁처리자가 된다.
| 문서 | 개인정보 |
|---|---|
| RFP | 발주기관 담당자 실명 + 직위 + 직통번호 (정보보안센터 고○○ 센터장 02-***-****, 권○○ 과장 02-***-****) |
| 제안서 | 투입인력 6명 실명 + 경력 + 보유자격, 자문위원 4명 실명 + 사진, 수탁사 18개사 및 책임자란 |
즉 가정이 아니라 확인된 사실이다.
| 지위 | 근거 | 파생 의무 |
|---|---|---|
| 수탁처리자 | 고객(공공기관)의 개인정보를 위탁받아 처리 | 위·수탁 계약 체결, 재위탁 제한, 관리·감독 수용 |
| 개인정보처리자 | 자사 이용자(고객사 담당자) 계정 정보 | 처리방침 공개, 동의, 파기 |
충족해야 할 기준 — 「개인정보의 안전성 확보조치 기준」
| 조항 | 요건 | 설계 반영 |
|---|---|---|
| 접근권한 관리 | 계정·권한 부여/변경/말소 기록 3년 보관 | RBAC + 권한 변경 로그 |
| 접근통제 | 인터넷 구간 접속 제한, 세션 타임아웃 | IP 제한 옵션, 세션 정책 |
| 암호화 | 저장 시·전송 시 | DB 암호화(TDE 또는 컬럼), TLS 1.2+ |
| 접속기록 | 보관·점검, 최소 1년(고유식별정보·민감정보 처리 시 2년) | 감사 로그 별도 스토리지, 위변조 방지 |
| 악성프로그램 방지 | — | 업로드 파일 스캔 |
| 재해·재난 대비 | 10만명 이상 시 | 백업·복구 절차 |
공공기관 고객이 10만명 이상 보유하거나 시스템이 공공시스템에 해당하면 제15~17조(공공시스템운영기관 특례)까지 파급될 수 있다. 계약 전 실사에서 확인할 항목이다.
Claude API는 미국 소재 Anthropic이 처리한다. 문서에 개인정보가 포함된 채로 전송하면 「개인정보 보호법」 제28조의8 국외이전에 해당한다.
대응 3안
| # | 방안 | 장단 |
|---|---|---|
| A | 국외이전 동의·공개 절차 이행 | 공공기관 고객은 이를 꺼리는 경우가 많다 |
| B | 전송 전 개인정보 비식별화 — 실명·연락처를 토큰으로 치환 후 전송, 리포트 렌더 시 복원 | 기술적으로 가능하고 가장 현실적. 단 판독(M3)에는 적용 곤란(이미지) |
| C | 온프레미스 SKU — 외부 전송 0 (§6) | 공공 조달에서 가장 잘 팔리는 형태 |
inference_geo 파라미터로 추론 지역을 지정할 수 있는지 계약 단계에서 확인한다 (Opus 4.6/Sonnet 4.6 이후 지원). 국내 리전이 없다면 B·C가 답이다.--offline 모드가 여기서 "부가 기능"에서 "핵심 SKU"로 승격된다.공공기관 대상 SaaS는 클라우드보안인증(CSAP) 이 사실상 진입 요건이다.
- SaaS 간편등급 또는 표준등급 판단 → 준비 기간 6~12개월, 비용 수천만 원대
- 온프렘 SKU를 먼저 내면 CSAP 없이 공공 시장에 진입할 수 있다 — 상용화 순서 결정에 직접 영향
06 §4.8은 "다중 사용자 웹이 필요해지면 그때 바꾼다" 고 명시했다. 상용화가 그 시점이다.
| 영역 | 06 (사내) | 상용 요건 |
|---|---|---|
| 저장소 | SQLite 단일 파일 | PostgreSQL + RLS(행 수준 보안) 또는 테넌트별 DB. 벡터는 pgvector |
| 문서 원본 | 로컬 파일 | 객체 스토리지(S3 호환) + 서버측 암호화 + 수명주기 정책 |
| 실행 | CLI 동기 | 작업 큐 + 워커. 분석 1건 최대 30분(06 §6.3)이므로 동기 HTTP 불가 |
| 인증 | 없음 | SSO(SAML/OIDC), RBAC — 평가담당/검수담당/관리자 분리 |
| 테넌시 | 없음 | 조직 → 프로젝트 → 실행 3계층. 경쟁사 제안서 격리가 계약 요건(§1.3) |
| 캐시 | 콘텐츠 해시 (06 §4.9) | 유지하되 테넌트 키를 캐시 키에 포함 — 교차 유출 방지 |
유지할 것 — 06 §4.9의 콘텐츠 해시 캐시는 상용에서 더 중요해진다. 재실행 비용이 0이면 고객이 파라미터를 바꿔가며 반복 실행해도 원가가 늘지 않는다.
| 상황 | 요건 |
|---|---|
| 429 레이트리밋 | 백오프 + 큐 재투입. 테넌트별 쿼터로 상호 영향 차단 |
| 529 과부하 / 5xx | 재시도, 지속 시 폴백 모델 |
stop_reason: "refusal" |
안전 분류기 거부 시 처리 경로 필요. 보안 문서를 다루는 도구이므로 오탐 가능성 있음. fallbacks: "default" 옵션 검토 |
| 모델 폐기(deprecation) | 모델 ID를 설정 한 곳에 격리(06 §6.4 R2). 마이그레이션 시 골든셋 회귀로 검증 |
| 단가 변동 | 원가 = 변동비 → 마진 재계산 트리거 |
| 항목 | 요건 |
|---|---|
| 가용성 | 목표 SLA 정의(예 99.5%). 큐 기반이므로 "접수 성공"과 "완료"를 분리 정의 |
| 처리 시간 | 06 §6.3 "≤30분" → 문서 크기별 등급 SLA로 재정의 |
| 비용 관측 | 테넌트별 토큰·원가 대시보드. 06 §4.10에서 Phase 1 필수로 지정한 토큰 회계가 여기서 과금 근거가 된다 |
| 알림 | 실패율, 큐 적체, 비용 급증, 인용 검증 실패율 |
| 감사 로그 | §1.4·§2.2 요건. 애플리케이션 로그와 분리 저장, 위변조 방지 |
06 §6.4 R3은 이를 "중" 등급 리스크로 뒀다. 상용에서는 최상위다. 고객이 돈을 내는 이유의 절반이 "최신 기준으로 봐준다"이기 때문이다.
| 항목 | 사내 (06) | 상용 |
|---|---|---|
| 반영 주체 | "담당자 지정" (06 §6.6) | 전담 인력 + 프로세스 |
| 반영 속도 | 규정 없음 | SLA로 약속 (예: 고시 개정 후 30일 내) |
| 추적 대상 | 안내서 | 안내서 + 보호법·시행령 + 안전성 확보조치 기준 + 보호수준 평가 편람 + 관련 고시 |
| 산출물 | 지표 diff | 릴리스 노트 + 영향받는 기존 리포트 목록 통지 |
| 재현성 | — | 버전 고정 실행 — 고객이 "작년 기준으로 다시 돌려보기"가 가능해야 한다 |
버전 고정은 기능이 아니라 계약 요건이 될 가능성이 높다. 평가 시점의 기준으로 판정했음을 사후 입증해야 하는 상황이 발주기관에게 실제로 발생한다. 06 §4.9의 콘텐츠 해시 캐시에 지식베이스 버전을 캐시 키로 포함해 두면 자연스럽게 충족된다 — 설계 단계에서 반영해야 나중에 공짜다.
| SaaS | 온프레미스 | 라이선스 판매 | |
|---|---|---|---|
| CSAP | 필요 (§2.4) | 불필요 | 불필요 |
| 국외이전 | 이슈 (§2.3) | 없음(로컬 LLM) 또는 고객 책임 | 고객 책임 |
| AGPL | 가장 엄격 (§13 발동) | 배포 = 소스 공개 | 배포 = 소스 공개 |
| 멀티테넌시 | 필수 (§3) | 불필요 | 불필요 |
| 기준 최신성 | 자동 배포 | 업데이트 채널 필요 | 고객이 갱신 |
| GPU | 불필요 | 로컬 LLM 시 필요 | 고객 환경 |
| 매출 | 반복(구독) | 구축 + 유지보수 | 일시 + 유지보수 |
| 진입 속도 | 느림(인증) | 빠름 | 빠름 |
권고 순서 — ① 온프레미스로 공공 시장에 먼저 진입(CSAP·국외이전 우회) → ② 레퍼런스 확보 후 SaaS 준비. 단 어느 쪽이든 AGPL은 먼저 해결해야 한다(§1.1). 온프렘은 SaaS보다 오히려 배포 조항에 더 직접적으로 걸린다.
온프렘의 추가 과제: 외부 LLM을 못 쓰는 고객에게는 로컬 LLM이 필요하다 → GPU 요구사항 발생 → 06 §2.1에서 확정한 "로컬 VLM은 범위 밖" 결정이 상용에서는 다시 열린다.
| # | 항목 | 결정하지 않으면 |
|---|---|---|
| P0-1 | PyMuPDF 라이선스 (§1.1 A/B/C 중 택1) | Phase 1 설계를 다시 해야 함 |
| P0-2 | 안내서 저작권 회신 (§1.2) | 제품 핵심 자산을 못 쓸 수 있음 |
| P0-3 | 제품 형태 (§6) | 인증·아키텍처·GPU 요구가 전부 달라짐 |
| P0-4 | 국외이전 방침 (§2.3 A/B/C) | LLM 배치(06 §4.5)가 성립하지 않을 수 있음 |
멀티테넌시·인증·RBAC(§3) / 접속기록·암호화·감사 로그(§2.2) / 큐·워커(§3) / LLM 장애 대응(§4.1) / 테넌트별 비용 관측(§4.2) / 기준문서 갱신 프로세스·SLA(§5) / 책임 한계 약관·고지 렌더링(§1.4) / 버전 고정 실행(§5)
CSAP(SaaS 시) / 비식별화 파이프라인(§2.3-B) / 온프렘 로컬 LLM(§6) / 오탐 피드백 루프(§4.3) / 기준문서 확장(보호수준 평가 편람, ISMS-P 인증기준)
P0-3 제품 형태 ─┬─→ 온프렘 ─→ P0-1(B: 대체 백엔드 필수) ─→ GPU 요구 재검토
└─→ SaaS ─→ P0-1(A 또는 B) + CSAP 착수 + P0-4 필수
P0-2 저작권 회신 ─┬─→ 긍정 → 지표 전문 내장
└─→ 부정 → 지표 번호·분야명만 참조하는 대체 설계
P0-2와 P0-3의 회신·결정 전에는 영업·데모를 하지 않는다. 둘 다 제품의 형태 자체를 바꾸므로, 먼저 약속하면 되돌릴 수 없다.
| 06 위치 | 보완 |
|---|---|
| 부록 B "AGPL·GPL 2건이 유일한 법적 리스크" | 틀렸다. 기준문서 저작권(§1.2), 개인정보 수탁처리(§2), 국외이전(§2.3)이 추가된다. 사내 도구 전제에서만 성립하는 서술이었다 |
| §6.4 R3 기준문서 개정 = 심각도 "중" | 상용에서는 "높음". 제품 가치의 절반이 여기 걸린다 (§5) |
| §2.1 "로컬 VLM은 범위 밖으로 확정" | 온프렘 SKU에서는 재검토 대상 (§6) |
§4.4 --offline = 보안 제약 대응 |
상용에서는 독립 SKU로 승격 (§2.3-C) |
| §6.3 성공지표 | 상용 지표 추가 필요 — 가용성, 테넌트별 원가/마진, 오탐 신고율, 기준 반영 리드타임 |
법무
- [ ] PyMuPDF 라이선스 방안 확정 (A/B/C)
- [ ] pyhwp 격리 또는 대체
- [ ] 개인정보보호위원회 저작권 서면 질의·회신 보관
- [ ] 출처 표기 강제 렌더링 구현
- [ ] 이용약관·책임한계·SLA 초안
- [ ] 위·수탁 계약서 표준안
개인정보
- [ ] 국외이전 방침 확정 및 절차 이행
- [ ] 안전성 확보조치 기준 항목별 대응표
- [ ] 접속기록 1년(해당 시 2년) 보관 체계
- [ ] 파기 정책·자동 파기 구현
- [ ] 개인정보 처리방침 공개
- [ ] (SaaS) CSAP 등급 판단 및 착수
기술
- [ ] PostgreSQL + RLS 전환
- [ ] 객체 스토리지 + 암호화
- [ ] 큐·워커 아키텍처
- [ ] SSO + RBAC
- [ ] 테넌트 키 포함 캐시
- [ ] 지식베이스 버전 고정 실행
- [ ] LLM 장애·거부·폐기 대응
- [ ] 테넌트별 비용 관측·쿼터
운영
- [ ] 기준문서 모니터링 담당·프로세스·SLA
- [ ] 릴리스 노트 체계
- [ ] 오탐 신고 → 골든셋 반영 루프
- [ ] 온보딩 절차