Files
KArtSell.Aegis/deployment/phase3-release/host/wwwroot/assets/components-KD31URIh.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.2 KiB
JavaScript

import{A as e,B as t,C as n,I as r,O as i,P as a,St as o,_ as s,bt as c,c as l,h as u,j as d,l as f,o as p,p as m,r as h,rt as g,s as _,u as v,yt as y}from"./runtime-core.esm-bundler-A2Q6NZG4.js";import{t as b}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{n as x}from"./useUiAdapter-DDuKOUtM.js";import"./KsDialog-BrtbjhuK.js";import"./KsInlineMessage-t_pxFiJO.js";var S=[`data-invalid`],C=[`for`],w={key:0,"aria-hidden":`true`},T=[`id`,`role`],E=b(u({__name:`FieldShell`,props:{label:{},inputId:{},required:{type:Boolean},error:{},help:{}},setup(e){let t=e,n=r(),a=p(()=>t.inputId??`ks-field-${n}`),s=p(()=>t.error||t.help?`${a.value}-message`:void 0);return(t,n)=>(i(),v(`div`,{class:`ks-field-shell`,"data-invalid":!!e.error||void 0},[_(`label`,{for:a.value},[m(o(e.label)+` `,1),e.required?(i(),v(`span`,w,`*`)):f(``,!0)],8,C),d(t.$slots,`default`,{inputId:a.value,describedBy:s.value,invalid:!!e.error,required:!!e.required},void 0,!0),e.error||e.help?(i(),v(`small`,{key:0,id:s.value,class:y({"ks-danger-text":e.error}),role:e.error?`alert`:void 0},o(e.error??e.help),11,T)):f(``,!0)],8,S))}}),[[`__scopeId`,`data-v-30fbd7c2`]]),D=u({__name:`KsTextField`,props:{modelValue:{},label:{},inputId:{},disabled:{type:Boolean},required:{type:Boolean},error:{},help:{},placeholder:{}},emits:[`update:modelValue`,`blur`],setup(e,{emit:n}){let r=n,o=x();return(n,s)=>(i(),l(E,{label:e.label,"input-id":e.inputId,required:e.required,error:e.error,help:e.help},{default:t(t=>[(i(),l(a(g(o).components.TextField),{"input-id":t.inputId,"model-value":e.modelValue,disabled:e.disabled,invalid:t.invalid,placeholder:e.placeholder,"aria-describedby":t.describedBy,"aria-required":t.required||void 0,"onUpdate:modelValue":s[0]||=e=>r(`update:modelValue`,e),onBlur:s[1]||=e=>r(`blur`,e)},null,40,[`input-id`,`model-value`,`disabled`,`invalid`,`placeholder`,`aria-describedby`,`aria-required`]))]),_:1},8,[`label`,`input-id`,`required`,`error`,`help`]))}}),O=u({__name:`KsSelect`,props:{modelValue:{},label:{},options:{},inputId:{},disabled:{type:Boolean},required:{type:Boolean},error:{},help:{},placeholder:{}},emits:[`update:modelValue`,`blur`],setup(e,{emit:n}){let r=n,o=x();return(n,s)=>(i(),l(E,{label:e.label,"input-id":e.inputId,required:e.required,error:e.error,help:e.help},{default:t(t=>[(i(),l(a(g(o).components.Select),{"input-id":t.inputId,"model-value":e.modelValue,options:e.options,disabled:e.disabled,invalid:t.invalid,placeholder:e.placeholder,"aria-describedby":t.describedBy,"aria-required":t.required||void 0,"onUpdate:modelValue":s[0]||=e=>r(`update:modelValue`,e),onBlur:s[1]||=e=>r(`blur`,e)},null,40,[`input-id`,`model-value`,`options`,`disabled`,`invalid`,`placeholder`,`aria-describedby`,`aria-required`]))]),_:1},8,[`label`,`input-id`,`required`,`error`,`help`]))}}),k=[`for`],A=b(u({__name:`KsCheckbox`,props:{modelValue:{type:Boolean},label:{},inputId:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let n=e,s=t,c=x(),u=r(),d=p(()=>n.inputId??`ks-check-${u}`);return(t,n)=>(i(),v(`label`,{class:`ks-check`,for:d.value},[(i(),l(a(g(c).components.Checkbox),{"input-id":d.value,"model-value":e.modelValue,disabled:e.disabled,"onUpdate:modelValue":n[0]||=e=>s(`update:modelValue`,e)},null,8,[`input-id`,`model-value`,`disabled`])),_(`span`,null,o(e.label),1)],8,k))}}),[[`__scopeId`,`data-v-4b27b179`]]),j=u({__name:`KsDateField`,props:{modelValue:{},label:{},inputId:{},disabled:{type:Boolean},required:{type:Boolean},error:{},help:{},min:{},max:{}},emits:[`update:modelValue`,`blur`],setup(e,{emit:n}){let r=n,o=x();return(n,s)=>(i(),l(E,{label:e.label,"input-id":e.inputId,required:e.required,error:e.error,help:e.help},{default:t(t=>[(i(),l(a(g(o).components.DateField),{"input-id":t.inputId,"model-value":e.modelValue,disabled:e.disabled,invalid:t.invalid,min:e.min,max:e.max,"aria-describedby":t.describedBy,"aria-required":t.required||void 0,"onUpdate:modelValue":s[0]||=e=>r(`update:modelValue`,e),onBlur:s[1]||=e=>r(`blur`,e)},null,40,[`input-id`,`model-value`,`disabled`,`invalid`,`min`,`max`,`aria-describedby`,`aria-required`]))]),_:1},8,[`label`,`input-id`,`required`,`error`,`help`]))}}),M=u({__name:`KsNumberField`,props:{modelValue:{},label:{},inputId:{},disabled:{type:Boolean},required:{type:Boolean},error:{},help:{},min:{},max:{},minFractionDigits:{},maxFractionDigits:{}},emits:[`update:modelValue`,`blur`],setup(e,{emit:n}){let r=n,o=x();return(n,s)=>(i(),l(E,{label:e.label,"input-id":e.inputId,required:e.required,error:e.error,help:e.help},{default:t(t=>[(i(),l(a(g(o).components.NumberField),{"input-id":t.inputId,"model-value":e.modelValue,disabled:e.disabled,invalid:t.invalid,min:e.min,max:e.max,"min-fraction-digits":e.minFractionDigits,"max-fraction-digits":e.maxFractionDigits,"aria-describedby":t.describedBy,"aria-required":t.required||void 0,"onUpdate:modelValue":s[0]||=e=>r(`update:modelValue`,e),onBlur:s[1]||=e=>r(`blur`,e)},null,40,[`input-id`,`model-value`,`disabled`,`invalid`,`min`,`max`,`min-fraction-digits`,`max-fraction-digits`,`aria-describedby`,`aria-required`]))]),_:1},8,[`label`,`input-id`,`required`,`error`,`help`]))}}),N=u({__name:`KsStatusTag`,props:{value:{},severity:{},iconLabel:{}},setup(e){let t=x();return(e,n)=>(i(),l(a(g(t).components.StatusTag),c(s(e.$props)),null,16))}}),P=u({__name:`KsDataGrid`,props:{rows:{},columns:{},loading:{type:Boolean,default:!1},height:{default:`32rem`},rowSelection:{default:`single`}},emits:[`rowSelected`],setup(e,{emit:t}){let r=t,o=x();return(e,t)=>(i(),l(a(g(o).components.DataGrid),n(e.$props,{onRowSelected:t[0]||=e=>r(`rowSelected`,e)}),null,16))}}),F=[`data-columns`,`aria-label`],I=b(u({__name:`KsFormGrid`,props:{columns:{default:2},ariaLabel:{default:`입력 항목`}},setup(e){return(t,n)=>(i(),v(`div`,{class:`ks-form-grid`,"data-columns":e.columns,role:`group`,"aria-label":e.ariaLabel},[d(t.$slots,`default`,{},void 0,!0)],8,F))}}),[[`__scopeId`,`data-v-4d1eed72`]]),L=[`aria-labelledby`],R={class:`ks-form-section__header`},z=[`id`],B={key:0},V={key:1,class:`ks-form-section__actions`},H={class:`ks-form-section__content`},U=b(u({__name:`KsFormSection`,props:{title:{},description:{default:``},labelledBy:{}},setup(e){return(t,n)=>(i(),v(`section`,{class:`ks-form-section`,"aria-labelledby":e.labelledBy},[_(`header`,R,[_(`h2`,{id:e.labelledBy},o(e.title),9,z),e.description?(i(),v(`p`,B,o(e.description),1)):f(``,!0),t.$slots.actions?(i(),v(`div`,V,[d(t.$slots,`actions`,{},void 0,!0)])):f(``,!0)]),_(`div`,H,[d(t.$slots,`default`,{},void 0,!0)])],8,L))}}),[[`__scopeId`,`data-v-28fbf717`]]),W=[`data-span`],G=b(u({__name:`KsFormSpan`,props:{span:{default:`cell`}},setup(e){return(t,n)=>(i(),v(`div`,{class:`ks-form-span`,"data-span":e.span},[d(t.$slots,`default`,{},void 0,!0)],8,W))}}),[[`__scopeId`,`data-v-d754c146`]]),K={key:0,class:`ks-validation-summary`,role:`alert`,"aria-live":`assertive`},q=b(u({__name:`KsValidationSummary`,props:{errors:{},title:{}},setup(t){return(n,r)=>t.errors.length?(i(),v(`section`,K,[_(`strong`,null,o(t.title??`저장할 수 없습니다. ${t.errors.length}개 항목을 확인하세요.`),1),_(`ul`,null,[(i(!0),v(h,null,e(t.errors,(e,t)=>(i(),v(`li`,{key:`${e.field??`form`}-${t}`},o(e.message),1))),128))])])):f(``,!0)}}),[[`__scopeId`,`data-v-be84c2cc`]]);export{P as a,j as c,D as d,I as i,A as l,G as n,N as o,U as r,M as s,q as t,O as u};