Skip to content

Commit c4280fa

Browse files
committed
Refactor validation logic into JsonService
Moved model and search validation logic from app_kernel.py into JsonService, consolidating related methods and removing redundant service classes. Updated endpoints to use JsonService for model and search validation, and improved configuration handling. Added DATASET_PATH to .env.example.
1 parent c2a58f0 commit c4280fa

File tree

3 files changed

+375
-65
lines changed

3 files changed

+375
-65
lines changed

src/backend/app_kernel.py

Lines changed: 15 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@
3939
TeamConfiguration,
4040
)
4141
from services.json_service import JsonService
42-
from services.model_validation_service import ModelValidationService
43-
from services.search_validation_service import SearchValidationService
4442

4543

4644
# Updated import for KernelArguments
@@ -1565,17 +1563,6 @@ async def upload_team_config_endpoint(request: Request, file: UploadFile = File(
15651563
responses:
15661564
200:
15671565
description: Team configuration uploaded successfully
1568-
schema:
1569-
type: object
1570-
properties:
1571-
status:
1572-
type: string
1573-
config_id:
1574-
type: string
1575-
team_id:
1576-
type: string
1577-
name:
1578-
type: string
15791566
400:
15801567
description: Invalid request or file format
15811568
401:
@@ -1611,7 +1598,6 @@ async def upload_team_config_endpoint(request: Request, file: UploadFile = File(
16111598
# Validate content with RAI before processing
16121599
rai_valid, rai_error = await rai_validate_team_config(json_data)
16131600
if not rai_valid:
1614-
# Track RAI validation failure
16151601
track_event_if_configured(
16161602
"Team configuration RAI validation failed",
16171603
{
@@ -1623,29 +1609,24 @@ async def upload_team_config_endpoint(request: Request, file: UploadFile = File(
16231609
)
16241610
raise HTTPException(status_code=400, detail=rai_error)
16251611

1626-
# Track successful RAI validation
16271612
track_event_if_configured(
16281613
"Team configuration RAI validation passed",
1629-
{
1630-
"status": "passed",
1631-
"user_id": user_id,
1632-
"filename": file.filename,
1633-
},
1614+
{"status": "passed", "user_id": user_id, "filename": file.filename},
16341615
)
16351616

1617+
# Initialize memory store and service
1618+
kernel, memory_store = await initialize_runtime_and_context("", user_id)
1619+
json_service = JsonService(memory_store)
1620+
16361621
# Validate model deployments
1637-
model_validator = ModelValidationService()
1638-
models_valid, missing_models = await model_validator.validate_team_models(
1622+
models_valid, missing_models = await json_service.validate_team_models(
16391623
json_data
16401624
)
1641-
16421625
if not models_valid:
16431626
error_message = (
16441627
f"The following required models are not deployed in your Azure AI project: {', '.join(missing_models)}. "
16451628
f"Please deploy these models in Azure AI Foundry before uploading this team configuration."
16461629
)
1647-
1648-
# Track model validation failure
16491630
track_event_if_configured(
16501631
"Team configuration model validation failed",
16511632
{
@@ -1655,32 +1636,22 @@ async def upload_team_config_endpoint(request: Request, file: UploadFile = File(
16551636
"missing_models": missing_models,
16561637
},
16571638
)
1658-
16591639
raise HTTPException(status_code=400, detail=error_message)
16601640

1661-
# Track successful model validation
16621641
track_event_if_configured(
16631642
"Team configuration model validation passed",
1664-
{
1665-
"status": "passed",
1666-
"user_id": user_id,
1667-
"filename": file.filename,
1668-
},
1643+
{"status": "passed", "user_id": user_id, "filename": file.filename},
16691644
)
16701645

16711646
# Validate search indexes
1672-
search_validator = SearchValidationService()
1673-
search_valid, search_errors = (
1674-
await search_validator.validate_team_search_indexes(json_data)
1647+
search_valid, search_errors = await json_service.validate_team_search_indexes(
1648+
json_data
16751649
)
1676-
16771650
if not search_valid:
16781651
error_message = (
16791652
f"Search index validation failed:\n\n{chr(10).join([f'• {error}' for error in search_errors])}\n\n"
16801653
f"Please ensure all referenced search indexes exist in your Azure AI Search service."
16811654
)
1682-
1683-
# Track search validation failure
16841655
track_event_if_configured(
16851656
"Team configuration search validation failed",
16861657
{
@@ -1690,23 +1661,13 @@ async def upload_team_config_endpoint(request: Request, file: UploadFile = File(
16901661
"search_errors": search_errors,
16911662
},
16921663
)
1693-
16941664
raise HTTPException(status_code=400, detail=error_message)
16951665

1696-
# Track successful search validation
16971666
track_event_if_configured(
16981667
"Team configuration search validation passed",
1699-
{
1700-
"status": "passed",
1701-
"user_id": user_id,
1702-
"filename": file.filename,
1703-
},
1668+
{"status": "passed", "user_id": user_id, "filename": file.filename},
17041669
)
17051670

1706-
# Initialize memory store and service
1707-
kernel, memory_store = await initialize_runtime_and_context("", user_id)
1708-
json_service = JsonService(memory_store)
1709-
17101671
# Validate and parse the team configuration
17111672
try:
17121673
team_config = await json_service.validate_and_parse_team_config(
@@ -1723,7 +1684,6 @@ async def upload_team_config_endpoint(request: Request, file: UploadFile = File(
17231684
status_code=500, detail=f"Failed to save configuration: {str(e)}"
17241685
)
17251686

1726-
# Track the event
17271687
track_event_if_configured(
17281688
"Team configuration uploaded",
17291689
{
@@ -1745,10 +1705,8 @@ async def upload_team_config_endpoint(request: Request, file: UploadFile = File(
17451705
}
17461706

17471707
except HTTPException:
1748-
# Re-raise HTTP exceptions
17491708
raise
17501709
except Exception as e:
1751-
# Log and return generic error for unexpected exceptions
17521710
logging.error(f"Unexpected error uploading team configuration: {str(e)}")
17531711
raise HTTPException(status_code=500, detail="Internal server error occurred")
17541712

@@ -2006,12 +1964,10 @@ async def get_model_deployments_endpoint(request: Request):
20061964
)
20071965

20081966
try:
2009-
model_validator = ModelValidationService()
2010-
deployments = await model_validator.list_model_deployments()
2011-
summary = await model_validator.get_deployment_status_summary()
2012-
1967+
json_service = JsonService()
1968+
deployments = await json_service.list_model_deployments()
1969+
summary = await json_service.get_deployment_status_summary()
20131970
return {"deployments": deployments, "summary": summary}
2014-
20151971
except Exception as e:
20161972
logging.error(f"Error retrieving model deployments: {str(e)}")
20171973
raise HTTPException(status_code=500, detail="Internal server error occurred")
@@ -2040,11 +1996,9 @@ async def get_search_indexes_endpoint(request: Request):
20401996
)
20411997

20421998
try:
2043-
search_validator = SearchValidationService()
2044-
summary = await search_validator.get_search_index_summary()
2045-
1999+
json_service = JsonService()
2000+
summary = await json_service.get_search_index_summary()
20462001
return {"search_summary": summary}
2047-
20482002
except Exception as e:
20492003
logging.error(f"Error retrieving search indexes: {str(e)}")
20502004
raise HTTPException(status_code=500, detail="Internal server error occurred")

0 commit comments

Comments
 (0)