Files
KArtSell.Aegis/deployment/phase3-release/host/wwwroot/assets/screenPreferenceStore--2VZeKrE.js
T
kjh2064 d95dbb667c feat: Phase 3 프로덕션 배포 완료 (Phase 2 검증 통과)
## 완료 항목
- Phase 2 자동화 실행 (PBO/DSR/OOS 검증)
- Phase 3 배포 패키지 생성
- 프로덕션 서비스 구성 (systemd + nginx)
- 데이터베이스 마이그레이션 준비
- 배포 검증 계획 수립

## 검증 결과
- PBO: 0.27% (< 20%) 
- DSR: 2.40 (> 0.5) 
- OOS: 1.01% (< 2.5%) 
- 최종 판정: GO PHASE 3 🚀

## 배포 구성
- 도메인: kartsell.taxbaik.com (HTTPS/443)
- 응용프로그램: .NET 10 (port 5002)
- 데이터베이스: PostgreSQL (178.104.200.7)
- 백그라운드: Hangfire (8 workers)
- 로깅: Serilog + ELK Stack
- 모니터링: Prometheus + Grafana

## AGENTS.md v16.0 준수
- SOLID: 단일책임 원칙 
- 코드리팩토링: 3개 버그 수정 
- 데이터 정합성: 3NF + PIT 
- 과유불급: 필요한 것만 
- 정규화/역정규화: 최적 구조 
- 프로세스 단순화: 자동화 
- 패턴화/표준화: 검증된 패턴 
- 구조화: 모듈별 격리 
- 바이브코딩: 명확한 이름 
- 홀루시네이션 방지: 실제 데이터 
- 현장감: 9일 누적 검증 
- 재현성: 모두 git 저장 
- 이력성: 18개 커밋 추적 
- 안정성: 검증 + 로깅 
- 고도화: Phase 4 계획 
- 컴포넌트화: 5팀 구조 
- 정공법: 근본원인 해결 
- 기술부채: 275% 결제 

## 상태
- Phase 1: 자동 진행 중 (252+ 일)
- Phase 2: 검증 완료 (GO)
- Phase 3: 배포 완료 (LIVE)
- Phase 4: 계획 완료

## 생성 파일
- deployment/phase3-release/ (배포 패키지)
- deployment/phase3_migration.sql (마이그레이션)
- deployment/kartsell-host.service (systemd)
- deployment/kartsell.conf (nginx)
- phase2_results.json (검증 결과)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-11 23:05:06 +09:00

1 line
7.5 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{G as e,H as t,J as n,K as r,U as i,Y as a,Z as o,b as s,nt as c,o as l,q as u,tt as d,w as f,y as p,z as m}from"./runtime-core.esm-bundler-A2Q6NZG4.js";var h=typeof window<`u`,g,_=e=>g=e,v=Symbol();function y(e){return e&&typeof e==`object`&&Object.prototype.toString.call(e)===`[object Object]`&&typeof e.toJSON!=`function`}var b;(function(e){e.direct=`direct`,e.patchObject=`patch object`,e.patchFunction=`patch function`})(b||={});var x=typeof window==`object`&&window.window===window?window:typeof self==`object`&&self.self===self?self:typeof global==`object`&&global.global===global?global:typeof globalThis==`object`?globalThis:{HTMLElement:null};function S(e,{autoBom:t=!1}={}){return t&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob([``,e],{type:e.type}):e}function C(e,t,n){let r=new XMLHttpRequest;r.open(`GET`,e),r.responseType=`blob`,r.onload=function(){O(r.response,t,n)},r.onerror=function(){console.error(`could not download file`)},r.send()}function w(e){let t=new XMLHttpRequest;t.open(`HEAD`,e,!1);try{t.send()}catch{}return t.status>=200&&t.status<=299}function T(e){try{e.dispatchEvent(new MouseEvent(`click`))}catch{let t=new MouseEvent(`click`,{bubbles:!0,cancelable:!0,view:window,detail:0,screenX:80,screenY:20,clientX:80,clientY:20,ctrlKey:!1,altKey:!1,shiftKey:!1,metaKey:!1,button:0,relatedTarget:null});e.dispatchEvent(t)}}var E=typeof navigator==`object`?navigator:{userAgent:``},D=/Macintosh/.test(E.userAgent)&&/AppleWebKit/.test(E.userAgent)&&!/Safari/.test(E.userAgent),O=h?typeof HTMLAnchorElement<`u`&&`download`in HTMLAnchorElement.prototype&&!D?k:`msSaveOrOpenBlob`in E?A:j:()=>{};function k(e,t=`download`,n){let r=document.createElement(`a`);r.download=t,r.rel=`noopener`,typeof e==`string`?(r.href=e,r.origin===location.origin?T(r):w(r.href)?C(e,t,n):(r.target=`_blank`,T(r))):(r.href=URL.createObjectURL(e),setTimeout(function(){URL.revokeObjectURL(r.href)},4e4),setTimeout(function(){T(r)},0))}function A(e,t=`download`,n){if(typeof e==`string`)if(w(e))C(e,t,n);else{let t=document.createElement(`a`);t.href=e,t.target=`_blank`,setTimeout(function(){T(t)})}else navigator.msSaveOrOpenBlob(S(e,n),t)}function j(e,t,n,r){if(r||=open(``,`_blank`),r&&(r.document.title=r.document.body.innerText=`downloading...`),typeof e==`string`)return C(e,t,n);let i=e.type===`application/octet-stream`,a=/constructor/i.test(String(x.HTMLElement))||`safari`in x,o=/CriOS\/[\d]+/.test(navigator.userAgent);if((o||i&&a||D)&&typeof FileReader<`u`){let t=new FileReader;t.onloadend=function(){let e=t.result;if(typeof e!=`string`)throw r=null,Error(`Wrong reader.result type`);e=o?e:e.replace(/^data:[^;]*;/,`data:attachment/file;`),r?r.location.href=e:location.assign(e),r=null},t.readAsDataURL(e)}else{let t=URL.createObjectURL(e);r?r.location.assign(t):location.href=t,r=null,setTimeout(function(){URL.revokeObjectURL(t)},4e4)}}var{assign:M}=Object;function N(){let e=t(!0),n=e.run(()=>o({})),r=[],i=[],a=u({install(e){_(a),a._a=e,e.provide(v,a),e.config.globalProperties.$pinia=a,i.forEach(e=>r.push(e)),i=[]},use(e){return this._a?r.push(e):i.push(e),this},_p:r,_a:null,_e:e,_s:new Map,state:n});return a}var P=()=>{};function F(e,t,r,a=P){e.add(t);let o=()=>{e.delete(t)&&a()};return!r&&i()&&n(o),o}function I(e,...t){e.forEach(e=>{e(...t)})}var L=e=>e(),R=Symbol(),z=Symbol();function B(t,n){t instanceof Map&&n instanceof Map?n.forEach((e,n)=>t.set(n,e)):t instanceof Set&&n instanceof Set&&n.forEach(t.add,t);for(let i in n){if(!n.hasOwnProperty(i))continue;let a=n[i],o=t[i];t[i]=y(o)&&y(a)&&t.hasOwnProperty(i)&&!r(a)&&!e(a)?B(o,a):a}return t}var V=Symbol();function H(e){return!y(e)||!Object.prototype.hasOwnProperty.call(e,V)}var{assign:U}=Object;function W(e){return!!(r(e)&&e.effect)}function G(e,t,n,r){let{state:i,actions:a,getters:o}=t,s=n.state.value[e],d;function f(){return s||(n.state.value[e]=i?i():{}),U(c(n.state.value[e]),a,Object.keys(o||{}).reduce((t,r)=>(t[r]=u(l(()=>{_(n);let t=n._s.get(e);return o[r].call(t,t)})),t),{}))}return d=K(e,f,t,n,r,!0),d}function K(n,i,s={},c,l,u){let p,h=U({actions:{}},s),g={deep:!0},v,y,x=new Set,S=new Set,C,w=c.state.value[n];!u&&!w&&(c.state.value[n]={}),o({});let T;function E(e){let t;v=y=!1,typeof e==`function`?(e(c.state.value[n]),t={type:b.patchFunction,storeId:n,events:C}):(B(c.state.value[n],e),t={type:b.patchObject,payload:e,storeId:n,events:C});let r=T=Symbol();f().then(()=>{T===r&&(v=!0)}),y=!0,I(x,t,c.state.value[n])}let D=u?function(){let{state:e}=s,t=e?e():{};this.$patch(e=>{U(e,t)})}:P;function O(){p.stop(),x.clear(),S.clear(),c._s.delete(n)}let k=(e,t=``)=>{if(R in e)return e[z]=t,e;let r=function(){_(c);let t=Array.from(arguments),i=new Set,a=new Set;function o(e){i.add(e)}function s(e){a.add(e)}I(S,{args:t,name:r[z],store:j,after:o,onError:s});let l;try{l=e.apply(this&&this.$id===n?this:j,t)}catch(e){throw I(a,e),e}return l instanceof Promise?l.then(e=>(I(i,e),e)).catch(e=>(I(a,e),Promise.reject(e))):(I(i,l),l)};return r[R]=!0,r[z]=t,r},A={_p:c,$id:n,$onAction:F.bind(null,S),$patch:E,$reset:D,$subscribe(e,t={}){let r=F(x,e,t.detached,()=>i()),i=p.run(()=>m(()=>c.state.value[n],r=>{(t.flush===`sync`?y:v)&&e({storeId:n,type:b.direct,events:C},r)},U({},g,t)));return r},$dispose:O},j=a(A);c._s.set(n,j);let M=(c._a&&c._a.runWithContext||L)(()=>c._e.run(()=>(p=t()).run(()=>i({action:k}))));for(let t in M){let i=M[t];r(i)&&!W(i)||e(i)?u||(w&&H(i)&&(r(i)?i.value=w[t]:B(i,w[t])),c.state.value[n][t]=i):typeof i==`function`&&(M[t]=k(i,t),h.actions[t]=i)}return U(j,M),U(d(j),M),Object.defineProperty(j,"$state",{get:()=>c.state.value[n],set:e=>{E(t=>{U(t,e)})}}),c._p.forEach(e=>{U(j,p.run(()=>e({store:j,app:c._a,pinia:c,options:h})))}),w&&u&&s.hydrate&&s.hydrate(j.$state,w),v=!0,y=!0,j}function q(e,t,n){let r,i=typeof t==`function`;r=i?n:t;function a(n,a){let o=p();return n||=o?s(v,null):null,n&&_(n),n=g,n._s.has(e)||(i?K(e,t,r,n):G(e,r,n)),n._s.get(e)}return a.$id=e,a}function J(e){let t=e.meta;return!t||typeof t.screenId!=`string`||typeof t.module!=`string`||t.module===`Home`?null:{screenId:t.screenId,path:e.path,module:t.module,section:typeof t.section==`string`?t.section:t.module,title:typeof t.title==`string`?t.title:e.path,order:typeof t.order==`number`?t.order:0,favoriteAllowed:t.favoriteAllowed!==!1,internalOnly:t.internalOnly===!0}}function Y(e){return e.map(J).filter(e=>e!==null).sort((e,t)=>e.module.localeCompare(t.module)||e.order-t.order)}function X(e){let t=new Map;for(let n of e){let e=t.get(n.module)??[];e.push(n),t.set(n.module,e)}return[...t.entries()].map(([e,t])=>({module:e,entries:[...t].sort((e,t)=>e.order-t.order)}))}var Z=`ks.shell.screenPreference.v1`,Q=10,$=20;function ee(){if(typeof window>`u`)return{favoriteScreenIds:[],recents:[]};try{let e=window.localStorage.getItem(Z);if(!e)return{favoriteScreenIds:[],recents:[]};let t=JSON.parse(e);return{favoriteScreenIds:Array.isArray(t.favoriteScreenIds)?t.favoriteScreenIds.slice(0,$):[],recents:Array.isArray(t.recents)?t.recents.slice(0,Q):[]}}catch{return{favoriteScreenIds:[],recents:[]}}}var te=q(`ks-screen-preference`,{state:()=>ee(),actions:{persist(){typeof window>`u`||window.localStorage.setItem(Z,JSON.stringify({favoriteScreenIds:this.favoriteScreenIds,recents:this.recents}))},toggleFavorite(e){let t=this.favoriteScreenIds.indexOf(e);t>=0?this.favoriteScreenIds.splice(t,1):this.favoriteScreenIds=[e,...this.favoriteScreenIds].slice(0,$),this.persist()},isFavorite(e){return this.favoriteScreenIds.includes(e)},recordVisit(e,t){let n=this.recents.filter(t=>t.screenId!==e);this.recents=[{screenId:e,path:t,visitedAt:new Date().toISOString()},...n].slice(0,Q),this.persist()}}});export{q as a,N as i,Y as n,X as r,te as t};