ui all languages transferred
This commit is contained in:
parent
8b33a86274
commit
ba8356fc0e
1 changed files with 40 additions and 0 deletions
|
|
@ -591,6 +591,33 @@ async def create_language_set(
|
|||
return {"status": "accepted", "code": code}
|
||||
|
||||
|
||||
def _compute_language_sync_diff(db, code: str) -> dict:
|
||||
"""Return key sync metrics before AI translate (no DB writes)."""
|
||||
if code == "xx":
|
||||
raise HTTPException(status_code=400, detail="Das xx-Set wird separat synchronisiert.")
|
||||
rows = db.getRecordset(UiLanguageSet, recordFilter={"id": code})
|
||||
if not rows:
|
||||
raise HTTPException(status_code=404, detail="Sprachset nicht gefunden")
|
||||
xx_entries = _loadMasterXxEntries(db)
|
||||
if not xx_entries:
|
||||
raise HTTPException(status_code=503, detail="Basisset (xx) nicht vorhanden.")
|
||||
row = dict(rows[0])
|
||||
cur_entries = _rowEntries(row)
|
||||
cur_by_key = {e["key"]: e for e in cur_entries}
|
||||
xx_by_key = {e["key"]: e for e in xx_entries}
|
||||
master_keys = set(xx_by_key.keys())
|
||||
current_keys = set(cur_by_key.keys())
|
||||
added_count = len(master_keys - current_keys)
|
||||
removed_count = len(current_keys - master_keys)
|
||||
return {
|
||||
"code": code,
|
||||
"addedCount": added_count,
|
||||
"removedCount": removed_count,
|
||||
"masterEntryCount": len(master_keys),
|
||||
"currentEntryCount": len(current_keys),
|
||||
}
|
||||
|
||||
|
||||
async def _syncLanguageWithXx(db, code: str, userId: Optional[str], adminUser: Optional[User] = None) -> dict:
|
||||
"""Synchronise a language set (incl. de) against the xx base set via AI."""
|
||||
if code == "xx":
|
||||
|
|
@ -703,6 +730,19 @@ async def update_all_language_sets(
|
|||
return {"xxSync": xxSync, "updated": results}
|
||||
|
||||
|
||||
@router.get("/sets/{code}/sync-diff")
|
||||
async def get_language_sync_diff(
|
||||
code: str,
|
||||
adminUser: User = Depends(requireSysAdminRole),
|
||||
):
|
||||
"""How many keys would be added/removed vs xx before running a full sync (SysAdmin)."""
|
||||
c = code.strip().lower()
|
||||
if c in ("update-all", "sync-xx", "sync-de"):
|
||||
raise HTTPException(status_code=400, detail="Ungültiger Sprachcode.")
|
||||
db = getMgmtInterface(adminUser, mandateId=None).db
|
||||
return _compute_language_sync_diff(db, c)
|
||||
|
||||
|
||||
@router.put("/sets/{code}")
|
||||
async def update_language_set(
|
||||
code: str,
|
||||
|
|
|
|||
Loading…
Reference in a new issue