feat(document): 범용 문서와 Excel 처리 계약 정의 - #63

Merged
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract
Aug 18, 2026
Merged

feat(document): 범용 문서와 Excel 처리 계약 정의#63
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract

Conversation

@hywznn

Copy link
Copy Markdown
Member

왜 필요한가요?

PDF·이미지·HWP·HWPX·XLSX·CSV 처리 결과가 서로 달라 Server·AI·Client가 같은 검토 흐름을 재사용하기 어려웠습니다. 처음 보는 문서가 추측값으로 업무 DB에 반영되거나 회사 전용 Template이 다른 사업장에 노출되지 않도록 공통 계약이 필요했습니다.

무엇이 바뀌나요?

  • 문서 역할과 처리 상태, Known·Similar·Unclassified·Unsupported 분기 정의
  • 공통 Document IR 및 Field Candidate JSON Schema 추가
  • 값·원문·페이지/좌표 또는 Sheet/Cell·Extractor·confidence·검수 상태 계약 정의
  • 공식 Template과 Tenant Template의 소유권·버전·승격·격리 정책 정의
  • Excel Sheet/Header/병합/숨김/날짜/통화/백분율/수식 cache 처리 규칙 정의
  • CSV 인코딩·구분자·개행 탐지와 행별 오류 보존 규칙 정의
  • PDF·이미지·HWP·HWPX·XLSX·CSV 비식별 Fixture 6건 추가
  • Schema·해시·형식 coverage·Tenant 소유권·미분류 자동반영 금지를 CI에서 검증

안전 기준

  • 후보값은 원본 근거 또는 UNAVAILABLE 사유 필수
  • 미분류·미지원 문서는 자동 저장 금지
  • Tenant Template은 owner 회사와 요청 회사가 같아야 함
  • 생성 문서 자동 발송 금지

검증

  • make check
  • Knowledge validate 통과
  • pytest 27개 통과

Closes#55

@hywznn
hywznn merged commit 73ffaae into mainAug 18, 2026
2 checks passed
@hywznn
hywznn deleted the feat/55-document-processing-contract branch August 18, 2026 08:03
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feedback/spec] 범용 사업장 문서·Excel 처리 계약 정의

1 participant

@hywznn
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(document): 범용 문서와 Excel 처리 계약 정의 - #63

Merged
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract
Aug 18, 2026
Merged

feat(document): 범용 문서와 Excel 처리 계약 정의#63
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract

Conversation

@hywznn

Copy link
Copy Markdown
Member

왜 필요한가요?

PDF·이미지·HWP·HWPX·XLSX·CSV 처리 결과가 서로 달라 Server·AI·Client가 같은 검토 흐름을 재사용하기 어려웠습니다. 처음 보는 문서가 추측값으로 업무 DB에 반영되거나 회사 전용 Template이 다른 사업장에 노출되지 않도록 공통 계약이 필요했습니다.

무엇이 바뀌나요?

  • 문서 역할과 처리 상태, Known·Similar·Unclassified·Unsupported 분기 정의
  • 공통 Document IR 및 Field Candidate JSON Schema 추가
  • 값·원문·페이지/좌표 또는 Sheet/Cell·Extractor·confidence·검수 상태 계약 정의
  • 공식 Template과 Tenant Template의 소유권·버전·승격·격리 정책 정의
  • Excel Sheet/Header/병합/숨김/날짜/통화/백분율/수식 cache 처리 규칙 정의
  • CSV 인코딩·구분자·개행 탐지와 행별 오류 보존 규칙 정의
  • PDF·이미지·HWP·HWPX·XLSX·CSV 비식별 Fixture 6건 추가
  • Schema·해시·형식 coverage·Tenant 소유권·미분류 자동반영 금지를 CI에서 검증

안전 기준

  • 후보값은 원본 근거 또는 UNAVAILABLE 사유 필수
  • 미분류·미지원 문서는 자동 저장 금지
  • Tenant Template은 owner 회사와 요청 회사가 같아야 함
  • 생성 문서 자동 발송 금지

검증

  • make check
  • Knowledge validate 통과
  • pytest 27개 통과

Closes#55

@hywznn
hywznn merged commit 73ffaae into mainAug 18, 2026
2 checks passed
@hywznn
hywznn deleted the feat/55-document-processing-contract branch August 18, 2026 08:03
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feedback/spec] 범용 사업장 문서·Excel 처리 계약 정의

1 participant

@hywznn
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(document): 범용 문서와 Excel 처리 계약 정의 - #63

Merged
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract
Aug 18, 2026
Merged

feat(document): 범용 문서와 Excel 처리 계약 정의#63
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract

Conversation

@hywznn

Copy link
Copy Markdown
Member

왜 필요한가요?

PDF·이미지·HWP·HWPX·XLSX·CSV 처리 결과가 서로 달라 Server·AI·Client가 같은 검토 흐름을 재사용하기 어려웠습니다. 처음 보는 문서가 추측값으로 업무 DB에 반영되거나 회사 전용 Template이 다른 사업장에 노출되지 않도록 공통 계약이 필요했습니다.

무엇이 바뀌나요?

  • 문서 역할과 처리 상태, Known·Similar·Unclassified·Unsupported 분기 정의
  • 공통 Document IR 및 Field Candidate JSON Schema 추가
  • 값·원문·페이지/좌표 또는 Sheet/Cell·Extractor·confidence·검수 상태 계약 정의
  • 공식 Template과 Tenant Template의 소유권·버전·승격·격리 정책 정의
  • Excel Sheet/Header/병합/숨김/날짜/통화/백분율/수식 cache 처리 규칙 정의
  • CSV 인코딩·구분자·개행 탐지와 행별 오류 보존 규칙 정의
  • PDF·이미지·HWP·HWPX·XLSX·CSV 비식별 Fixture 6건 추가
  • Schema·해시·형식 coverage·Tenant 소유권·미분류 자동반영 금지를 CI에서 검증

안전 기준

  • 후보값은 원본 근거 또는 UNAVAILABLE 사유 필수
  • 미분류·미지원 문서는 자동 저장 금지
  • Tenant Template은 owner 회사와 요청 회사가 같아야 함
  • 생성 문서 자동 발송 금지

검증

  • make check
  • Knowledge validate 통과
  • pytest 27개 통과

Closes#55

@hywznn
hywznn merged commit 73ffaae into mainAug 18, 2026
2 checks passed
@hywznn
hywznn deleted the feat/55-document-processing-contract branch August 18, 2026 08:03
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feedback/spec] 범용 사업장 문서·Excel 처리 계약 정의

1 participant

@hywznn
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(document): 범용 문서와 Excel 처리 계약 정의 - #63

Merged
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract
Aug 18, 2026
Merged

feat(document): 범용 문서와 Excel 처리 계약 정의#63
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract

Conversation

@hywznn

Copy link
Copy Markdown
Member

왜 필요한가요?

PDF·이미지·HWP·HWPX·XLSX·CSV 처리 결과가 서로 달라 Server·AI·Client가 같은 검토 흐름을 재사용하기 어려웠습니다. 처음 보는 문서가 추측값으로 업무 DB에 반영되거나 회사 전용 Template이 다른 사업장에 노출되지 않도록 공통 계약이 필요했습니다.

무엇이 바뀌나요?

  • 문서 역할과 처리 상태, Known·Similar·Unclassified·Unsupported 분기 정의
  • 공통 Document IR 및 Field Candidate JSON Schema 추가
  • 값·원문·페이지/좌표 또는 Sheet/Cell·Extractor·confidence·검수 상태 계약 정의
  • 공식 Template과 Tenant Template의 소유권·버전·승격·격리 정책 정의
  • Excel Sheet/Header/병합/숨김/날짜/통화/백분율/수식 cache 처리 규칙 정의
  • CSV 인코딩·구분자·개행 탐지와 행별 오류 보존 규칙 정의
  • PDF·이미지·HWP·HWPX·XLSX·CSV 비식별 Fixture 6건 추가
  • Schema·해시·형식 coverage·Tenant 소유권·미분류 자동반영 금지를 CI에서 검증

안전 기준

  • 후보값은 원본 근거 또는 UNAVAILABLE 사유 필수
  • 미분류·미지원 문서는 자동 저장 금지
  • Tenant Template은 owner 회사와 요청 회사가 같아야 함
  • 생성 문서 자동 발송 금지

검증

  • make check
  • Knowledge validate 통과
  • pytest 27개 통과

Closes#55

@hywznn
hywznn merged commit 73ffaae into mainAug 18, 2026
2 checks passed
@hywznn
hywznn deleted the feat/55-document-processing-contract branch August 18, 2026 08:03
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feedback/spec] 범용 사업장 문서·Excel 처리 계약 정의

1 participant

@hywznn
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(document): 범용 문서와 Excel 처리 계약 정의 - #63

Merged
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract
Aug 18, 2026
Merged

feat(document): 범용 문서와 Excel 처리 계약 정의#63
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract

Conversation

@hywznn

Copy link
Copy Markdown
Member

왜 필요한가요?

PDF·이미지·HWP·HWPX·XLSX·CSV 처리 결과가 서로 달라 Server·AI·Client가 같은 검토 흐름을 재사용하기 어려웠습니다. 처음 보는 문서가 추측값으로 업무 DB에 반영되거나 회사 전용 Template이 다른 사업장에 노출되지 않도록 공통 계약이 필요했습니다.

무엇이 바뀌나요?

  • 문서 역할과 처리 상태, Known·Similar·Unclassified·Unsupported 분기 정의
  • 공통 Document IR 및 Field Candidate JSON Schema 추가
  • 값·원문·페이지/좌표 또는 Sheet/Cell·Extractor·confidence·검수 상태 계약 정의
  • 공식 Template과 Tenant Template의 소유권·버전·승격·격리 정책 정의
  • Excel Sheet/Header/병합/숨김/날짜/통화/백분율/수식 cache 처리 규칙 정의
  • CSV 인코딩·구분자·개행 탐지와 행별 오류 보존 규칙 정의
  • PDF·이미지·HWP·HWPX·XLSX·CSV 비식별 Fixture 6건 추가
  • Schema·해시·형식 coverage·Tenant 소유권·미분류 자동반영 금지를 CI에서 검증

안전 기준

  • 후보값은 원본 근거 또는 UNAVAILABLE 사유 필수
  • 미분류·미지원 문서는 자동 저장 금지
  • Tenant Template은 owner 회사와 요청 회사가 같아야 함
  • 생성 문서 자동 발송 금지

검증

  • make check
  • Knowledge validate 통과
  • pytest 27개 통과

Closes#55

@hywznn
hywznn merged commit 73ffaae into mainAug 18, 2026
2 checks passed
@hywznn
hywznn deleted the feat/55-document-processing-contract branch August 18, 2026 08:03
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feedback/spec] 범용 사업장 문서·Excel 처리 계약 정의

1 participant

@hywznn
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(document): 범용 문서와 Excel 처리 계약 정의 - #63

Merged
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract
Aug 18, 2026
Merged

feat(document): 범용 문서와 Excel 처리 계약 정의#63
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract

Conversation

@hywznn

Copy link
Copy Markdown
Member

왜 필요한가요?

PDF·이미지·HWP·HWPX·XLSX·CSV 처리 결과가 서로 달라 Server·AI·Client가 같은 검토 흐름을 재사용하기 어려웠습니다. 처음 보는 문서가 추측값으로 업무 DB에 반영되거나 회사 전용 Template이 다른 사업장에 노출되지 않도록 공통 계약이 필요했습니다.

무엇이 바뀌나요?

  • 문서 역할과 처리 상태, Known·Similar·Unclassified·Unsupported 분기 정의
  • 공통 Document IR 및 Field Candidate JSON Schema 추가
  • 값·원문·페이지/좌표 또는 Sheet/Cell·Extractor·confidence·검수 상태 계약 정의
  • 공식 Template과 Tenant Template의 소유권·버전·승격·격리 정책 정의
  • Excel Sheet/Header/병합/숨김/날짜/통화/백분율/수식 cache 처리 규칙 정의
  • CSV 인코딩·구분자·개행 탐지와 행별 오류 보존 규칙 정의
  • PDF·이미지·HWP·HWPX·XLSX·CSV 비식별 Fixture 6건 추가
  • Schema·해시·형식 coverage·Tenant 소유권·미분류 자동반영 금지를 CI에서 검증

안전 기준

  • 후보값은 원본 근거 또는 UNAVAILABLE 사유 필수
  • 미분류·미지원 문서는 자동 저장 금지
  • Tenant Template은 owner 회사와 요청 회사가 같아야 함
  • 생성 문서 자동 발송 금지

검증

  • make check
  • Knowledge validate 통과
  • pytest 27개 통과

Closes#55

@hywznn
hywznn merged commit 73ffaae into mainAug 18, 2026
2 checks passed
@hywznn
hywznn deleted the feat/55-document-processing-contract branch August 18, 2026 08:03
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feedback/spec] 범용 사업장 문서·Excel 처리 계약 정의

1 participant

@hywznn
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(document): 범용 문서와 Excel 처리 계약 정의 - #63

Merged
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract
Aug 18, 2026
Merged

feat(document): 범용 문서와 Excel 처리 계약 정의#63
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract

Conversation

@hywznn

Copy link
Copy Markdown
Member

왜 필요한가요?

PDF·이미지·HWP·HWPX·XLSX·CSV 처리 결과가 서로 달라 Server·AI·Client가 같은 검토 흐름을 재사용하기 어려웠습니다. 처음 보는 문서가 추측값으로 업무 DB에 반영되거나 회사 전용 Template이 다른 사업장에 노출되지 않도록 공통 계약이 필요했습니다.

무엇이 바뀌나요?

  • 문서 역할과 처리 상태, Known·Similar·Unclassified·Unsupported 분기 정의
  • 공통 Document IR 및 Field Candidate JSON Schema 추가
  • 값·원문·페이지/좌표 또는 Sheet/Cell·Extractor·confidence·검수 상태 계약 정의
  • 공식 Template과 Tenant Template의 소유권·버전·승격·격리 정책 정의
  • Excel Sheet/Header/병합/숨김/날짜/통화/백분율/수식 cache 처리 규칙 정의
  • CSV 인코딩·구분자·개행 탐지와 행별 오류 보존 규칙 정의
  • PDF·이미지·HWP·HWPX·XLSX·CSV 비식별 Fixture 6건 추가
  • Schema·해시·형식 coverage·Tenant 소유권·미분류 자동반영 금지를 CI에서 검증

안전 기준

  • 후보값은 원본 근거 또는 UNAVAILABLE 사유 필수
  • 미분류·미지원 문서는 자동 저장 금지
  • Tenant Template은 owner 회사와 요청 회사가 같아야 함
  • 생성 문서 자동 발송 금지

검증

  • make check
  • Knowledge validate 통과
  • pytest 27개 통과

Closes#55

@hywznn
hywznn merged commit 73ffaae into mainAug 18, 2026
2 checks passed
@hywznn
hywznn deleted the feat/55-document-processing-contract branch August 18, 2026 08:03
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feedback/spec] 범용 사업장 문서·Excel 처리 계약 정의

1 participant

@hywznn
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(document): 범용 문서와 Excel 처리 계약 정의 - #63

Merged
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract
Aug 18, 2026
Merged

feat(document): 범용 문서와 Excel 처리 계약 정의#63
hywznn merged 1 commit into
mainfrom
feat/55-document-processing-contract

Conversation

@hywznn

Copy link
Copy Markdown
Member

왜 필요한가요?

PDF·이미지·HWP·HWPX·XLSX·CSV 처리 결과가 서로 달라 Server·AI·Client가 같은 검토 흐름을 재사용하기 어려웠습니다. 처음 보는 문서가 추측값으로 업무 DB에 반영되거나 회사 전용 Template이 다른 사업장에 노출되지 않도록 공통 계약이 필요했습니다.

무엇이 바뀌나요?

  • 문서 역할과 처리 상태, Known·Similar·Unclassified·Unsupported 분기 정의
  • 공통 Document IR 및 Field Candidate JSON Schema 추가
  • 값·원문·페이지/좌표 또는 Sheet/Cell·Extractor·confidence·검수 상태 계약 정의
  • 공식 Template과 Tenant Template의 소유권·버전·승격·격리 정책 정의
  • Excel Sheet/Header/병합/숨김/날짜/통화/백분율/수식 cache 처리 규칙 정의
  • CSV 인코딩·구분자·개행 탐지와 행별 오류 보존 규칙 정의
  • PDF·이미지·HWP·HWPX·XLSX·CSV 비식별 Fixture 6건 추가
  • Schema·해시·형식 coverage·Tenant 소유권·미분류 자동반영 금지를 CI에서 검증

안전 기준

  • 후보값은 원본 근거 또는 UNAVAILABLE 사유 필수
  • 미분류·미지원 문서는 자동 저장 금지
  • Tenant Template은 owner 회사와 요청 회사가 같아야 함
  • 생성 문서 자동 발송 금지

검증

  • make check
  • Knowledge validate 통과
  • pytest 27개 통과

Closes#55

@hywznn
hywznn merged commit 73ffaae into mainAug 18, 2026
2 checks passed
@hywznn
hywznn deleted the feat/55-document-processing-contract branch August 18, 2026 08:03
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feedback/spec] 범용 사업장 문서·Excel 처리 계약 정의

1 participant

@hywznn