fix: fix internal server error, refs NOISSUE
This commit is contained in:
@@ -283,6 +283,51 @@ def _compose_prompt_text(request: SoftwareRequest) -> str:
|
||||
)
|
||||
|
||||
|
||||
def _generation_error_payload(
|
||||
*,
|
||||
message: str,
|
||||
request: SoftwareRequest | None = None,
|
||||
source: dict | None = None,
|
||||
interpreted_request: dict | None = None,
|
||||
routing: dict | None = None,
|
||||
) -> dict:
|
||||
"""Return a workflow-safe JSON payload for expected generation failures."""
|
||||
response = {
|
||||
'status': 'error',
|
||||
'message': message,
|
||||
'error': message,
|
||||
'summary_message': message,
|
||||
'summary_metadata': {
|
||||
'provider': None,
|
||||
'model': None,
|
||||
'fallback_used': False,
|
||||
},
|
||||
'data': {
|
||||
'history_id': None,
|
||||
'project_id': None,
|
||||
'name': request.name if request is not None else (interpreted_request or {}).get('name'),
|
||||
'description': request.description if request is not None else (interpreted_request or {}).get('description'),
|
||||
'status': 'error',
|
||||
'progress': 0,
|
||||
'message': message,
|
||||
'current_step': None,
|
||||
'error_message': message,
|
||||
'logs': [],
|
||||
'changed_files': [],
|
||||
'repository': None,
|
||||
'pull_request': None,
|
||||
'summary_message': message,
|
||||
},
|
||||
}
|
||||
if source is not None:
|
||||
response['source'] = source
|
||||
if interpreted_request is not None:
|
||||
response['interpreted_request'] = interpreted_request
|
||||
if routing is not None:
|
||||
response['routing'] = routing
|
||||
return response
|
||||
|
||||
|
||||
async def _run_generation(
|
||||
request: SoftwareRequest,
|
||||
db: Session,
|
||||
@@ -876,7 +921,15 @@ def reset_runtime_setting(setting_key: str, db: DbSession):
|
||||
@app.post('/generate')
|
||||
async def generate_software(request: SoftwareRequest, db: DbSession):
|
||||
"""Create and record a software-generation request."""
|
||||
return await _run_generation(request, db)
|
||||
try:
|
||||
return await _run_generation(request, db)
|
||||
except Exception as exc:
|
||||
DatabaseManager(db).log_system_event(
|
||||
component='api',
|
||||
level='ERROR',
|
||||
message=f"Structured generation failed: {exc}",
|
||||
)
|
||||
return _generation_error_payload(message=str(exc), request=request)
|
||||
|
||||
|
||||
@app.post('/generate/text')
|
||||
@@ -920,7 +973,22 @@ async def generate_software_from_text(request: FreeformSoftwareRequest, db: DbSe
|
||||
},
|
||||
}
|
||||
|
||||
return await _run_freeform_generation(request, db)
|
||||
try:
|
||||
return await _run_freeform_generation(request, db)
|
||||
except Exception as exc:
|
||||
DatabaseManager(db).log_system_event(
|
||||
component='api',
|
||||
level='ERROR',
|
||||
message=f"Free-form generation failed for source={request.source}: {exc}",
|
||||
)
|
||||
return _generation_error_payload(
|
||||
message=str(exc),
|
||||
source={
|
||||
'type': request.source,
|
||||
'chat_id': request.chat_id,
|
||||
'chat_type': request.chat_type,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@app.get('/queue')
|
||||
|
||||
Reference in New Issue
Block a user