feat: intégration TikTak #197-200 + scoped tokens, webhooks filtrés, listes mtime/size ; fix e2e-server BUG-112
CI / lint (push) Successful in 3m17s
CI / security (push) Failing after 1m51s
CI / test (push) Successful in 5m14s
CI / build (push) Successful in 1m50s
CI / e2e (push) Successful in 18m18s

This commit is contained in:
2026-10-14 11:42:53 -04:00
parent 2be0b15bcf
commit f783394f09
59 changed files with 3233 additions and 77 deletions
+34 -6
View File
@@ -198,23 +198,51 @@ def list_paths(vault: str, limit: int = 5000) -> dict[str, Any]:
once lets the client filter files/directories instantly instead of issuing
a request per keystroke.
#197 (synchro TikTak) : chaque entrée fichier expose aussi ``size``,
``mtime`` (epoch) et ``mtime_iso`` — un client externe peut détecter les
fichiers modifiés depuis un horodatage en **un seul appel**, sans relire
chaque fichier. Les valeurs viennent de l'index (source unique, même
contrat que ``list_all_files``) ; les répertoires portent ``None``.
Args:
vault: Vault name.
limit: Maximum number of entries returned.
Returns:
``{"vault", "count", "results": [{vault, path, name, type}]}``.
``{"vault", "count", "results": [{vault, path, name, type, size?,
mtime?, mtime_iso?}]}``.
"""
from backend.indexer import path_index
from datetime import datetime
from backend.indexer import get_vault_data, path_index
entries = path_index.get(vault, [])
results = [
{
meta: dict[str, dict[str, Any]] = {}
data = get_vault_data(vault)
if data:
for info in data.get("files", []):
meta[info["path"]] = info
results = []
for entry in entries[: max(0, limit)]:
item: dict[str, Any] = {
"vault": vault,
"path": entry["path"],
"name": entry["name"],
"type": entry["type"],
"size": None,
"mtime": None,
"mtime_iso": None,
}
for entry in entries[: max(0, limit)]
]
info = meta.get(entry["path"])
if info is not None:
item["size"] = info.get("size")
iso = info.get("modified")
item["mtime_iso"] = iso
if iso:
try:
item["mtime"] = datetime.fromisoformat(iso).timestamp()
except (ValueError, TypeError):
item["mtime"] = None
results.append(item)
return {"vault": vault, "count": len(results), "results": results}