PageSourceSearch

https://oqoq.ai/_next/static/chunks/8349-a73494c5f2515d42.js

js oqoq.ai collected 2026-10-05 13:49:16 UTC 7,428 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8349],{48349:function(n,t,e){e.d(t,{KJ:function(){return l},OR:function(){return _},Oq:function(){return y},Ss:function(){return S},TP:function(){return I},Uu:function(){return k},YD:function(){return i},cU:function(){return g},et:function(){return D}});var c=e(39194),a=e(58013),r=e(47983);let o=n=>{if("undefined"==typeof AbortController)return{clear:()=>{}};let t=new AbortController,e=setTimeout(()=>t.abort(),n);return{signal:t.signal,clear:()=>clearTimeout(e)}},l=async(n,t)=>{let{signal:e,clear:c}=o(1e4);try{let c=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:t}),signal:e,keepalive:!0});if(!c.ok)return console.error("Slack webhook 요청 실패:",c.status,c.statusText),"failed";return"delivered"}catch(n){return console.error("Error sending to Slack:",n),"failed"}finally{c()}},u=n=>{if(null==n)return"";let t=String(n).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\s*[\r\n\u0085\u2028\u2029]+\s*/g," "),e=Array.from(t);return e.length>200?"".concat(e.slice(0,200).join(""),"…"):t},i=async function(n){let{retries:t=2,delayMs:e=3e3}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},c=await n();for(let a=0;a<t&&"failed"===c;a+=1)await new Promise(n=>setTimeout(n,e)),c=await n();return c},s=n=>{let t=new WeakSet;return JSON.stringify(n,(n,e)=>{if("object"==typeof e&&null!==e){if(t.has(e))return"[Circular]";t.add(e)}return e},2)},d=n=>{if(!n)return null;let t=n.split("\n").find(n=>n.includes(":")&&n.includes("at"));if(!t)return null;let e=t.match(/(webpack-internal:\/\/\/[^\s)]+:\d+:\d+|\/[^\s)]+:\d+:\d+)/);return e?e[1]:t.trim()},f=new Set(["AUTH_INVALID_TOKEN"]),p=n=>{var t;if(!n||"object"!=typeof n)return!1;let e=n.response;return!!e&&401===e.status&&!!(null===(t=e.data)||void 0===t?void 0:t.code)&&f.has(e.data.code)},D=n=>{let{title:t,maxLength:e=2900,webhookUrl:c="/api/slack/bug-report"}=n;return async(n,a,r,o)=>{try{if(p(a)){var u,i,f,D;let d=a.response,p=null!==(f=null==d?void 0:null===(u=d.data)||void 0===u?void 0:u.code)&&void 0!==f?f:"",h=null!==(D=null==d?void 0:null===(i=d.data)||void 0===i?void 0:i.message)&&void 0!==D?D:"",g="ℹ️ ".concat(t," 인증 실패 (정상 거부)\n\n*사유*: ").concat(n,"\n*code*: ").concat(p,"\n*message*: ").concat(h,"\n*API*: ").concat(null!=o?o:"없음","\n*context*: ").concat(r?s(r):"없음"),m=g.length>e?"".concat(g.slice(0,e),"\n... (truncated)"):g;await l(c,m);return}let h=(()=>{if(!a)return null;if(a instanceof Error){let n=a.stack?"\n".concat(a.stack):"";return"".concat(a.name,": ").concat(a.message).concat(n)}return"string"==typeof a?a:s(a)})(),g=a instanceof Error?d(a.stack):d("string"==typeof a?a:null),m="\uD83D\uDEA8 ".concat(t," 에러\n\n*에러 메시지*: ").concat(n,"\n*API*: ").concat(null!=o?o:"없음","\n*errorLine*: ").concat(null!=g?g:"없음","\n*error*: ").concat(null!=h?h:"없음","\n*context*: ").concat(r?s(r):"없음"),w=m.length>e?"".concat(m.slice(0,e),"\n... (truncated)"):m;await l(c,w)}catch(n){console.error("Error sending to Slack:",n)}}},h={[c.$2.QR]:"QR 주문",[c.$2.PUBLIC]:"공유 메뉴판 주문"},g=async n=>{let t,{orderType:e,shopName:c,shopId:a,menuId:o,ownerId:i,settingLabel:s}=n;try{t=await (0,r.e)()}catch(n){console.warn("유저 정보 조회 실패, 기본값 사용:",n)}let d=u(c)||"알 수 없음",f=i||(null==t?void 0:t.owner_id)||"알 수 없음",p=(null==t?void 0:t.user_name)||"알 수 없음",D=(null==t?void 0:t.email)||"알 수 없음",g=h[e],m="\uD83C\uDFAF ".concat(g," : ").concat(s," \n\n")+"- 매장명: ".concat(d," Shop ID: ").concat(a||"알 수 없음","  Menu ID: ").concat(o||"알 수 없음","\n")+"- 유저명: ".concat(p," (").concat(D,") User ID: ").concat(f,"\n");await l("/api/slack/order-setting",m)},m=(n,t)=>{let e=(0,a.yd)(n,t),c="".concat(u(n),":").concat(u(t)),r=e&&e.length<=300?e:null;return r?"".concat(c," ").concat(r):c},w=async()=>{let n;try{n=await Promise.race([(0,r.e)(),new Promise(n=>setTimeout(()=>n(void 0),1500))])}catch(n){console.warn("유저 정보 조회 실패, 기본값 사용:",n)}let t=u(null==n?void 0:n.user_name)||"알 수 없음",e=u(null==n?void 0:n.email)||"알 수 없음",c=(null==n?void 0:n.owner_id)||"알 수 없음";return"- 유저명: ".concat(t," (").concat(e,") User ID: ").concat(c,"\n")},y=async n=>{let{shopName:t,shopId:e,platform:c,platformId:a,scrapedName:r,scrapedAddress:o,reviewCount:i,source:s,unifiedStoreId:d}=n,f=await w(),p=u(t)||"알 수 없음";return l("/api/slack/order-setting","".concat("owner_search"===s?"\uD83D\uDD17 리뷰 매장 연결 (직접 검색 — 유사도 게이트 없음)":"\uD83D\uDD17 리뷰 매장 연결 (AI 후보 확인)","\n\n")+"- 매장명: ".concat(p," Shop ID: ").concat(e||"알 수 없음","\n")+f+"- 연결한 가게: ".concat(u(r)||"이름 없음","\n")+(o?"  ".concat(u(o),"\n"):"")+"  ".concat(m(c,a),"\n")+("number"==typeof i?"- 리뷰 수: ".concat(i,"\n"):"")+(d?"- unified_store_id: ".concat(u(d),"\n"):""))},S=async n=>{let{shopName:t,shopId:e,connected:c,unifiedStoreId:a}=n,r=await w(),o=u(t)||"알 수 없음",i=c.length?c.map(n=>{let{platform:t,platformId:e}=n;return m(t,e)}).join("\n  "):"없음";return l("/api/slack/order-setting","\uD83D\uDD01 리뷰 매장 재연결 요청\n\n"+"- 매장명: ".concat(o," Shop ID: ").concat(e||"알 수 없음","\n")+r+"- 현재 연결: ".concat(i,"\n")+(a?"- unified_store_id: ".concat(u(a),"\n"):""))},v={register:"최초 등록",reregister:"재등록"},k=async n=>
1{let t=await w(),e=u(n.shopName)||"알 수 없음",c=n.shopId||"알 수 없음",a=v[n.mode],r="success"===n.outcome?"\uD83D\uDCB3 여신금융협회 ".concat(a," 성공"):"\uD83D\uDCB3 여신금융협회 ".concat(a," 실패"),o="success"===n.outcome?(n.lastStatus?"- last_status: ".concat(u(n.lastStatus),"\n"):"")+(null!=n.credsSeq?"- creds_seq: ".concat(Number(n.credsSeq),"\n"):""):"- HTTP: ".concat(null==n.httpStatus?"응답 없음":Number(n.httpStatus))+(403===n.httpStatus?" (매장 소유권 없음 — 재시도 무의미)":"")+(503===n.httpStatus?" (일시 장애)":"")+"\n"+(n.errorCode?"- code: ".concat(u(n.errorCode),"\n"):"");return l("/api/slack/order-setting","".concat(r,"\n\n")+"- 매장명: ".concat(e," Shop ID: ").concat(c,"\n")+t+o)},_=async n=>{let{enabled:t,shopName:e,shopId:c,menuId:a,siteUrl:r}=n,o=await w(),i=u(e)||"알 수 없음",s=r&&/^https?:\/\//.test(r)&&r.length<=300&&!/[\s<>]/.test(r)?r:null;return l("/api/slack/order-setting","".concat(t?"\uD83C\uDF10 매장 홈페이지 사용 시작":"\uD83C\uDF10 매장 홈페이지 사용 중지","\n\n")+"- 매장명: ".concat(i," Shop ID: ").concat(c||"알 수 없음","  Menu ID: ").concat(a||"알 수 없음","\n")+o+(s?"- 주소: ".concat(s,"\n"):""))},I=async n=>{let{shopName:t,shopId:e,displayedTargets:c,targetCount:a,queued:r,alreadyQueued:o,unifiedStoreId:i}=n,s=await w(),d=u(t)||"알 수 없음",f=c.length?c.map(n=>{let{platform:t,platformId:e}=n;return m(t,e)}).join("\n  "):"없음";return l("/api/slack/order-setting","\uD83D\uDD04 리뷰 평판 갱신 요청\n\n"+"- 매장명: ".concat(d," Shop ID: ").concat(e||"알 수 없음","\n")+s+"- 갱신 대상: ".concat(a,"건 (서버 판정)\n")+"- 화면에 표시된 연결: ".concat(f,"\n")+"- 큐잉: ".concat(r,"건").concat(o>0?" (대기 중이라 건너뜀: ".concat(o,"건)"):"","\n")+(i?"- unified_store_id: ".concat(u(i),"\n"):""))}}}]);

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.