218 lines
8.8 KiB
Markdown
218 lines
8.8 KiB
Markdown
|
|
# AzA Abschlussbericht — finish_all_open_blocks
|
|||
|
|
|
|||
|
|
**Timestamp:** 20260609_210229
|
|||
|
|
**Projekt:** `C:\Users\surov\Documents\AZA_GIT\aza\AzA march 2026`
|
|||
|
|
**Produktivstand:** Stable **1.3.11** (unverändert — **kein Release**)
|
|||
|
|
**Master-Backup:** `backup_finish_all_open_blocks_20260609_210229\`
|
|||
|
|
**Recovery:** `C:\Users\surov\Documents\Syncthing-Test\AzA_FINISH_ALL_20260609_210229\`
|
|||
|
|
|
|||
|
|
**WARNUNG:** Backups können `.env`, Tokens und Recovery-Daten enthalten — nicht teilen.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## A. Inventar
|
|||
|
|
|
|||
|
|
| Kategorie | Dateien / Befund |
|
|||
|
|
|-----------|------------------|
|
|||
|
|
| **A — Abschluss** | 18 Kernfiles geändert (~6084+/739−): `basis14.py`, `aza_persistence.py`, `aza_sync_items.py`, `aza_office_shell_v1.py`, `aza_empfang_webview.py`, `aza_start_panel.py`, `aza_updater.py`, `desktop_update_check.py`, `aza_ui_helpers.py`, `aza_text_windows_mixin.py`, `web/empfang.html`, `empfang_routes.py`, `backend_main.py`, `installer/aza_installer.iss`, `build_exe.ps1`, `publish_update.ps1`, `aza_version.py`, `release/version.json` |
|
|||
|
|
| **B — bereits veröffentlicht** | `release/version.json` / `aza_version.py` zeigen weiterhin **1.3.11** (kein Bump) |
|
|||
|
|
| **C — lokale Dev** | `_test_chat_singleton_count.py`, `_updater_test_install\`, `test_update_manifest.json` |
|
|||
|
|
| **D — unklar/gefährlich** | `empfang_routes.py` `@router.delete("/messages/{msg_id}")` — Hard-Delete ohne Session (Phase 11 offen) |
|
|||
|
|
| **E — Artefakte** | Viele `backup_*`, `.aza_sync_local_backup_*`, gelöschte Sync-JSONs in git status |
|
|||
|
|
|
|||
|
|
Keine widersprüchlichen Doppel-Implementierungen derselben Funktion festgestellt (Singleton/Updater/Bibliothek konsistent im Working Tree).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## B. Geänderte Dateien
|
|||
|
|
|
|||
|
|
Siehe `git_diff_stat_key_files.txt` im Backup. Schwerpunkte:
|
|||
|
|
- Singleton/Shutdown: `basis14.py` (+1888 Zeilen netto im Diff-Stat)
|
|||
|
|
- Bibliothek: `aza_persistence.py`, `aza_sync_items.py`, `basis14.py`
|
|||
|
|
- Updater Office-only: `aza_start_panel.py`, `aza_updater.py`, `desktop_update_check.py`
|
|||
|
|
- Web: `web/empfang.html` (+2842), `empfang_routes.py`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## C. Chat-Singleton
|
|||
|
|
|
|||
|
|
| Status | **lokal umgesetzt, manueller Pflicht-Test fehlt** |
|
|||
|
|
|--------|---------------------------------------------------|
|
|||
|
|
|
|||
|
|
**Code:** Launch-Lock, inflight-Guard, Child-PID, HWND/minimiert, Kontakte nach Empfang — in `basis14.py` vorhanden.
|
|||
|
|
|
|||
|
|
**Automatischer Zähler** (`python _test_chat_singleton_count.py`, 20260609 ~21:00):
|
|||
|
|
- `empfang_count=0`, `kontakt_count=1` (verwaistes Kontaktefenster PID 116568 — **kein gültiger Singleton-Nachweis**)
|
|||
|
|
- Frühere Momentaufnahme (Summary): beide = 1 — **10×-Klick-Test 1–14 nicht durch Agent ausgeführt**
|
|||
|
|
|
|||
|
|
**Erwartung für Freigabe:** `empfang_count=1`, `kontakt_count=1` nach Schritten 1–14.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## D. Vollständiges Schließen
|
|||
|
|
|
|||
|
|
| Status | **lokal umgesetzt, manueller Test fehlt** |
|
|||
|
|
|--------|-------------------------------------------|
|
|||
|
|
|
|||
|
|
**Code:** `_close_aza_auxiliary_windows()`, `_shutdown_tracked_child_processes()`, „AzA schliessen“ in `aza_office_shell_v1.py` / `basis14.py`.
|
|||
|
|
|
|||
|
|
**Test:** Alle Fenster öffnen → schließen → keine AzA-Fenster/Restprozesse — **nicht interaktiv verifiziert**.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## E. Bibliothek (Benutzer/Signatur/Korrektur)
|
|||
|
|
|
|||
|
|
| Status | **lokal umgesetzt; Kern-Unit-Tests OK; interaktive Pflichttests fehlen** |
|
|||
|
|
|--------|---------------------------------------------------------------------------|
|
|||
|
|
|
|||
|
|
**Automatisiert (20260609):**
|
|||
|
|
- `apply_korrekturen`: Tremfia→Tremfya, inaktiv unverändert, Tremfiatisch unverändert ✓
|
|||
|
|
- `merge_practice_users_into_korrekturen`: display_name importiert ✓
|
|||
|
|
- `py_compile` aller geänderten Python-Dateien ✓
|
|||
|
|
|
|||
|
|
**Offen manuell:** Neustart-Persistenz, Korrektur-Dialog UI, Signatur in allen 5 Dokumenttypen live.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## F. Diktat und Notizen
|
|||
|
|
|
|||
|
|
| Status | **lokal umgesetzt (frühere Blöcke); manuelle Tests fehlen** |
|
|||
|
|
|--------|--------------------------------------------------------------|
|
|||
|
|
|
|||
|
|
- **A Hauptdiktat:** `active_bg`-Fix in `aza_ui_helpers.py` (RoundedButton) — Syntax OK, kein Laufzeit-Test
|
|||
|
|
- **B Notiz-Diktat:** `stopAndFinalizeNoteDictation` in `web/empfang.html` — JS-Syntax OK
|
|||
|
|
- **C Notizvorschau:** `_bindNoteCardScrollGuards` vorhanden — manuell offen
|
|||
|
|
- **D Notizbilder:** **bewusst nicht umgesetzt** (kein sicherer Backend-/Storage-Pfad)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## G. Dokumente an Chat
|
|||
|
|
|
|||
|
|
| Status | **lokal umgesetzt; manueller Test pro Dokumenttyp fehlt** |
|
|||
|
|
|--------|-----------------------------------------------------------|
|
|||
|
|
|
|||
|
|
`aza_text_windows_mixin.py`: Button „An Chat senden“ → `_empfang_send_document_to_chat`.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## H. Popup / Pin / Links
|
|||
|
|
|
|||
|
|
| Status | **lokal umgesetzt (frühere Blöcke); manuelle Tests fehlen** |
|
|||
|
|
|--------|---------------------------------------------------------------|
|
|||
|
|
|
|||
|
|
- Popup bei minimiertem Parent: transient/-topmost-Logik in `basis14.py`
|
|||
|
|
- Pin: `aza_empfang_webview.py`
|
|||
|
|
- Links: `linkifyEscaped` in `web/empfang.html`, JS-Syntax OK (~518k Zeichen)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## I. Nachrichtenlöschen
|
|||
|
|
|
|||
|
|
| Status | **bewusst nicht umgesetzt** |
|
|||
|
|
|--------|----------------------------|
|
|||
|
|
|
|||
|
|
Vorhandene Route `DELETE /messages/{msg_id}` in `empfang_routes.py` ist **Hard-Delete ohne Session/Berechtigung** — laut Auftrag **nicht verwenden**. Keine Soft-Delete-Implementierung (deleted_at/deleted_by, Frontend-Kontextmenü).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## J. Hüllen-Update-Hinweis
|
|||
|
|
|
|||
|
|
| Status | **bewusst nicht umgesetzt** |
|
|||
|
|
|--------|----------------------------|
|
|||
|
|
|
|||
|
|
Kein Update-Button/Bridge in `aza_empfang_webview.py` / `web/empfang.html`. Office bleibt alleiniger Update-Owner (Startpanel prüft nicht — bestätigt in `aza_start_panel.py` Zeilen 803–806).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## K. Updater E2E (Tests 1–10)
|
|||
|
|
|
|||
|
|
| Status | **ZIP-Harness OK; Inno-Installer Tests 9+10 = Release-Blocker** |
|
|||
|
|
|--------|------------------------------------------------------------------|
|
|||
|
|
|
|||
|
|
**Automatisiert:** `python aza_updater.py --e2e-local-test` → JSON OK:
|
|||
|
|
- update_applied, rollback_tested, bad_sha_blocked, missing_zip_blocked, project_root_unchanged ✓
|
|||
|
|
- `project_root_version`: **1.3.11** unverändert ✓
|
|||
|
|
|
|||
|
|
**Nicht real getestet (Pflicht für Stable):**
|
|||
|
|
- Tests 9–10: installierte EXE/version.json-Timestamps nach **Inno-Setup**-Installer
|
|||
|
|
- Tests 1–8 interaktiv (Profi-Dialog, Später/Beenden/Jetzt, Doppelklick, Fenster offen, Installerfehler)
|
|||
|
|
|
|||
|
|
**Kein Stable-Release** solange 9+10 fehlen.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## L. 5-Geräte-Limit Kontakt-Panel
|
|||
|
|
|
|||
|
|
| Status | **bewusst nicht umgesetzt** |
|
|||
|
|
|--------|----------------------------|
|
|||
|
|
|
|||
|
|
Office-Lizenz hat `device_limit_reached`; separates **Kontakt-Panel-Limit (5)** mit eigenem Namespace — nicht in `backend_main.py` / Panel-Code gefunden.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## M. DigiCert Code Signing
|
|||
|
|
|
|||
|
|
| Status | **blockiert — KeyLocker nicht verifiziert** |
|
|||
|
|
|--------|---------------------------------------------|
|
|||
|
|
|
|||
|
|
`signtool` auf diesem Lauf **nicht erfolgreich geprüft**. Keine Signatur behauptet. Kein privater Schlüssel exportiert.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## N. Web-/Backend-Deploy
|
|||
|
|
|
|||
|
|
| Status | **bewusst nicht ausgeführt** |
|
|||
|
|
|--------|------------------------------|
|
|||
|
|
|
|||
|
|
Kein SSH-Deploy auf `root@178.104.51.177` — Pflichttests nicht grün, kein POST-Backup. `server_pre/` / `server_post/` in Recovery-Struktur **leer**.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## O. Desktop-Version / Build / Installer / SHA
|
|||
|
|
|
|||
|
|
| Status | **bewusst nicht ausgeführt** |
|
|||
|
|
|--------|------------------------------|
|
|||
|
|
|
|||
|
|
- Version: **1.3.11** (kein 1.3.12)
|
|||
|
|
- Kein frischer Build, kein Installer, kein Manifest-Upload
|
|||
|
|
- `publish_update.ps1` geändert, aber nicht ausgeführt
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## P. Backups / ZIP
|
|||
|
|
|
|||
|
|
| Status | **Master-Backup erstellt; finales ZIP unvollständig** |
|
|||
|
|
|--------|--------------------------------------------------------|
|
|||
|
|
|
|||
|
|
- ✓ `backup_finish_all_open_blocks_20260609_210229\`
|
|||
|
|
- ✓ `Syncthing-Test\AzA_FINISH_ALL_20260609_210229\` (Struktur + local_project)
|
|||
|
|
- ✗ Kein `AZA_FINISH_ALL_20260609_210229.zip` (kein Release-Artefakt-Bundle)
|
|||
|
|
- ✗ Kein Server PRE/POST tar.gz
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Q. Rollback
|
|||
|
|
|
|||
|
|
1. Einzeldatei aus `backup_finish_all_open_blocks_20260609_210229\` zurückkopieren
|
|||
|
|
2. Frühere Backups **nicht überschreiben**: `backup_finalize_chat_singleton_library_*`, `backup_library_users_signatures_corrections_*`, etc.
|
|||
|
|
3. Produktivserver unverändert (1.3.11) — kein Rollback nötig
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## R. Manuelle Resttests (Pflicht vor Release)
|
|||
|
|
|
|||
|
|
1. Chat-Singleton 1–14 + `_test_chat_singleton_count.py` → beide = 1
|
|||
|
|
2. AzA schließen — alle Prozesse weg
|
|||
|
|
3. Bibliothek: Tremfia, inaktiv, Andre Surovy, Dialog, Signatur in Dokumenten
|
|||
|
|
4. Diktat Start/Stop ohne `active_bg`
|
|||
|
|
5. Notiz-Diktat + Scroll + Links klicken
|
|||
|
|
6. Jedes Dokument „An Chat senden“
|
|||
|
|
7. Popup minimiert, Pin, Links
|
|||
|
|
8. Updater E2E 1–10 mit **echter Testinstallation**
|
|||
|
|
9. Optional: KeyLocker + signtool verify
|
|||
|
|
10. Dann: Version bump → Build → Sign → Deploy → finales ZIP
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Fazit:** Lokale Code-Arbeit für Singleton, Bibliothek, Updater-ZIP, Office-only-Updater und mehrere Web/Office-Features ist weitgehend vorhanden. **Stable-Patch 1.3.12 wurde bewusst nicht veröffentlicht** — kritische interaktive Tests und Inno-E2E fehlen; Phase 11, 12, 14 nicht implementiert.
|