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}
|
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:
|
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."""
|
"""Synchronise a language set (incl. de) against the xx base set via AI."""
|
||||||
if code == "xx":
|
if code == "xx":
|
||||||
|
|
@ -703,6 +730,19 @@ async def update_all_language_sets(
|
||||||
return {"xxSync": xxSync, "updated": results}
|
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}")
|
@router.put("/sets/{code}")
|
||||||
async def update_language_set(
|
async def update_language_set(
|
||||||
code: str,
|
code: str,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue