ninegrid2 6.502.0 → 6.503.0

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.
@@ -62,32 +62,24 @@ class aiContainer extends HTMLElement
62
62
 
63
63
  console.log(this.#target, this.#target.tagName);
64
64
 
65
- this.#target.columns.info().forEach(info => {
66
- colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
67
- });
68
-
69
- console.log(colInfo);
65
+ if (this.#target.tagName === "NINE-GRID") {
66
+ this.#target.columns.info().forEach(info => {
67
+ colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
68
+ });
69
+ }
70
+
71
+ return colInfo;
70
72
  };
71
73
 
72
74
  #generateQdrantFilter = async (userInput) => {
73
75
 
74
- //console.log(document.querySelector("nine-grid").body.querySelector(`thead [data-col="6"]`));
75
- //console.log(document.querySelector("nine-grid").columns.info());
76
-
77
- let colInfo = "";
78
- document.querySelector("nine-grid").columns.info().forEach(info => {
79
- colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
80
- });
81
-
82
- //console.log(colInfo);
83
-
84
76
  // Qdrant 필터로 변환하기 위한 프롬프트 엔지니어링
85
77
  // 중요: 실제 컬렉션의 payload 필드와 그 데이터 타입을 정확히 알려줘야 Gemini가 올바른 필터를 생성합니다.
86
78
  const prompt = `
87
79
  자연어 쿼리를 Qdrant 필터 JSON 객체로 변환하는 AI 비서입니다.
88
80
 
89
81
  Qdrant 컬렉션에서 사용 가능한 메타데이터 필드와 유형은 다음과 같습니다.:
90
- ${colInfo}
82
+ ${this.#getColumnInfo()}
91
83
 
92
84
  필터 생성 규칙:
93
85
  1. 위에 제공된 필드만 사용하십시오. 새로운 필드를 만들지 마십시오.
@@ -129,17 +121,17 @@ class aiContainer extends HTMLElement
129
121
  }
130
122
  //filterString = filterString.replaceAll('"value"', '"text"')
131
123
  console.log("Generated Filter String:", filterString);
132
-
124
+ filterString = "a" + filterString;
133
125
  // Gemini가 JSON 모드나 Structured Output을 지원하지 않는 경우, 직접 파싱 시도
134
126
  // 안정적인 JSON 파싱을 위해 'JSON Mode' 또는 Function Calling 사용을 강력히 권장
135
127
  // LangChain의 SelfQueryRetriever를 사용하면 이 부분을 자동화할 수 있습니다.
136
- try {
128
+ //try {
137
129
  return JSON.parse(filterString);
138
- } catch (parseError) {
139
- console.error("Failed to parse filter string as JSON:", parseError);
140
- console.error("String that failed to parse:", filterString);
141
- return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
142
- }
130
+ //} catch (parseError) {
131
+ // console.error("Failed to parse filter string as JSON:", parseError);
132
+ // console.error("String that failed to parse:", filterString);
133
+ // return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
134
+ //}
143
135
 
144
136
  } catch (error) {
145
137
  console.error("Error generating Qdrant filter with Gemini:", error);
@@ -148,15 +140,15 @@ class aiContainer extends HTMLElement
148
140
  }
149
141
 
150
142
  #q1 = () => {
151
- this.#getColumnInfo();
143
+ this.#generateQdrantFilter();
152
144
  };
153
145
 
154
146
  #q2 = () => {
155
- this.#getColumnInfo();
147
+ this.#generateQdrantFilter();
156
148
  };
157
149
 
158
150
  #q3 = () => {
159
- this.#getColumnInfo();
151
+ this.#generateQdrantFilter();
160
152
  };
161
153
 
162
154
  #init = (info) => {
@@ -174,6 +166,12 @@ this.#getColumnInfo();
174
166
  #keydownHandler = (e) => {
175
167
  if (e.key !== "Enter") return;
176
168
 
169
+ if (this.#target.tagName === "NINE-GRID") {
170
+ }
171
+ else {
172
+ throw new Error("지원하지 않는 그리드 입니다.");
173
+ }
174
+
177
175
  e.preventDefault();
178
176
 
179
177
  const question = e.target.value.trim();
@@ -27916,32 +27916,24 @@ class aiContainer extends HTMLElement
27916
27916
 
27917
27917
  console.log(this.#target, this.#target.tagName);
27918
27918
 
27919
- this.#target.columns.info().forEach(info => {
27920
- colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
27921
- });
27922
-
27923
- console.log(colInfo);
27919
+ if (this.#target.tagName === "NINE-GRID") {
27920
+ this.#target.columns.info().forEach(info => {
27921
+ colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
27922
+ });
27923
+ }
27924
+
27925
+ return colInfo;
27924
27926
  };
27925
27927
 
27926
27928
  #generateQdrantFilter = async (userInput) => {
27927
27929
 
27928
- //console.log(document.querySelector("nine-grid").body.querySelector(`thead [data-col="6"]`));
27929
- //console.log(document.querySelector("nine-grid").columns.info());
27930
-
27931
- let colInfo = "";
27932
- document.querySelector("nine-grid").columns.info().forEach(info => {
27933
- colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
27934
- });
27935
-
27936
- //console.log(colInfo);
27937
-
27938
27930
  // Qdrant 필터로 변환하기 위한 프롬프트 엔지니어링
27939
27931
  // 중요: 실제 컬렉션의 payload 필드와 그 데이터 타입을 정확히 알려줘야 Gemini가 올바른 필터를 생성합니다.
27940
27932
  const prompt = `
27941
27933
  자연어 쿼리를 Qdrant 필터 JSON 객체로 변환하는 AI 비서입니다.
27942
27934
 
27943
27935
  Qdrant 컬렉션에서 사용 가능한 메타데이터 필드와 유형은 다음과 같습니다.:
27944
- ${colInfo}
27936
+ ${this.#getColumnInfo()}
27945
27937
 
27946
27938
  필터 생성 규칙:
27947
27939
  1. 위에 제공된 필드만 사용하십시오. 새로운 필드를 만들지 마십시오.
@@ -27983,17 +27975,17 @@ class aiContainer extends HTMLElement
27983
27975
  }
27984
27976
  //filterString = filterString.replaceAll('"value"', '"text"')
27985
27977
  console.log("Generated Filter String:", filterString);
27986
-
27978
+ filterString = "a" + filterString;
27987
27979
  // Gemini가 JSON 모드나 Structured Output을 지원하지 않는 경우, 직접 파싱 시도
27988
27980
  // 안정적인 JSON 파싱을 위해 'JSON Mode' 또는 Function Calling 사용을 강력히 권장
27989
27981
  // LangChain의 SelfQueryRetriever를 사용하면 이 부분을 자동화할 수 있습니다.
27990
- try {
27982
+ //try {
27991
27983
  return JSON.parse(filterString);
27992
- } catch (parseError) {
27993
- console.error("Failed to parse filter string as JSON:", parseError);
27994
- console.error("String that failed to parse:", filterString);
27995
- return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
27996
- }
27984
+ //} catch (parseError) {
27985
+ // console.error("Failed to parse filter string as JSON:", parseError);
27986
+ // console.error("String that failed to parse:", filterString);
27987
+ // return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
27988
+ //}
27997
27989
 
27998
27990
  } catch (error) {
27999
27991
  console.error("Error generating Qdrant filter with Gemini:", error);
@@ -28002,15 +27994,15 @@ class aiContainer extends HTMLElement
28002
27994
  }
28003
27995
 
28004
27996
  #q1 = () => {
28005
- this.#getColumnInfo();
27997
+ this.#generateQdrantFilter();
28006
27998
  };
28007
27999
 
28008
28000
  #q2 = () => {
28009
- this.#getColumnInfo();
28001
+ this.#generateQdrantFilter();
28010
28002
  };
28011
28003
 
28012
28004
  #q3 = () => {
28013
- this.#getColumnInfo();
28005
+ this.#generateQdrantFilter();
28014
28006
  };
28015
28007
 
28016
28008
  #init = (info) => {
@@ -28028,6 +28020,11 @@ this.#getColumnInfo();
28028
28020
  #keydownHandler = (e) => {
28029
28021
  if (e.key !== "Enter") return;
28030
28022
 
28023
+ if (this.#target.tagName === "NINE-GRID") ;
28024
+ else {
28025
+ throw new Error("지원하지 않는 그리드 입니다.");
28026
+ }
28027
+
28031
28028
  e.preventDefault();
28032
28029
 
28033
28030
  const question = e.target.value.trim();
@@ -27914,32 +27914,24 @@ class aiContainer extends HTMLElement
27914
27914
 
27915
27915
  console.log(this.#target, this.#target.tagName);
27916
27916
 
27917
- this.#target.columns.info().forEach(info => {
27918
- colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
27919
- });
27920
-
27921
- console.log(colInfo);
27917
+ if (this.#target.tagName === "NINE-GRID") {
27918
+ this.#target.columns.info().forEach(info => {
27919
+ colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
27920
+ });
27921
+ }
27922
+
27923
+ return colInfo;
27922
27924
  };
27923
27925
 
27924
27926
  #generateQdrantFilter = async (userInput) => {
27925
27927
 
27926
- //console.log(document.querySelector("nine-grid").body.querySelector(`thead [data-col="6"]`));
27927
- //console.log(document.querySelector("nine-grid").columns.info());
27928
-
27929
- let colInfo = "";
27930
- document.querySelector("nine-grid").columns.info().forEach(info => {
27931
- colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
27932
- });
27933
-
27934
- //console.log(colInfo);
27935
-
27936
27928
  // Qdrant 필터로 변환하기 위한 프롬프트 엔지니어링
27937
27929
  // 중요: 실제 컬렉션의 payload 필드와 그 데이터 타입을 정확히 알려줘야 Gemini가 올바른 필터를 생성합니다.
27938
27930
  const prompt = `
27939
27931
  자연어 쿼리를 Qdrant 필터 JSON 객체로 변환하는 AI 비서입니다.
27940
27932
 
27941
27933
  Qdrant 컬렉션에서 사용 가능한 메타데이터 필드와 유형은 다음과 같습니다.:
27942
- ${colInfo}
27934
+ ${this.#getColumnInfo()}
27943
27935
 
27944
27936
  필터 생성 규칙:
27945
27937
  1. 위에 제공된 필드만 사용하십시오. 새로운 필드를 만들지 마십시오.
@@ -27981,17 +27973,17 @@ class aiContainer extends HTMLElement
27981
27973
  }
27982
27974
  //filterString = filterString.replaceAll('"value"', '"text"')
27983
27975
  console.log("Generated Filter String:", filterString);
27984
-
27976
+ filterString = "a" + filterString;
27985
27977
  // Gemini가 JSON 모드나 Structured Output을 지원하지 않는 경우, 직접 파싱 시도
27986
27978
  // 안정적인 JSON 파싱을 위해 'JSON Mode' 또는 Function Calling 사용을 강력히 권장
27987
27979
  // LangChain의 SelfQueryRetriever를 사용하면 이 부분을 자동화할 수 있습니다.
27988
- try {
27980
+ //try {
27989
27981
  return JSON.parse(filterString);
27990
- } catch (parseError) {
27991
- console.error("Failed to parse filter string as JSON:", parseError);
27992
- console.error("String that failed to parse:", filterString);
27993
- return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
27994
- }
27982
+ //} catch (parseError) {
27983
+ // console.error("Failed to parse filter string as JSON:", parseError);
27984
+ // console.error("String that failed to parse:", filterString);
27985
+ // return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
27986
+ //}
27995
27987
 
27996
27988
  } catch (error) {
27997
27989
  console.error("Error generating Qdrant filter with Gemini:", error);
@@ -28000,15 +27992,15 @@ class aiContainer extends HTMLElement
28000
27992
  }
28001
27993
 
28002
27994
  #q1 = () => {
28003
- this.#getColumnInfo();
27995
+ this.#generateQdrantFilter();
28004
27996
  };
28005
27997
 
28006
27998
  #q2 = () => {
28007
- this.#getColumnInfo();
27999
+ this.#generateQdrantFilter();
28008
28000
  };
28009
28001
 
28010
28002
  #q3 = () => {
28011
- this.#getColumnInfo();
28003
+ this.#generateQdrantFilter();
28012
28004
  };
28013
28005
 
28014
28006
  #init = (info) => {
@@ -28026,6 +28018,11 @@ this.#getColumnInfo();
28026
28018
  #keydownHandler = (e) => {
28027
28019
  if (e.key !== "Enter") return;
28028
28020
 
28021
+ if (this.#target.tagName === "NINE-GRID") ;
28022
+ else {
28023
+ throw new Error("지원하지 않는 그리드 입니다.");
28024
+ }
28025
+
28029
28026
  e.preventDefault();
28030
28027
 
28031
28028
  const question = e.target.value.trim();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ninegrid2",
3
3
  "type": "module",
4
- "version": "6.502.0",
4
+ "version": "6.503.0",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
7
7
  "import": "./dist/index.js",
@@ -62,32 +62,24 @@ class aiContainer extends HTMLElement
62
62
 
63
63
  console.log(this.#target, this.#target.tagName);
64
64
 
65
- this.#target.columns.info().forEach(info => {
66
- colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
67
- });
68
-
69
- console.log(colInfo);
65
+ if (this.#target.tagName === "NINE-GRID") {
66
+ this.#target.columns.info().forEach(info => {
67
+ colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
68
+ });
69
+ }
70
+
71
+ return colInfo;
70
72
  };
71
73
 
72
74
  #generateQdrantFilter = async (userInput) => {
73
75
 
74
- //console.log(document.querySelector("nine-grid").body.querySelector(`thead [data-col="6"]`));
75
- //console.log(document.querySelector("nine-grid").columns.info());
76
-
77
- let colInfo = "";
78
- document.querySelector("nine-grid").columns.info().forEach(info => {
79
- colInfo += `- "${info.name}": ${info.desc}, ${info.type}\n`;
80
- });
81
-
82
- //console.log(colInfo);
83
-
84
76
  // Qdrant 필터로 변환하기 위한 프롬프트 엔지니어링
85
77
  // 중요: 실제 컬렉션의 payload 필드와 그 데이터 타입을 정확히 알려줘야 Gemini가 올바른 필터를 생성합니다.
86
78
  const prompt = `
87
79
  자연어 쿼리를 Qdrant 필터 JSON 객체로 변환하는 AI 비서입니다.
88
80
 
89
81
  Qdrant 컬렉션에서 사용 가능한 메타데이터 필드와 유형은 다음과 같습니다.:
90
- ${colInfo}
82
+ ${this.#getColumnInfo()}
91
83
 
92
84
  필터 생성 규칙:
93
85
  1. 위에 제공된 필드만 사용하십시오. 새로운 필드를 만들지 마십시오.
@@ -129,17 +121,17 @@ class aiContainer extends HTMLElement
129
121
  }
130
122
  //filterString = filterString.replaceAll('"value"', '"text"')
131
123
  console.log("Generated Filter String:", filterString);
132
-
124
+ filterString = "a" + filterString;
133
125
  // Gemini가 JSON 모드나 Structured Output을 지원하지 않는 경우, 직접 파싱 시도
134
126
  // 안정적인 JSON 파싱을 위해 'JSON Mode' 또는 Function Calling 사용을 강력히 권장
135
127
  // LangChain의 SelfQueryRetriever를 사용하면 이 부분을 자동화할 수 있습니다.
136
- try {
128
+ //try {
137
129
  return JSON.parse(filterString);
138
- } catch (parseError) {
139
- console.error("Failed to parse filter string as JSON:", parseError);
140
- console.error("String that failed to parse:", filterString);
141
- return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
142
- }
130
+ //} catch (parseError) {
131
+ // console.error("Failed to parse filter string as JSON:", parseError);
132
+ // console.error("String that failed to parse:", filterString);
133
+ // return null; // 파싱 실패 시 null 반환 또는 적절한 에러 처리
134
+ //}
143
135
 
144
136
  } catch (error) {
145
137
  console.error("Error generating Qdrant filter with Gemini:", error);
@@ -148,15 +140,15 @@ class aiContainer extends HTMLElement
148
140
  }
149
141
 
150
142
  #q1 = () => {
151
- this.#getColumnInfo();
143
+ this.#generateQdrantFilter();
152
144
  };
153
145
 
154
146
  #q2 = () => {
155
- this.#getColumnInfo();
147
+ this.#generateQdrantFilter();
156
148
  };
157
149
 
158
150
  #q3 = () => {
159
- this.#getColumnInfo();
151
+ this.#generateQdrantFilter();
160
152
  };
161
153
 
162
154
  #init = (info) => {
@@ -174,6 +166,12 @@ this.#getColumnInfo();
174
166
  #keydownHandler = (e) => {
175
167
  if (e.key !== "Enter") return;
176
168
 
169
+ if (this.#target.tagName === "NINE-GRID") {
170
+ }
171
+ else {
172
+ throw new Error("지원하지 않는 그리드 입니다.");
173
+ }
174
+
177
175
  e.preventDefault();
178
176
 
179
177
  const question = e.target.value.trim();