feat: Add endpoint to fix empty case titles from vtiger_data (v1.3.113)
This commit is contained in:
parent
0b9765c5a2
commit
0974f41bd1
@ -128,6 +128,61 @@ async def test_vtiger_connection():
|
|||||||
raise HTTPException(status_code=500, detail=str(e))
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/sync/fix-empty-case-titles", tags=["Sync"])
|
||||||
|
async def fix_empty_case_titles():
|
||||||
|
"""
|
||||||
|
🔧 Opdater tomme case titles fra vtiger_data.
|
||||||
|
|
||||||
|
Henter titles fra vtiger_data JSON for cases der har tom eller generisk title.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
logger.info("🔧 Fixing empty case titles...")
|
||||||
|
|
||||||
|
# Find cases med tomme eller generiske titles
|
||||||
|
cases_query = """
|
||||||
|
SELECT id, vtiger_id, title,
|
||||||
|
vtiger_data->>'title' as vtiger_title,
|
||||||
|
vtiger_data->>'ticket_title' as vtiger_ticket_title
|
||||||
|
FROM tmodule_cases
|
||||||
|
WHERE title IS NULL
|
||||||
|
OR TRIM(title) = ''
|
||||||
|
OR LOWER(title) IN ('ingen titel', 'no title', 'none')
|
||||||
|
"""
|
||||||
|
|
||||||
|
cases = execute_query(cases_query)
|
||||||
|
|
||||||
|
if not cases:
|
||||||
|
return {
|
||||||
|
"success": True,
|
||||||
|
"message": "No cases with empty titles found",
|
||||||
|
"updated": 0
|
||||||
|
}
|
||||||
|
|
||||||
|
updated_count = 0
|
||||||
|
for case in cases:
|
||||||
|
# Prioriter title fra vtiger_data
|
||||||
|
new_title = case.get('vtiger_title') or case.get('vtiger_ticket_title')
|
||||||
|
|
||||||
|
if new_title and new_title.strip():
|
||||||
|
execute_query(
|
||||||
|
"UPDATE tmodule_cases SET title = %s WHERE id = %s",
|
||||||
|
(new_title, case['id'])
|
||||||
|
)
|
||||||
|
updated_count += 1
|
||||||
|
logger.info(f"✅ Updated case {case['vtiger_id']}: '{new_title}'")
|
||||||
|
|
||||||
|
return {
|
||||||
|
"success": True,
|
||||||
|
"message": f"Updated {updated_count} cases",
|
||||||
|
"total_checked": len(cases),
|
||||||
|
"updated": updated_count
|
||||||
|
}
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"❌ Fix empty titles failed: {e}")
|
||||||
|
raise HTTPException(status_code=500, detail=str(e))
|
||||||
|
|
||||||
|
|
||||||
@router.post("/sync/manual-link-customer", tags=["Sync"])
|
@router.post("/sync/manual-link-customer", tags=["Sync"])
|
||||||
async def manual_link_customer(tmodule_customer_id: int, hub_customer_id: int):
|
async def manual_link_customer(tmodule_customer_id: int, hub_customer_id: int):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user