PageSourceSearch

https://k-doc.ai/_next/static/chunks/56047.1871311a59f3f156.js

js k-doc.ai collected 2026-10-05 12:19:41 UTC 19,220 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[19979,56047],{5561:(e,t,a)=>{a.d(t,{As:()=>r,Bc:()=>d,Fn:()=>f,HT:()=>v,J5:()=>y,Np:()=>u,Rg:()=>g,VV:()=>n,X2:()=>_,XQ:()=>o,_G:()=>c,_J:()=>s,_N:()=>j,aM:()=>m,mU:()=>l,mu:()=>S,p5:()=>h,rw:()=>x,su:()=>k,v0:()=>w,yt:()=>p,yv:()=>b});var i=a(95010);let l=["#0d9488","#6366f1","#d97706","#e11d48","#a21caf"],r="#cbd5e1",s=["#14b8a6","#0d9488","#0f766e","#134e4a","#042f2e"],n={empty:"#f1f5f9",emptyStroke:"#e2e8f0",scale:["#14b8a6","#0d9488","#0f766e","#134e4a"]},o={success:{mark:"#059669",text:"#047857"},warning:{mark:"#d97706",text:"#b45309"},danger:{mark:"#e11d48",text:"#be123c"},neutral:{mark:"#94a3b8",text:"#475569"}},d={completed:"#059669",processing:"#0d9488",pending:"#cbd5e1",failed:"#e11d48",excluded:"#e2e8f0"},c={instagram:"#E4405F",facebook:"#1877F2",meta:"#0082FB",naver_blog:"#03C75A",google:"#4285F4",youtube:"#FF0000",kakao:"#FEE500",xiaohongshu:"#FF2442",tiktok:"#010101",offline:"#8B5CF6",direct:"#6B7280",organic:"#10B981",chatbot:"#6366F1",ai_chatbot:"#818CF8",other:"#94A3B8"},u={strong:i.m6.ink,body:i.m6.ink2,muted:i.m6.ink3},m="#ffffff",p={grid:{stroke:i.m6.hairline,strokeWidth:1,vertical:!1},axisTick:{fill:u.muted,fontSize:11},axisLine:!1,tickLine:!1,cursor:{fill:i.m6.ink,fillOpacity:.04},lineCursor:{stroke:i.m6.ink3,strokeWidth:1},areaFill:{from:.18,to:0},strokeWidth:2,dot:{r:4,strokeWidth:2,stroke:m},radius:[4,4,0,0],radiusHorizontal:[0,4,4,0],barMaxSize:24,stackGap:2,animationDuration:320},h={contentStyle:{borderRadius:i.Sp.inset,border:`1px solid rgba(255, 255, 255, ${i.Ji.borderAlpha})`,backgroundColor:`rgba(255, 255, 255, ${i.Uk.sheet.film})`,backdropFilter:`blur(${i.Uk.sheet.blurPx}px) saturate(${i.Uk.sheet.saturatePct}%)`,WebkitBackdropFilter:`blur(${i.Uk.sheet.blurPx}px) saturate(${i.Uk.sheet.saturatePct}%)`,padding:"8px 10px",fontSize:12,color:u.strong},labelStyle:{color:u.muted,fontSize:11,marginBottom:2},itemStyle:{color:u.body,fontSize:12,padding:0}},f={sm:160,md:220,lg:280},g="(max-width: 639px)",y="(prefers-reduced-motion: reduce)";function x(e){return l[e]??r}function v(e,t){if(t<=0)return s[0];let a=Math.min(t,s.length);return s[Math.max(Math.min(a-1,Math.floor(e*a/Math.max(t,1))),0)]??s[0]}function b(e,t){if(!Number.isFinite(e)||e<=0||t<=0)return n.empty;let a=Math.min(e/t,1),i=Math.min(n.scale.length-1,Math.floor(a*n.scale.length-1e-9));return n.scale[Math.max(i,0)]}function k(e){let t=e instanceof Date?e:new Date(e);return Number.isNaN(t.getTime())?"":new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Seoul",year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function _(e,t){let a=Date.parse(`${e}T00:00:00+09:00`);return Number.isFinite(a)?k(a+24*t*36e5):e}function w(e,t){return 0===e.length||0===t.length||e.every(e=>t.every(t=>{let a=e[t];return null==a||0===a}))}function j(e,t){let a=t?.min??48,i=t?.max??112,l=t?.padding??10;return 0===e.length?a:Math.min(i,Math.max(a,Math.ceil(e.reduce((e,t)=>Math.max(e,function(e){let t=0;for(let i of e){var a;t+=(a=i.codePointAt(0)??0)>=4352&&a<=4607||a>=12288&&a<=12351||a>=12592&&a<=12687||a>=44032&&a<=55203||a>=65280&&a<=65519?13:6.5}return t}(t)),0)+l)))}function S(e,t=5,a="기타"){let i=[...e].sort((e,t)=>t.value-e.value);return i.length<=t+1?i.map(e=>({label:e.label,value:e.value})):[...i.slice(0,t).map(e=>({label:e.label,value:e.value})),{label:a,value:i.slice(t).reduce((e,t)=>e+t.value,0),color:r}]}},9199:(e,t,a)=>{a.d(t,{A:()=>i});let i=(0,a(90425).A)("rotate-ccw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]])},14450:(e,t,a)=>{a.d(t,{l0:()=>l});var i=a(38731);let l=["knowledge/min_items","knowledge/all_items_approved","knowledge/no_conflicting_facts","compliance/medical_ad_filter","compliance/emergency_protocol","compliance/price_disclosure","compliance/pii_free","translation/complete","translation/no_stale","seo/slug_confirmed","seo/jsonld_valid","seo/sitemap_locales_match","ownership/verified","entitlement/languages_allowed","catalog/offer_valid","commerce/payout_merchant_ready","runtime/index_ready","runtime/answer_sample_pass"],r=i.Ik({ok:i.zM(),reasons:i.YO(i.Yj()),metrics:i.g1(i.Yj(),i.KC([i.ai(),i.Yj(),i.zM()])
1).optional()});function s(e,t,a){return{ok:e,reasons:e?[]:t,...a?{metrics:a}:{}}}if(new Set([{key:"knowledge/min_items",title:"Minimum release knowledge",required:!0,evidenceSchema:r,evaluator:e=>{let t=new Set(e.items.map(e=>e.itemType)),a=["department","procedure","hours","location"].filter(e=>!t.has(e));return s(e.items.length>=12&&0===a.length,[...e.items.length<12?["fewer_than_12_items"]:[],...a.map(e=>`missing_${e}`)],{itemCount:e.items.length})}},{key:"knowledge/all_items_approved",title:"All snapshot items approved",required:!0,evidenceSchema:r,evaluator:e=>{let t=e.items.filter(e=>"approved"!==e.reviewStatus).length;return s(0===t,["unapproved_items"],{unapprovedCount:t})}},{key:"knowledge/no_conflicting_facts",title:"No conflicting facts",required:!0,evidenceSchema:r,evaluator:e=>{let t=function(e){let t=new Map;for(let a of e.filter(e=>["fact","hours","location"].includes(e.itemType))){let e=t.get(a.itemKey)??new Set;e.add(a.bodyKo.normalize("NFKC").replace(/\s+/g," ").trim()),t.set(a.itemKey,e)}return[...t.entries()].filter(([,e])=>e.size>1).map(([e])=>e)}(e.items);return s(0===t.length,t.map(e=>`conflict:${e}`),{conflictCount:t.length})}},{key:"compliance/medical_ad_filter",title:"Medical advertising filter",required:!0,evidenceSchema:r,evaluator:()=>s(!0,[])},{key:"compliance/emergency_protocol",title:"Reviewed emergency protocol",required:!0,evidenceSchema:r,evaluator:e=>{let t=new Set(e.emergency.approvedLanguages),a=e.emergency.requiredLanguages.filter(e=>!t.has(e));return s(0===a.length&&e.emergency.versionMatches,[...a.map(e=>`missing_emergency:${e}`),...e.emergency.versionMatches?[]:["emergency_version_mismatch"]],{missingCount:a.length})}},{key:"compliance/price_disclosure",title:"Price disclosure",required:!0,evidenceSchema:r,evaluator:()=>s(!0,[])},{key:"compliance/pii_free",title:"Patient PII free",required:!0,evidenceSchema:r,evaluator:e=>{let t=e.items.filter(e=>{var t;return t=`${e.bodyKo} ${JSON.stringify(e.structured)}`,/\b\d{6}[ -]?[1-4]\d{6}\b|\b01[016789][-. ]?\d{3,4}[-. ]?\d{4}\b/iu.test(t)}).length;return s(0===t,["patient_pii_detected"],{violationCount:t})}},{key:"translation/complete",title:"Translations complete",required:!0,evidenceSchema:r,evaluator:e=>s(e.translations.complete,["translations_incomplete"])},{key:"translation/no_stale",title:"Translations current",required:!0,evidenceSchema:r,evaluator:e=>s(0===e.translations.staleCount,["stale_translations"],{staleCount:e.translations.staleCount})},{key:"seo/slug_confirmed",title:"Public slug confirmed",required:!0,evidenceSchema:r,evaluator:e=>s(e.seo.slugConfirmed,["slug_not_confirmed"])},{key:"seo/jsonld_valid",title:"JSON-LD valid",required:!0,evidenceSchema:r,evaluator:e=>s(e.seo.jsonLdValid,["jsonld_invalid"])},{key:"seo/sitemap_locales_match",title:"Sitemap locales match",required:!0,evidenceSchema:r,evaluator:e=>s(e.seo.sitemapLocalesMatch,["sitemap_locale_mismatch"])},{key:"ownership/verified",title:"Ownership verified",required:!0,evidenceSchema:r,evaluator:e=>s(4===e.ownershipLevel,["ownership_not_converged"],{ownershipLevel:e.ownershipLevel})},{key:"entitlement/languages_allowed",title:"Languages entitled",required:!0,evidenceSchema:r,evaluator:e=>{let t=new Set(e.entitlements.allowedLanguages),a=e.entitlements.requestedLanguages.filter(e=>!t.has(e));return s(0===a.length,a.map(e=>`language_not_allowed:${e}`),{deniedCount:a.length})}},{key:"catalog/offer_valid",title:"Procedure offers valid",required:!0,evidenceSchema:r,evaluator:e=>{let t=e.items.filter(e=>"procedure"===e.itemType&&!0!==e.structured.offerValid);return s(0===t.length,["procedure_offer_invalid"],{invalidCount:t.length})}},{key:"commerce/payout_merchant_ready",title:"Payout merchant ready",required:!0,evidenceSchema:r,evaluator:e=>s(e.commerce.payoutMerchantReady,["paid_offer_without_approved_payout_merchant"])},{key:"runtime/index_ready",title:"Release index ready",required:!0,externallyEvaluated:!0,evidenceSchema:r,evaluator:e=>s(e.runtime.indexReady,["release_index_not_ready"])},{key:"runtime/answer_sample_pass",title:"Answer samples pass",required:!0,externallyEvaluated:!0,evidenceSchema:r,evaluator:e=>s(e.runtime.answerSamplePass,["answer_sample_failed"])}].map(e=>e.key)).size!==l.length)throw Error("release gate registry contains duplicate keys")},19979:(e,t,a)=>{a.r(t),a.d(t,{default:()=>v});var i=a(95155),l=a(12115),r=a(6296),s=a(65266),n=a(41585),o=a(9199),d=a(12651),c=a(62791),u=a(66088),m=a(10837),p=a(88216),h=a(98983),f=a(75563),g=a(9263),y=a(93909);let x={passed:"ok",waived:"ok",failed:"bad",pending:"warn"};function v({hospitalId:e,canPublish:t}){let[a,b]=(0,l.useState)([]),[k,_]=(0,l.useState)(null),[w,j]=(0,l.useState)([]),[S,N]=(0,l.useState)(!1),[$,M]=(0,l.useState)(null),[C,q]=(0,l.useState)(!1),[A,F]=(0,l.useState)(null),[L,E]=(0,l.useState)(null),[P,T]=(0,l.useState)(!0),z=(0,l.useMemo)(()=>(0,p.bb)(e),[e]),O=(0,l.useCallback)(async()=>{T(!0);try{let e=await (0,p.UX)("/api/hospital/knowledge/releases",{},z);b(e.releases),_(t=>t&&e.releases.some(e=>e.id===t)?t:e.releases[0]?.id??null),F(null),E(null)}catch(t){let e=t instanceof Error?t.message:"릴리스를 불러오지 못했습니다.";b([]),F(e),E(e)}finally{T(!1)}},[z]),R=(0,l.useCallback)(async e=>{N(!0);try{let t=await (0,p.UX)(`/api/hospital/knowledge/releases/${encodeURIComponent(e)}`,{},z);j(t.gates),M(null)}catch(t){let e=t instanceof Error?t.message:"게이트 증거를 불러오지 못했습니다.";F(e),M(e)}finally{N(!1)}},[z]);(0,l.useEffect)(()=>{O()},[O]),(0,l.useEffect)(()=>{k?R(k):(j([]),M(null))},[k,R]);let U=(0,l.useMemo)(()=>a.find(e=>e.id===k)??null,[a,k]),B=(0,p.LV)(U,w,t),W=(0,l.useMemo)(()=>(0,f.gQ)(a),[a]),J=W[W.length-1]??null,I=0===W.length,K=P?"릴리스를 불러오는 중입니다":"아직 만든 릴리스가 없습니다",V=P?"잠시 후 릴리스별 항목 수가 여기에 나타납니다.":"릴리스를 만들면 그때의 항목 수가 여기에 쌓입니다. 만드는 중인 릴리스는 컴파일이 끝나야 시간 축에 올라갑니다.",Y=(0,l.useMemo)(()=>(0,f.$2)(w),[w]),D=(0,l.useMemo)(()=>(0,f.yq)(w),[w]),X=0===w.length,H=S?"게이트 증거를 불러오는 중입니다":U?"이 릴리스의 게이트 증거가 아직 없습니다":"릴리스를 고르면 게이트 현황이 나타납니다",G=async()=>{q(!0);try{await (0,p.UX)("/api/hospital/knowledge/releases",{method:"POST",body:"{}"},z),await O()}catch(e){F(e instanceof Error?e.message:"릴리스 생성을 시작하지 못했습니다.")}finally{q(!1)}},Q=async e=>{if(U){q(!0);try{await (0,p.UX)(`/api/hospital/knowledge/releases/${encodeURIComponent(U.id)}/transition`,{method:"POST",body:JSON.stringify({action:e})},z),await O(),await R(U.id)}catch(t){F(t instanceof Error?t.message:`릴리스 ${e}에 실패했습니다.`)}finally{q(!1)}}};return(0,i.jsxs)("section",{className:"grid gap-6 xl:grid-cols-[minmax(320px,380px)_1fr]","aria-label":"릴리스 대시보드",children:[(0,i.jsxs)("div",{className:"relative space-y-3",children:[(0,i.jsx)(y.i2,{active:C}),(0,i.jsxs)("button",{type:"button",onClick:()=>void G(),disabled:C,className:"flex w-full items-center justify-center gap-2 rounded-xl bg-teal-600 px-4 py-3 text-sm font-bold text-white disabled:opacity-50",children:[C?(0,i.jsx)(r.A,{className:"h-4 w-4 animate-spin"}):(0,i.jsx)(s.A,{className:"h-4 w-4"}),"릴리스 만들기"]}),a.map(e=>(0,i.jsxs)("button",{type:"button",onClick:()=>_(e.id),className:`w-full rounded-xl p-4 text-left ${k===e.id?"border border-teal-400 bg-teal-50":"lg-inset lg-radius-inset"}`,children:[(0,i.jsxs)("div",{className:"flex items-center justify-between",children:[(0,i.jsxs)("strong",{children:["릴리스 #",e.seq]}),(0,i.jsx)(g.vu,{tone:"published"===e.status?"ok":"warn",children:e.status})]}),(0,i.jsxs)("div",{className:"mt-2 text-xs text-[#475569]",children:["항목 ",e.item_count,"개"]}),(0,i.jsx)("div",{className:"mt-1 truncate font-mono text-[11px] text-[#64748b]",children:e.checksum||"checksum 준비 중"})]},e.id)),P&&0===a.length&&(0,i.jsx)("div",{className:"rounded-xl border border-dashed p-8 text-center text-sm text-slate-500",children:"릴리스를 불러오는 중입니다."}),!P&&0===a.length&&(0,i.jsx)("div",{className:"rounded-xl border border-dashed p-8 text-center text-sm text-slate-500",children:"아직 만든 릴리스가 없습니다."})]}),(0,i.jsxs)("div",{className:"space-y-4",children:[A&&(0,i.jsxs)("div",{role:"alert",className:"flex items-center gap-2 rounded-xl border border-rose-200 bg-rose-50 p-3 text-sm text-rose-800",children:[(0,i.jsx)(n.A,{className:"h-4 w-4"}),A]}),(0,i.jsx)(h.Y7,{title:"릴리스별 항목 수",description:"릴리스를 만든 시각 순서입니다. 항목 수는 릴리스 사이에서 계단처럼 바뀌므로 계단형으로 그립니다.",tableColumns:f.lM,tableRows:(0,f.pr)(W),loading:P,error:L,onRetry:()=>void O(),empty:I,emptyTitle:K,emptyBody:V,children:(0,i.jsx)(h.No,{data:W,series:[{key:"items",label:"항목 수"}
1],xKey:"compiledAt",curve:"stepAfter",height:220,xFormat:e=>(0,f.Yq)(String(e)),valueFormat:e=>`${e.toLocaleString("ko-KR")}개`,ariaLabel:J?`릴리스 ${W.length}개의 항목 수 추세. 가장 최근 릴리스 ${J.label} 은 ${J.items}개입니다.`:"릴리스별 항목 수 추세"})}),(0,i.jsx)(h.Y7,{title:"게이트 통과 현황",description:`선택한 릴리스의 게이트 ${p.yW}개 상태입니다.`,tableColumns:f.j6,tableRows:(0,f.WB)(w),loading:S,error:$,onRetry:()=>U?void R(U.id):void 0,empty:X,emptyTitle:H,emptyBody:S?"잠시 후 게이트별 통과 현황이 여기에 나타납니다.":"릴리스를 컴파일하면 게이트 증거가 쌓이고 여기에 통과 현황이 나타납니다.",children:(0,i.jsx)(h.YO,{data:D,centerValue:`${Y.passed}/${p.yW}`,centerLabel:"게이트 통과",height:220,ariaLabel:`게이트 ${p.yW}개 중 통과 ${Y.passed}개, 실패 ${Y.failed}개, 대기 ${Y.pending}개, 면제 ${Y.waived}개`})}),(0,i.jsxs)("div",{className:"lg-inset lg-radius-inset p-5",children:[(0,i.jsxs)("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[(0,i.jsxs)("div",{children:[(0,i.jsx)("h2",{className:"text-base font-semibold text-[#0f172a]",children:"개통 전 필수 게이트"}),(0,i.jsxs)("p",{className:"mt-1 text-sm text-[#475569]",children:[p.yW,"개 증거가 모두 통과하고 원장 승인이 있어야 개통할 수 있습니다."]})]}),(0,i.jsxs)("div",{className:"flex gap-2",children:[U?.status==="published"&&(0,i.jsxs)("button",{type:"button",onClick:()=>void Q("rollback"),disabled:C||!t,className:"inline-flex items-center gap-2 rounded-xl border px-3 py-2 text-sm font-semibold disabled:opacity-50",children:[(0,i.jsx)(o.A,{className:"h-4 w-4"}),"롤백"]}),(0,i.jsxs)("button",{type:"button",title:B??"모든 게이트 통과",onClick:()=>void Q("publish"),disabled:C||!!B,className:"inline-flex items-center gap-2 rounded-xl bg-slate-900 px-4 py-2 text-sm font-bold text-white disabled:cursor-not-allowed disabled:opacity-40",children:[(0,i.jsx)(s.A,{className:"h-4 w-4"}),"개통"]})]})]}),B&&(0,i.jsxs)("p",{className:"mt-3 rounded-lg bg-amber-50 px-3 py-2 text-sm text-amber-900",role:"status",children:["개통 불가: ",B]})]}),(0,i.jsx)("div",{className:"space-y-2",children:w.map(t=>(0,i.jsxs)("details",{className:`rounded-xl p-4 ${"failed"===t.status?"border border-rose-200 bg-rose-50/50":"lg-inset lg-radius-inset"}`,children:[(0,i.jsxs)("summary",{className:"flex cursor-pointer list-none items-center gap-3",children:[["passed","waived"].includes(t.status)?(0,i.jsx)(d.A,{className:"h-5 w-5 text-teal-600"}):(0,i.jsx)(c.A,{className:"h-5 w-5 text-rose-600"}),(0,i.jsx)("span",{className:"flex-1 font-medium",children:t.gate_key}),(0,i.jsx)(g.vu,{tone:x[t.status]??"warn",children:t.status}),(0,i.jsx)(u.A,{className:"h-4 w-4"})]}),(0,i.jsx)("pre",{className:"mt-3 overflow-auto rounded-lg bg-slate-950 p-3 text-xs text-slate-100",children:JSON.stringify(t.evidence,null,2)}),"translation/complete"===t.gate_key&&"failed"===t.status&&(0,i.jsx)("div",{className:"mt-3",children:(0,i.jsx)(m.cD,{hospitalId:e,scope:"hospital",label:"여기서 바로 번역"})}),"ownership/verified"===t.gate_key&&!["passed","waived"].includes(t.status)&&(0,i.jsx)("a",{href:"?view=ops-team&tab=ownership",className:"mt-3 inline-flex min-h-11 items-center rounded-lg border border-teal-700 px-3 py-2 text-sm font-bold text-teal-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-teal-600 dark:border-teal-400 dark:text-teal-200",children:"소유확인 이어하기"})]},t.gate_key))})]})]})}},62791:(e,t,a)=>{a.d(t,{A:()=>i});let i=(0,a(90425).A)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},65266:(e,t,a)=>{a.d(t,{A:()=>i});let i=(0,a(90425).A)("rocket",[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]])},88216:(e,t,a)=>{a.d(t,{LV:()=>c,Tb:()=>d,UX:()=>r,VL:()=>u,bb:()=>o,mh:()=>m,yW:()=>l});var i=a(52504);let l=a(14450).l0.length;async function r(e,t={},a=i.v$){let l=await a(e,t),s=await l.json();if(!l.ok)throw Error(s.error??`request failed (${l.status})`);return s}let s=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
1class n extends Error{constructor(e){super("병원 정보를 확인하지 못했습니다. 병원을 다시 선택해 주세요."),this.received=e,this.name="MissingHospitalScopeError"}}function o(e,t=i.v$){let a=e?.trim()||null,l=a&&s.test(a)?a:null;return(e,i={})=>{if(!l)return Promise.reject(new n(a));let r=new Headers(i.headers);return r.set("x-kdoc-hospital-id",l),t(e,{...i,headers:Object.fromEntries(r.entries())})}}function d(e){return e.filter(e=>"low"===e.risk_level&&("draft"===e.review_status||"pending_review"===e.review_status))}function c(e,t,a){if(!e)return"릴리스를 먼저 선택하세요.";if(!a)return"개통은 병원 원장 승인 권한이 있는 계정에서 진행할 수 있습니다.";if(t.length!==l)return`게이트 증거가 ${l}개 모두 준비되지 않았습니다 (${t.length}/${l}).`;let i=t.filter(e=>e.required&&!["passed","waived"].includes(e.status));return i.some(e=>"ownership/verified"===e.gate_key)?"게이트 13 ownership/verified 소유확인이 아직 수렴하지 않았습니다.":i.length>0?`필수 게이트 ${i.length}개가 아직 통과하지 않았습니다.`:"approved"!==e.status?`릴리스 상태가 approved가 아닙니다 (${e.status}).`:null}async function u(e,t,a=i.v$){return r(`/api/hospital/knowledge/items/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(t)},a)}async function m(e,t=i.v$){return r("/api/hospital/knowledge/items/bulk-approve",{method:"POST",body:JSON.stringify({ids:e})},t)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.