From 9443a96b79c1d6cc646932f705b4df7f47b6f72c Mon Sep 17 00:00:00 2001 From: Lars Date: Tue, 2 Sep 2025 19:51:47 +0200 Subject: [PATCH] =?UTF-8?q?app/core/note=5Fpayload.py=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/core/note_payload.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 app/core/note_payload.py diff --git a/app/core/note_payload.py b/app/core/note_payload.py new file mode 100644 index 0000000..7e481a4 --- /dev/null +++ b/app/core/note_payload.py @@ -0,0 +1,39 @@ +from __future__ import annotations +import os +import hashlib +from typing import Dict +from .parser import ParsedNote +from .parser import extract_wikilinks + +def sha256_text(text: str) -> str: + h = hashlib.sha256() + h.update(text.encode("utf-8")) + return h.hexdigest() + +def make_note_payload(parsed: ParsedNote, vault_root: str) -> Dict: + fm = parsed.frontmatter + body = parsed.body + rel_path = os.path.relpath(parsed.path, vault_root) if vault_root else parsed.path + + payload = { + "note_id": fm.get("id"), + "title": fm.get("title"), + "type": fm.get("type"), + "status": fm.get("status"), + "created": fm.get("created"), + "updated": fm.get("updated"), + "tags": fm.get("tags") or [], + "priority": fm.get("priority"), + "effort_min": fm.get("effort_min"), + "due": fm.get("due"), + "people": fm.get("people") or [], + "aliases": fm.get("aliases") or [], + "depends_on": fm.get("depends_on") or [], + "assigned_to": fm.get("assigned_to") or [], + "references": list(sorted(set(extract_wikilinks(body)))), + "lang": fm.get("lang") or None, + "path": rel_path.replace("\\", "/"), + "hash_fulltext": sha256_text(body.strip()), + } + # Entferne None-Werte für saubere Payloads + return {k: v for k, v in payload.items() if v not in (None, [])}