@logan-jun/cd1-rag-chat 0.4.2 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{arc-pCRNGa7W.js → arc-B4U-Avgi.js} +1 -1
- package/dist/assets/{architectureDiagram-3BPJPVTR-BT3zjf2O.js → architectureDiagram-3BPJPVTR-DDEsZhPK.js} +1 -1
- package/dist/assets/{blockDiagram-GPEHLZMM-DiCk9kRh.js → blockDiagram-GPEHLZMM-BTSW2cWw.js} +1 -1
- package/dist/assets/{c4Diagram-AAUBKEIU-CLHkauF7.js → c4Diagram-AAUBKEIU-C66OS2xX.js} +1 -1
- package/dist/assets/channel-CvR3K-9g.js +1 -0
- package/dist/assets/{chunk-2J33WTMH-CXuH0ZJ2.js → chunk-2J33WTMH-Eu3QIkBc.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-JBWjMXmI.js → chunk-4BX2VUAB-Yawm9ygp.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-DrdwYbrF.js → chunk-55IACEB6-Dv-6ORrv.js} +1 -1
- package/dist/assets/{chunk-727SXJPM-EJreahwy.js → chunk-727SXJPM-zChXxdZd.js} +1 -1
- package/dist/assets/{chunk-AQP2D5EJ-BSuOE8Fl.js → chunk-AQP2D5EJ-DX7enhRK.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-DytmfhVl.js → chunk-FMBD7UC4-BpFEh5ON.js} +1 -1
- package/dist/assets/{chunk-ND2GUHAM-34C1YW85.js → chunk-ND2GUHAM-BMvLxQ4T.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-CZc9G__T.js → chunk-QZHKN3VN-B5kr1SYt.js} +1 -1
- package/dist/assets/classDiagram-4FO5ZUOK-BtZRJhl2.js +1 -0
- package/dist/assets/classDiagram-v2-Q7XG4LA2-BtZRJhl2.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-BnA4F643.js → cose-bilkent-S5V4N54A-CNVpJdou.js} +1 -1
- package/dist/assets/{dagre-BM42HDAG-C9p-bhyW.js → dagre-BM42HDAG-CsBUsEMK.js} +1 -1
- package/dist/assets/{diagram-2AECGRRQ-B6FruBT9.js → diagram-2AECGRRQ-DIp4lXdH.js} +1 -1
- package/dist/assets/{diagram-5GNKFQAL-CC-X1vrW.js → diagram-5GNKFQAL-C8IU4-yd.js} +1 -1
- package/dist/assets/{diagram-KO2AKTUF-5LSyCa2k.js → diagram-KO2AKTUF-BoRcUCyn.js} +1 -1
- package/dist/assets/{diagram-LMA3HP47-NCIkzHXK.js → diagram-LMA3HP47-C7G6HIK5.js} +1 -1
- package/dist/assets/{diagram-OG6HWLK6-B2ml3GRH.js → diagram-OG6HWLK6-C1FQ2kEr.js} +1 -1
- package/dist/assets/{erDiagram-TEJ5UH35-DPN3MDsL.js → erDiagram-TEJ5UH35-C8fnVVYl.js} +1 -1
- package/dist/assets/{flowDiagram-I6XJVG4X-CRuJQi7u.js → flowDiagram-I6XJVG4X-0ntRTwK6.js} +1 -1
- package/dist/assets/{ganttDiagram-6RSMTGT7-D6D_Y_Y7.js → ganttDiagram-6RSMTGT7-CKvFTIqa.js} +1 -1
- package/dist/assets/{gitGraphDiagram-PVQCEYII-82gEHn57.js → gitGraphDiagram-PVQCEYII-DcCAuPC1.js} +1 -1
- package/dist/assets/index-D3w6O35p.js +94 -0
- package/dist/assets/index-DsBn3nLl.css +1 -0
- package/dist/assets/{infoDiagram-5YYISTIA-BARiYn_h.js → infoDiagram-5YYISTIA-jWMJdUvA.js} +1 -1
- package/dist/assets/{ishikawaDiagram-YF4QCWOH-B_WSce8w.js → ishikawaDiagram-YF4QCWOH-DhKLL9BY.js} +1 -1
- package/dist/assets/{journeyDiagram-JHISSGLW-CL3MtaGa.js → journeyDiagram-JHISSGLW-C3AVI5Od.js} +1 -1
- package/dist/assets/{kanban-definition-UN3LZRKU-Cksw8W8r.js → kanban-definition-UN3LZRKU-BKLOSsBC.js} +1 -1
- package/dist/assets/{linear-KbP41E8H.js → linear-DENHYFA4.js} +1 -1
- package/dist/assets/{mermaid.core-D_mFRtuY.js → mermaid.core-BlsD1xl_.js} +4 -4
- package/dist/assets/{mindmap-definition-RKZ34NQL-CvTMPwp2.js → mindmap-definition-RKZ34NQL-BKt8GnjY.js} +1 -1
- package/dist/assets/{pieDiagram-4H26LBE5-fBzvwZIV.js → pieDiagram-4H26LBE5-D_BCKw1H.js} +1 -1
- package/dist/assets/{quadrantDiagram-W4KKPZXB-DOq7H6qv.js → quadrantDiagram-W4KKPZXB-CBxJJlmT.js} +1 -1
- package/dist/assets/{requirementDiagram-4Y6WPE33-6dvh9aRE.js → requirementDiagram-4Y6WPE33-BSobgFym.js} +1 -1
- package/dist/assets/{sankeyDiagram-5OEKKPKP-BZRa0Yp5.js → sankeyDiagram-5OEKKPKP-HF-6bIpZ.js} +1 -1
- package/dist/assets/{sequenceDiagram-3UESZ5HK-DoxI6gHW.js → sequenceDiagram-3UESZ5HK-CO_0G9rB.js} +1 -1
- package/dist/assets/{stateDiagram-AJRCARHV-Dil73wf7.js → stateDiagram-AJRCARHV-CQU8ufWT.js} +1 -1
- package/dist/assets/stateDiagram-v2-BHNVJYJU-CpDr4c8R.js +1 -0
- package/dist/assets/{timeline-definition-PNZ67QCA-BybP4fDM.js → timeline-definition-PNZ67QCA-ICYmcxv-.js} +1 -1
- package/dist/assets/{vennDiagram-CIIHVFJN-CIg8OwuQ.js → vennDiagram-CIIHVFJN-DaGiVTc4.js} +1 -1
- package/dist/assets/{wardley-L42UT6IY-pXxmrIkF.js → wardley-L42UT6IY-C8irHRgd.js} +1 -1
- package/dist/assets/{wardleyDiagram-YWT4CUSO-DcjDNJ4g.js → wardleyDiagram-YWT4CUSO-CY17Fgpj.js} +1 -1
- package/dist/assets/{xychartDiagram-2RQKCTM6-Y9DRV4WF.js → xychartDiagram-2RQKCTM6-fHJTqJnH.js} +1 -1
- package/dist/index.html +2 -2
- package/host-integration/RemoteModule.vue +1 -23
- package/package.json +1 -1
- package/dist/assets/channel-uh6PxTgh.js +0 -1
- package/dist/assets/classDiagram-4FO5ZUOK-D7qIjrQs.js +0 -1
- package/dist/assets/classDiagram-v2-Q7XG4LA2-D7qIjrQs.js +0 -1
- package/dist/assets/index-CNMccJ44.css +0 -1
- package/dist/assets/index-DS9nwwVz.js +0 -94
- package/dist/assets/stateDiagram-v2-BHNVJYJU-Cj5G8vUU.js +0 -1
- package/host-integration/HOST_INTEGRATION.md +0 -123
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
# 호스트 통합 가이드
|
|
2
|
-
|
|
3
|
-
`@logan-jun/cd1-rag-chat` 을 호스트 포탈에 iframe 으로 임베드할 때 환경별 깨짐 없이 동작하도록 하는 권장 패턴.
|
|
4
|
-
|
|
5
|
-
## 핵심 원칙
|
|
6
|
-
|
|
7
|
-
iframe height 를 **정적 `calc(100vh - 64px)` 같은 값으로 잡지 마세요.**
|
|
8
|
-
|
|
9
|
-
- 헤더 높이가 환경/사용자 zoom/줄바꿈/banner 추가 등으로 바뀌면 모두 깨집니다
|
|
10
|
-
- 모바일 브라우저 상단바는 스크롤에 따라 동적으로 변합니다
|
|
11
|
-
- iframe 은 자기 외부(호스트 chrome)를 모르기 때문에 자체적으로 보정 불가
|
|
12
|
-
|
|
13
|
-
## 권장: Flex Layout + `height: 100%` (모드: `fill`)
|
|
14
|
-
|
|
15
|
-
호스트 페이지 전체를 flex column 으로 두고, iframe 컨테이너는 `flex: 1`. iframe 자체는 `height: 100%`. → 헤더가 어떻게 커지든 iframe 이 **남는 영역 자동 차지**. JS 메시지, calc, 환경별 분기 모두 불필요.
|
|
16
|
-
|
|
17
|
-
### 최소 예시 (Plain HTML)
|
|
18
|
-
|
|
19
|
-
```html
|
|
20
|
-
<style>
|
|
21
|
-
html, body { height: 100%; margin: 0; }
|
|
22
|
-
.host-shell {
|
|
23
|
-
display: flex;
|
|
24
|
-
flex-direction: column;
|
|
25
|
-
height: 100vh;
|
|
26
|
-
}
|
|
27
|
-
.host-header { flex: 0 0 auto; padding: 12px 24px; background: #24292f; color: #fff; }
|
|
28
|
-
.host-body { flex: 1; min-height: 0; } /* ← min-height:0 가 핵심 */
|
|
29
|
-
.host-body iframe { width: 100%; height: 100%; border: 0; display: block; }
|
|
30
|
-
</style>
|
|
31
|
-
|
|
32
|
-
<div class="host-shell">
|
|
33
|
-
<header class="host-header">포탈 헤더</header>
|
|
34
|
-
<main class="host-body">
|
|
35
|
-
<iframe src="/embedded/rag-chat/index.html"></iframe>
|
|
36
|
-
</main>
|
|
37
|
-
</div>
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
핵심:
|
|
41
|
-
- `.host-shell`: `display: flex; flex-direction: column; height: 100vh`
|
|
42
|
-
- 헤더: `flex: 0 0 auto` (자기 크기 그대로)
|
|
43
|
-
- iframe 컨테이너: `flex: 1; min-height: 0` (남는 공간 차지, **`min-height: 0` 잊지 마세요** — flex 자식의 default `min-height: auto` 가 overflow 만들 수 있습니다)
|
|
44
|
-
- iframe: `height: 100%`
|
|
45
|
-
|
|
46
|
-
### Vue + RemoteModule.vue 사용 시
|
|
47
|
-
|
|
48
|
-
```vue
|
|
49
|
-
<template>
|
|
50
|
-
<div class="host-shell">
|
|
51
|
-
<header class="host-header">포탈 헤더</header>
|
|
52
|
-
<main class="host-body">
|
|
53
|
-
<RemoteModule
|
|
54
|
-
src="/embedded/rag-chat/index.html"
|
|
55
|
-
:token="keycloakToken"
|
|
56
|
-
:base-url="apiBaseUrl"
|
|
57
|
-
height-mode="fill" <!-- ← default. 생략 가능 -->
|
|
58
|
-
/>
|
|
59
|
-
</main>
|
|
60
|
-
</div>
|
|
61
|
-
</template>
|
|
62
|
-
|
|
63
|
-
<style scoped>
|
|
64
|
-
.host-shell {
|
|
65
|
-
display: flex;
|
|
66
|
-
flex-direction: column;
|
|
67
|
-
height: 100vh;
|
|
68
|
-
}
|
|
69
|
-
.host-header { flex: 0 0 auto; }
|
|
70
|
-
.host-body { flex: 1; min-height: 0; }
|
|
71
|
-
</style>
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
## 대안: 콘텐츠 사이즈 추종 (모드: `content`)
|
|
75
|
-
|
|
76
|
-
- 사이드바 카드, 인라인 임베드처럼 **iframe 이 자기 콘텐츠 크기만큼 자라야** 하는 경우
|
|
77
|
-
- iframe 콘텐츠의 `documentElement.scrollHeight` 를 postMessage 로 받아 동적으로 px 조절
|
|
78
|
-
- 단점: chat 처럼 길이가 무한히 자라는 콘텐츠는 부적합 (페이지 자체가 무한히 자람)
|
|
79
|
-
|
|
80
|
-
```vue
|
|
81
|
-
<RemoteModule
|
|
82
|
-
src="/embedded/sample-card/index.html"
|
|
83
|
-
height-mode="content"
|
|
84
|
-
:min-height="300"
|
|
85
|
-
/>
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
## 안티패턴 (피해주세요)
|
|
89
|
-
|
|
90
|
-
```css
|
|
91
|
-
/* ❌ 정적 calc — 환경/zoom/banner 마다 깨짐 */
|
|
92
|
-
iframe { height: calc(100vh - 64px); }
|
|
93
|
-
|
|
94
|
-
/* ❌ 100vh 직접 — 헤더 높이만큼 페이지 스크롤 발생 */
|
|
95
|
-
iframe { height: 100vh; }
|
|
96
|
-
|
|
97
|
-
/* ❌ 고정 px — 작은 화면에서 잘림, 큰 화면에서 여백 */
|
|
98
|
-
iframe { height: 800px; }
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
## 트러블슈팅
|
|
102
|
-
|
|
103
|
-
### "입력창이 안 보이고 페이지에 세로 스크롤이 생긴다"
|
|
104
|
-
→ iframe height 가 호스트 viewport 보다 크게 잡힘. 위 flex 패턴으로 변경.
|
|
105
|
-
|
|
106
|
-
### "iframe 이 너무 작아서 거의 안 보인다"
|
|
107
|
-
→ 부모 컨테이너가 `min-height: 0` 없이 flex 자식인 경우, 또는 부모 자체에 height 가 없는 경우. 부모부터 위로 올라가며 height/flex 체인 확인.
|
|
108
|
-
|
|
109
|
-
### "iframe 안 메시지 영역이 viewport 보다 짧다"
|
|
110
|
-
→ iframe 안의 `App.vue` 의 `.cp-root` 는 `height: 100%` 로 부모 따라가는 방식. iframe element 자체 height 가 정확하면 자동으로 채워집니다.
|
|
111
|
-
|
|
112
|
-
## 우리 측 보장사항
|
|
113
|
-
|
|
114
|
-
- `.cp-root: height: 100%` — iframe element 의 height 를 그대로 따름
|
|
115
|
-
- `min-height: 400px` — 호스트가 극단적으로 작게 줘도 최소 보장
|
|
116
|
-
- `flex column` + `.cp-main: flex 1, overflow-y auto` + ChatInput 항상 표시
|
|
117
|
-
- bridge.ts 의 `height` 메시지는 `heightMode='content'` 사용 시만 활용됨
|
|
118
|
-
|
|
119
|
-
## 변경 이력
|
|
120
|
-
|
|
121
|
-
- 0.4.2: `RemoteModule.vue` 에 `heightMode` prop 추가 (`fill` 기본). iframe `height: 100%`. 정적 calc 패턴 폐기 권장
|
|
122
|
-
- 0.4.1: bridge.ts 의 origin allowlist 추가 (`hyundaicard.com` 화이트리스트)
|
|
123
|
-
- 0.4.0: 초기 chat 모듈 publish
|