trading-system-docs/tolaria/DATA_MODEL.md

81 lines
3.6 KiB
Markdown

# Tolaria — Data Model
**Datum:** 2026-08-24/25 · **Autor:** Red Queen · **Modus:** READ-ONLY
---
## 1. Speicherarchitektur
Tolaria verwendet **kein klassisches DB-Schema** (keine SQLite/Postgres-Tabellen für Wissen). Der Wissensbestand ist ein **Git-basierter Markdown-Vault** unter `/app/vault/`.
| Schicht | Ort | Zweck |
|---------|-----|-------|
| **Vault (Wissen)** | `/app/vault/` | Git-versionierte `.md`-Dateien; Source of Knowledge |
| **Cache** | `~/.laputa/cache/<vault-hash>.json` | Vault-Index außerhalb des Vaults (ADR-0024) |
| **App-Config/Settings** | `~/.config/com.laputa.app/` | App-Einstellungen (ADR-0004, ADR-0177) |
> **EVIDENCE:** ADRs 0004, 0024, 0177; Vault-Liste `/api/vault/list`.
> **INFERENCE:** Der Vault ist das primäre Speichermedium; App-Settings und Cache sind sekundär und nicht Teil des Wissens.
---
## 2. Dateiformat
- **Markdown** (`.md`)
- **YAML-Frontmatter** (optional, bei organisierten/typisierten Notizen):
```yaml
type: <Typ>
title: <Titel>
tags: [tag1, tag2]
created: YYYY-MM-DD
_organized: true
```
- **Wikilinks** `[[note-name]]` (Beziehungen, werden dynamisch erkannt)
- System-Eigenschaften im Frontmatter mit `_`-Präfix (z. B. `_organized`, `_icon`)
---
## 3. Entity-/Typmodell (abgeleitet aus tatsächlichen Daten)
Im aktuellen Bestand vorgefundene `type`-Werte:
| `type` | Beispiel | Anmerkung |
|--------|----------|-----------|
| `Start` | `notes/start.md` | Vault-Home |
| `Projekt` | `notes/projects/projekte.md` | Projekt-Hub |
| `Bereich` | `notes/trading/trading.md` | Themenbereich |
| `Agent` | `notes/ai-agents/ai-agents.md` | Agent-Übersicht |
| `Referenz` | `notes/reference/vps-infrastruktur.md` | Referenz/Infra |
| `Note` | `notes/trading/second-brain/Phase10c_Slippage_Deterministic.md` | Allgemeine Notiz |
| `ADR` | `docs/adr/*.md` (App-intern) | Architecture Decision Record |
| `Trading-Modul-System` | `system-docs/README.md` | Organisierte Systemdoku |
> **INFERENCE:** Das Typmodell ist **dynamisch/frei** — `type` ist ein Freitext-Frontmatter-Feld, kein festes Enum. Die Hubs sind typisiert, die Root-Modul-Dokus sind **nicht** typisiert (kein Frontmatter).
> **UNKNOWN:** Ob weitere Typen im ADR-/Schema-Code fix definiert sind (nur aus Vault-Daten ableitbar, nicht aus dem Produktcode ohne Source-Read).
---
## 4. Beziehungen
- **`[[wikilinks]]`** werden dynamisch als Relationships erkannt (ADR-0010 "Dynamic Links").
- **Frontmatter-Relationship-Felder** (`belongsTo`, `relatedTo`, `isA`) existieren im Entry-Endpunkt, sind aber im aktuellen Bestand **nicht belegt** (Module haben `relatedTo=[]`).
- **Ist-Zustand:** Nur Hub-Notizen (`start`, `trading`, `ai-agents`) sind untereinander verlinkt. Die 19 Modul-Module sind untereinander **komplett unvernetzt** (keine Wikilinks).
---
## 5. Indizes / Constraints
- Kein explizites DB-Schema, keine SQL-Constraints.
- Git-Commit-Historie = impliziter Versions-/Änderungs-Index.
- Vault-Cache-Index (ADR-0024) für schnelle Listen/Suche.
- Frontmatter `_organized: true` markiert organisierte/typisierte Dateien.
---
## 6. Source / Timestamps
- **Erstell-/Freigabe-Daten** stehen im Markdown-Body (z. B. `FREIGEGEBEN (20.08.2026)`) oder Frontmatter (`created:`).
- **Root-Import-Zeitstempel:** Dateien im Vault-Root tragen eine einheitliche Batch-Mtime (`2026-08-22 18:21`) → Import-Zeitpunkt, nicht echter Inhalt.
- **Git-Historie** des Repos `trading-system-docs` liefert versionierte Wahrheit.
> **INFERENCE:** `created` ist Frontmatter-datiert; `modified` ist über die einheitliche Root-Mtime nicht je Datei verlässlich. Aktualität ist am ehesten aus Body-Datumsangaben und Git-Historie ablesbar.