docs(feature-plan): Clarify sync mechanism - unidirectional with protected sections
- Changed 'bidirektional' to 'unidirektional' (Odoo → DokuWiki) - Clarified data ownership: - Odoo = Master for structured data (name, serial_no, area, category) - DokuWiki = Master for freetext documentation (manuals, tips) - Added sync marker system: - <- Ensures POS functionality is activated after ODOO_SYNC_START: section_name --> - <- Ensures POS functionality is activated after ODOO_SYNC_END: section_name --> - Only content between markers gets updated by Odoo - All other sections (Bedienung, Tipps & Tricks) remain untouched - Documented sync algorithm with Python code example - Users can freely edit wiki without fear of data loss - DokuWiki versioning preserves all changes
This commit is contained in:
parent
92490aeb9c
commit
2eff81ce54
|
|
@ -151,7 +151,10 @@ Dieses Modul integriert **DokuWiki** als Dokumentationssystem für Equipment.
|
|||
|
||||
- Automatische Wiki-Seiten für jedes Equipment
|
||||
- Strukturierte Dokumentation mit Templates
|
||||
- Bidirektionale Synchronisation (Odoo → DokuWiki)
|
||||
- **Unidirektionale Synchronisation** (Odoo → DokuWiki)
|
||||
- Odoo = Master für strukturierte Daten (Name, Seriennummer, Bereich, Kategorie)
|
||||
- DokuWiki = Master für Freitext-Dokumentation (Bedienungsanleitung, Tipps)
|
||||
- Nur markierte Bereiche werden von Odoo überschrieben
|
||||
- Versionierung durch DokuWiki eingebaut
|
||||
- ACL: Odoo-Namespace nur für Odoo beschreibbar, für alle lesbar
|
||||
|
||||
|
|
@ -182,34 +185,52 @@ ausruestung:elektronik:loetstation_1
|
|||
|
||||
## 5.4 Template-System
|
||||
|
||||
Automatisch generierte Seiten mit folgender Struktur:
|
||||
Automatisch generierte Seiten mit **Sync-Markern** für geschützte Bereiche:
|
||||
|
||||
```wiki
|
||||
====== [Equipment Name] ======
|
||||
====== Formatkreissäge ======
|
||||
|
||||
<!-- ODOO_SYNC_START: Grunddaten -->
|
||||
===== Grunddaten =====
|
||||
* **Seriennummer:** [serial_no]
|
||||
* **Bereich:** [area_id.name]
|
||||
* **Kategorie:** [category] (🟢🟡🔴)
|
||||
* **Standort:** [location]
|
||||
* **Hersteller:** [partner_id.name]
|
||||
* **Seriennummer:** FKS-2024-001
|
||||
* **Bereich:** Holzwerkstatt
|
||||
* **Kategorie:** 🔴 (Einweisung erforderlich)
|
||||
* **Standort:** Schrank A, Regal 2
|
||||
* **Hersteller:** Bosch
|
||||
<!-- ODOO_SYNC_END: Grunddaten -->
|
||||
|
||||
<!-- ODOO_SYNC_START: Sicherheit -->
|
||||
===== Sicherheit =====
|
||||
* **Einweisungspflichtig:** [Ja/Nein basierend auf category]
|
||||
* **Nutzungsprodukte:** [product_ids]
|
||||
* **Einweisungsprodukte:** [training_ids]
|
||||
* **Einweisungspflichtig:** Ja
|
||||
* **Nutzungsprodukte:** Holzwerkstatt Nutzung
|
||||
* **Einweisungsprodukte:** Einweisung Formatkreissäge
|
||||
<!-- ODOO_SYNC_END: Sicherheit -->
|
||||
|
||||
===== Bedienung =====
|
||||
[Platzhalter für Anleitung - manuell editierbar]
|
||||
**Dieser Bereich ist NICHT geschützt - User können frei editieren!**
|
||||
|
||||
1. Maschine einschalten
|
||||
2. Werkstück anlegen
|
||||
3. Anschlag einstellen
|
||||
...
|
||||
|
||||
===== Wartung =====
|
||||
* **Nächste Wartung:** [next_action_date]
|
||||
* **Wartungshistorie:** Link zu Maintenance Requests
|
||||
Letzte Wartung: 01.12.2025
|
||||
Nächste Wartung: [[maintenance:request:42|Wartungsauftrag #42]]
|
||||
|
||||
===== Notizen =====
|
||||
[note aus equipment.note oder editierbar]
|
||||
===== Tipps & Tricks =====
|
||||
**Freitext-Bereich für Community-Wissen**
|
||||
|
||||
- Für saubere Schnitte: Sägeblatt regelmäßig wechseln
|
||||
- Bei Hartholz: Vorschub langsamer
|
||||
...
|
||||
```
|
||||
|
||||
**Sync-Verhalten:**
|
||||
- Bereiche zwischen `<!-- ODOO_SYNC_START -->` und `<!-- ODOO_SYNC_END -->` werden bei Equipment-Änderung aktualisiert
|
||||
- Alle anderen Bereiche bleiben unberührt
|
||||
- DokuWiki-Versionierung behält alle Änderungen
|
||||
|
||||
## 5.5 Technische Umsetzung
|
||||
|
||||
**Python-Bibliothek:**
|
||||
|
|
@ -227,9 +248,37 @@ wiki.getAllPages() # Alle Seiten auflisten
|
|||
**Odoo-Integration:**
|
||||
- Neues Model: `ows.dokuwiki.config` (DokuWiki-URL, Credentials)
|
||||
- Methode auf `maintenance.equipment`: `sync_to_dokuwiki()`
|
||||
- Liest bestehende Wiki-Seite mit `wiki.getPage()`
|
||||
- Parsed Sync-Marker (`<!-- ODOO_SYNC_START -->`)
|
||||
- Aktualisiert nur markierte Abschnitte
|
||||
- Schreibt zurück mit `wiki.putPage()`
|
||||
- Automated Action: Bei Equipment-Änderung → Wiki aktualisieren
|
||||
- Smart Button: "Wiki öffnen" → Link zur DokuWiki-Seite
|
||||
|
||||
**Sync-Algorithmus:**
|
||||
```python
|
||||
def _update_structured_sections(self, existing_content, new_data):
|
||||
"""Ersetzt nur Bereiche zwischen ODOO_SYNC_START/END Markern"""
|
||||
sections = {
|
||||
'Grunddaten': self._generate_grunddaten(),
|
||||
'Sicherheit': self._generate_sicherheit()
|
||||
}
|
||||
|
||||
for section_name, new_content in sections.items():
|
||||
marker_start = f"<!-- ODOO_SYNC_START: {section_name} -->"
|
||||
marker_end = f"<!-- ODOO_SYNC_END: {section_name} -->"
|
||||
|
||||
# Regex-basiertes Ersetzen nur innerhalb Marker
|
||||
existing_content = re.sub(
|
||||
f"{marker_start}.*?{marker_end}",
|
||||
f"{marker_start}\n{new_content}\n{marker_end}",
|
||||
existing_content,
|
||||
flags=re.DOTALL
|
||||
)
|
||||
|
||||
return existing_content
|
||||
```
|
||||
|
||||
## 5.6 Sicherheitsmechanismen
|
||||
|
||||
**DokuWiki ACL:**
|
||||
|
|
@ -342,7 +391,7 @@ Aktuell hat DokuWiki-Integration **Priorität**.
|
|||
✔ **Odoo bleibt sicher** hinter Firewall
|
||||
✔ **Keine Benutzerkosten** – alle Ehrenamtlichen können intern mitarbeiten
|
||||
✔ **Modular, wartbar, zukunftssicher**
|
||||
✔ **Bidirektionale Sync** – Odoo aktualisiert Wiki automatisch
|
||||
✔ **Intelligente Sync** – Nur strukturierte Daten werden überschrieben, Freitext bleibt erhalten
|
||||
✔ **Öffentlich lesbar** – Anleitungen für alle verfügbar
|
||||
✔ **WordPress optional** – Kann später für Marketing/SEO ergänzt werden
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user