Skip to content

Commit 4064268

Browse files
authored
Merge pull request #63 from GPS-Solutions/main
Merge main into dev
2 parents 16e2983 + 95f222f commit 4064268

File tree

12 files changed

+69
-187
lines changed

12 files changed

+69
-187
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ New features:
1717
- Switched to using llama_index.core.node_parser.SentenceSplitter for chunking by default
1818
- Updated default query generation model to Gemini Flash 1.5 - was set to Palm2
1919
- Added Microsoft login in React frontend
20+
- Add timestamps to logging
2021

2122
### Fixes
2223
- Fixed download of PDFs from scraped sites
24+
- Fixed deletion of query engines in React frontend; made hard delete the default
2325

2426

2527
## v0.3.2

components/common/src/common/models/base_model.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,7 @@ def soft_delete_by_id(cls, object_id, by_user=None):
177177
obj = cls.collection.filter("id", "in",
178178
[object_id]).filter("deleted_at_timestamp",
179179
"==", None).get()
180-
if obj is None:
181-
raise ResourceNotFoundException(
182-
f"{cls.collection_name} with id {object_id} is not found")
183-
else:
180+
if obj is not None:
184181
obj.deleted_at_timestamp = datetime.datetime.utcnow()
185182
obj.deleted_by = by_user
186183
obj.update()

components/common/src/common/utils/logging_handler.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def __init__(self, name):
3939
module_name = f"{folder}/{filename}"
4040
self.logger = logging.getLogger(module_name)
4141
handler = logging.StreamHandler(sys.stdout)
42-
log_format = "%(levelname)s: [%(name)s:%(lineno)d - " \
42+
log_format = "%(asctime)s:%(levelname)s: [%(name)s:%(lineno)d - " \
4343
"%(funcName)s()] %(message)s"
4444
handler.setFormatter(logging.Formatter(log_format))
4545
self.logger.addHandler(handler)

components/frontend_react/webapp/package-lock.json

+11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/frontend_react/webapp/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
"@iconify-json/logos": "^1.1.37",
5656
"@iconify-json/material-symbols": "^1.1.72",
5757
"@iconify-json/mdi": "^1.1.54",
58+
"@iconify-json/svg-spinners": "^1.2.1",
5859
"@testing-library/jest-dom": "^6.1.3",
5960
"@testing-library/react": "^14.0.0",
6061
"@types/bluebird": "^3.5.39",

components/frontend_react/webapp/src/routes/AppRouter.tsx

-4
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,6 @@ export const AuthAppRouter: React.FunctionComponent<AuthAppRouterProps> = ({
6161
path="/queryengines/admin"
6262
element={<QueryEngineAdmin token={token!} />}
6363
/>
64-
<Route
65-
path="/queryengines/detail"
66-
element={<QueryEngineDetail token={token!} />}
67-
/>
6864
<Route path="/about" element={<About />} />
6965
<Route path="/aichat" element={<AIChatRoute />} />
7066
<Route path="/aiquery" element={<AIQueryRoute />} />

components/frontend_react/webapp/src/routes/QueryEngineDetail.tsx

-156
This file was deleted.

components/frontend_react/webapp/src/routes/QueryEngineEdit.tsx

+35-11
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ interface IQueryEngineProps {
3232
}
3333

3434
const QueryEngineEdit: React.FC<IQueryEngineProps> = ({ token }) => {
35+
const [isModalOpen, setIsModalOpen] = useState(false);
36+
const [activeJob, setActiveJob] = useState(false)
3537
const [formError, setFormError] = useState(false)
3638
const [formSubmitted, setFormSubmitted] = useState(false)
3739
const [deleting, setDeleting] = useState(false)
@@ -45,10 +47,20 @@ const QueryEngineEdit: React.FC<IQueryEngineProps> = ({ token }) => {
4547

4648
const [queryEngines, setQueryEngines] = useState<QueryEngine[]>([])
4749
const [queryEngine, setQueryEngine] = useState<QueryEngine | null>(null)
48-
4950
const [createEngineIsMultimodal, setCreateEngineIsMultimodal] = useState(false)
5051
const [createEngineEmbeddingOptions, setCreateEngineEmbeddingOptions] = useState<{ option: string; value: string; }[]>([])
5152

53+
const openDeleteModal = () => {
54+
setIsModalOpen(true)
55+
const modalToggle = document.getElementById('delete-queryEngine-modal')
56+
modalToggle.checked = true
57+
}
58+
const closeDeleteModal = () => {
59+
setIsModalOpen(false)
60+
const modalToggle = document.getElementById('delete-queryEngine-modal')
61+
modalToggle.checked = false
62+
}
63+
5264
const { isLoading, data: engineList } = useQuery(
5365
["QueryEngines"],
5466
fetchAllEngines(token),
@@ -123,8 +135,9 @@ const QueryEngineEdit: React.FC<IQueryEngineProps> = ({ token }) => {
123135

124136
const deleteQueryEngineDetails = async () => {
125137
if (!queryEngine) throw new Error("No id of queryEngine to delete")
126-
setDeleting(true)
127138

139+
setDeleting(true)
140+
setActiveJob(true)
128141
deleteQEngine.mutate(
129142
queryEngine,
130143
{
@@ -136,13 +149,24 @@ const QueryEngineEdit: React.FC<IQueryEngineProps> = ({ token }) => {
136149
durationMs: 4000,
137150
})
138151
}
152+
setDeleting(false)
153+
setActiveJob(false)
154+
closeDeleteModal()
155+
navigate("/queryengines")
139156
},
140157
onError: () => {
141-
// TODO
158+
setAlert({
159+
message: "Error occurred deleting",
160+
type: ALERT_TYPE.ERROR,
161+
durationMs: 4000,
162+
})
163+
setDeleting(false)
164+
setActiveJob(false)
165+
closeDeleteModal()
166+
navigate("/queryengines/admin")
142167
}
143168
}
144169
)
145-
navigate("/queryengines/admin")
146170
}
147171

148172
useEffect(() => {
@@ -204,12 +228,9 @@ const QueryEngineEdit: React.FC<IQueryEngineProps> = ({ token }) => {
204228
View Details
205229
</button>
206230
</Link>
207-
<label
208-
htmlFor="delete-queryEngine-modal"
209-
className="absolute right-0 top-0 z-10"
210-
>
231+
<button className="absolute right-0 top-0 z-10" onClick={openDeleteModal}>
211232
<TrashIcon className="text-dim hover:text-normal w-8 cursor-pointer text-error transition" />
212-
</label>
233+
</button>
213234
</>
214235
)}
215236
<div className="flex flex-col">
@@ -247,9 +268,12 @@ const QueryEngineEdit: React.FC<IQueryEngineProps> = ({ token }) => {
247268
</h3>
248269
<p className="py-4">This action cannot be undone</p>
249270
<div className="modal-action">
250-
<label htmlFor="delete-queryEngine-modal" className="btn btn-outline">
271+
{activeJob && (
272+
<i className="i-svg-spinners-180-ring text-info group-hover:text-base-content/100 transition h-6 w-6 shrink-0"></i>
273+
)}
274+
<button className="btn btn-outline" onClick={closeDeleteModal}>
251275
Cancel
252-
</label>
276+
</button>
253277
<button
254278
className="btn btn-error"
255279
disabled={deleting}

components/llm_service/src/routes/chat.py

+2
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ def get_chat_llm_list(user_data: dict = Depends(validate_token),
7474
"data": user_enabled_llms
7575
}
7676
except Exception as e:
77+
Logger.error(e)
78+
Logger.error(traceback.print_exc())
7779
raise InternalServerError(str(e)) from e
7880

7981

components/llm_service/src/routes/query.py

+9-7
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,8 @@ def update_query(query_id: str, input_query: UserQueryUpdateModel):
320320
"/{query_id}",
321321
name="Delete user query"
322322
)
323-
def delete_query(query_id: str, hard_delete=False):
324-
"""Delete a user query. By default we do a soft delete.
323+
def delete_query(query_id: str, hard_delete: bool = True):
324+
"""Delete a user query. By default we do a hard delete.
325325
326326
Args:
327327
query_id (str): Query ID
@@ -335,7 +335,7 @@ def delete_query(query_id: str, hard_delete=False):
335335
NotFoundErrorResponseModel if the user query not found,
336336
InternalServerErrorResponseModel if the update raises an exception
337337
"""
338-
Logger.info(f"Delete a user query by id={query_id}")
338+
Logger.info(f"Delete a user query by id={query_id} hard_delete={hard_delete}")
339339
existing_query = UserQuery.find_by_id(query_id)
340340
if existing_query is None:
341341
raise ResourceNotFoundException(f"Query {query_id} not found")
@@ -354,6 +354,7 @@ def delete_query(query_id: str, hard_delete=False):
354354
raise ResourceNotFound(str(re)) from re
355355
except Exception as e:
356356
Logger.error(e)
357+
Logger.error(traceback.print_exc())
357358
raise InternalServerError(str(e)) from e
358359

359360
@router.put(
@@ -399,9 +400,9 @@ def update_query_engine(query_engine_id: str,
399400
@router.delete(
400401
"/engine/{query_engine_id}",
401402
name="Delete a query engine")
402-
def delete_query_engine(query_engine_id: str, hard_delete=False):
403+
def delete_query_engine(query_engine_id: str, hard_delete: bool = True):
403404
"""
404-
Delete a query engine. By default we do a soft delete.
405+
Delete a query engine. By default we do a hard delete.
405406
406407
Args:
407408
query_engine_id (LLMQueryEngineModel)
@@ -419,9 +420,10 @@ def delete_query_engine(query_engine_id: str, hard_delete=False):
419420
raise ResourceNotFoundException(f"Engine {query_engine_id} not found")
420421

421422
try:
422-
Logger.info(f"Deleting q_engine=[{q_engine.name}]")
423+
Logger.info(
424+
f"Deleting q_engine=[{q_engine.name}] hard_delete=[{hard_delete}]")
423425

424-
delete_engine(q_engine, hard_delete)
426+
delete_engine(q_engine, hard_delete=hard_delete)
425427

426428
Logger.info(f"Successfully deleted q_engine=[{q_engine.name}]")
427429
except Exception as e:

0 commit comments

Comments
 (0)