Files
goodie/TODO.md
2026-04-03 13:20:03 +02:00

251 lines
8.0 KiB
Markdown

# odoo-go TODO — Weg zur 1:1 Paritaet mit Python Odoo
Stand: 2026-04-02 | Go: 19.925 LOC | Python Referenz: 92.733 LOC (core) + Addons
---
## Legende
- [ ] Offen
- [x] Erledigt
- ~70% = UI/Demo funktioniert, ~25% = Code-Tiefe vs Python
---
## 1. ORM-Kern (aktuell ~75%)
### Erledigt
- [x] CRUD (create/read/write/unlink)
- [x] Domain-Compiler (AND/OR/NOT, child_of, parent_of, any, dot-notation JOINs)
- [x] read_group mit Aggregation (sum/avg/min/max/count, Date-Granularitaet)
- [x] Computed Fields mit Dependency-Tracking
- [x] _inherits (Delegation: res.users→res.partner, product.product→product.template)
- [x] Related Fields (Read + Write-back)
- [x] Record Rules (domain_force parsing, global AND + group OR)
- [x] Copy/Duplicate mit IsCopyable
- [x] Constraints in Create + Write
- [x] Readonly-Skip in Write
- [x] active_test Auto-Filter in Search
- [x] Onchange mit Compute-Triggering
- [x] sanitizeFieldValue (false→nil fuer non-boolean)
- [x] name_search / name_create
### Offen
- [ ] _inherit (Model-Extension/Mixin) — aktuell nur neue Models, kein Erweitern bestehender
- [ ] Inverse Fields (Compute write-back via benannte Methode)
- [ ] Multi-hop Related Fields (aktuell nur single-hop "fk.field")
- [ ] Batch-Create (Liste von Values statt einzeln)
- [ ] Prefetch/Lazy Loading (aktuell alles auf einmal)
- [x] SQL Constraints (UNIQUE, CHECK)
- [ ] Field-Level Groups (Feld-Sichtbarkeit nach Gruppen)
- [x] Translatable Fields (translate=True → ir.translation Lookup)
- [ ] Properties Field (JSONB key-value)
- [ ] parent_path (Hierarchie-Optimierung)
- [ ] Flush/Recompute Ordering (Python hat _recompute_todo Queue)
- [x] Environment.ref() vollstaendig
- [ ] Recordset Arithmetic (+ - & | Operatoren vollstaendig)
---
## 2. Web/RPC Server (aktuell ~80%)
### Erledigt
- [x] JSON-RPC Dispatch (/web/dataset/call_kw, call_button)
- [x] web_search_read / web_read / web_save
- [x] web_read_group / read_group
- [x] O2M Child Records in web_read Response
- [x] get_views mit Comodel-Metadaten
- [x] Onchange RPC
- [x] Action Loading (/web/action/load)
- [x] Menu Loading (/web/webclient/load_menus)
- [x] Session Management (PostgreSQL-persistent)
- [x] File Upload/Download (ir.attachment)
- [x] CSV Export (/web/export/csv)
- [x] HTML Reports (/report/html/)
- [x] Translations Endpoint
- [x] call_button mit Action-Return
- [x] get_formview_action / name_create / ir.http stub
### Offen
- [ ] PDF Reports (wkhtmltopdf oder Go-PDF-Library)
- [ ] QWeb Template Engine (Report-Templates wie Python)
- [ ] /web/dataset/export (XLSX Export)
- [ ] /web/action/run (Server Actions ausfuehren)
- [ ] /web/view/edit_custom (Custom View Saves)
- [ ] /web/model/get_definitions
- [ ] Kanban auto_unfold (Gruppen standardmaessig offen mit Records)
- [ ] Binary Field Serving (Bilder in Form-Views)
- [ ] Websocket/Longpoll (Bus fuer Live-Updates)
- [ ] Mail-Integration (SMTP senden)
---
## 3. Views/UI (aktuell ~70%)
### Erledigt
- [x] List View (auto-generiert + stored)
- [x] Form View (auto-generiert + stored, mit Header-Buttons)
- [x] Kanban View (auto-generiert + stored)
- [x] Search View (auto-generiert mit Filters/Group-By)
- [x] Stored Views aus DB (14 Views)
- [x] Auto-generierte Views als Fallback
- [x] O2M Inline-Listen in Form-Views (editable)
- [x] Statusbar Widget mit clickable States
### Offen
- [ ] View Inheritance (XPath-basiert, inherit_id)
- [ ] Pivot View
- [ ] Graph View
- [ ] Calendar View
- [ ] Gantt View
- [ ] Activity View
- [ ] Map View
- [ ] View Customization (ir.ui.view.custom)
- [ ] Dynamic Visibility (invisible/readonly Conditions in XML)
- [ ] Widget-System (many2one_avatar, priority, statusbar etc.)
- [ ] Chatter/Mail-Thread in Form-Views
---
## 4. Business-Module (aktuell ~25% Code-Tiefe)
### Account (1.072 / 40.910 LOC = 2.6%)
- [x] account.move (Invoice CRUD, action_post, button_cancel)
- [x] account.move.line (Buchungszeilen)
- [x] account.journal, account.account, account.tax
- [x] account.payment + payment.register Wizard
- [ ] Reconciliation (Payment↔Invoice Matching) — **KRITISCH**
- [ ] Bank Statements (Import, Matching)
- [ ] Tax Reports (Umsatzsteuervoranmeldung)
- [ ] Asset Management
- [ ] Aged Receivable/Payable Reports
- [ ] Fiscal Year / Period Management
- [ ] Payment Provider Integration
- [ ] Chart of Accounts Import (volle l10n_de)
### Sale (641 / 8.009 LOC = 8%)
- [x] sale.order + sale.order.line (CRUD, Confirm, Create Invoice)
- [x] Computed Amounts (untaxed, tax, total, line subtotal)
- [ ] Sale Order Line Tax-Berechnung (tax_id → tax lines)
- [ ] Pricelist-Support (Rabatte, Staffelpreise)
- [ ] Quotation Templates
- [ ] Sale Order Cancellation + Refund
- [ ] Delivery Integration (Lieferschein-Erstellung korrekt)
- [ ] Margin-Berechnung
- [ ] Sale Reports (Revenue, Pipeline)
### Stock (588 / 17.672 LOC = 3.3%)
- [x] stock.picking, stock.move, stock.location, stock.warehouse
- [x] stock.quant (Basic)
- [ ] Quant-Management (Reservation, Unreserve) — **KRITISCH**
- [ ] Stock Valuation (FIFO, Average Cost)
- [ ] Reorder Rules (stock.warehouse.orderpoint)
- [ ] Barcode/Lot Tracking
- [ ] Inventory Adjustments
- [ ] Stock Reports (Valuation, Moves)
- [ ] Multi-Warehouse Routing
- [ ] Package Management
### Purchase (350 / 3.977 LOC = 8.8%)
- [x] purchase.order + purchase.order.line (CRUD, Confirm)
- [ ] 3-Way Matching (PO → Receipt → Bill)
- [ ] Purchase Agreements
- [ ] Vendor Bills aus PO erstellen
- [ ] Purchase Reports
### CRM (300 / 5.019 LOC = 6%)
- [x] crm.lead + crm.stage + crm.lost.reason
- [x] Pipeline Kanban mit Stages
- [x] Won/Lost Actions
- [ ] Lead Scoring / Probability
- [ ] Email Integration (Lead aus Email)
- [ ] Activities / Planned Actions
- [ ] Lead Assignment Rules
- [ ] CRM Reports (Pipeline, Revenue)
### HR (200 / 4.609 LOC = 4.3%)
- [x] hr.employee, hr.department, hr.job
- [ ] Contracts (hr.contract)
- [ ] Leave Management (hr.leave)
- [ ] Attendance Tracking
- [ ] Payroll Integration
- [ ] Employee Documents
### Project (200 / 6.730 LOC = 3%)
- [x] project.project, project.task
- [ ] Task Stages / Kanban
- [ ] Timesheet Integration
- [ ] Project Updates / Milestones
- [ ] Burndown Charts
---
## 5. System/Admin (aktuell ~68%)
### Erledigt
- [x] Settings-Seite (res.config.settings mit Firmen-Fields)
- [x] Users/Companies/Groups Verwaltung
- [x] Technical Menu (Views, Actions, Parameters, Security, Logging)
- [x] Session-Persistenz (PostgreSQL)
- [x] ir.config_parameter (get_param/set_param)
- [x] ir.cron Model (registriert)
- [x] ir.logging Model
- [x] res.lang + ir.translation Models
- [x] Password Hashing (bcrypt)
- [x] change_password Methode
### Offen
- [ ] ir.cron Runner (Goroutine Scheduler der Jobs ausfuehrt)
- [ ] Mail Server (ir.mail_server, SMTP Config)
- [ ] Authentik SSO / OAuth2 (geplant, siehe memory)
- [ ] API Key Auth (Token-basierter Zugriff)
- [ ] Module Install/Upgrade Lifecycle
- [ ] XML Data Loading (aus Addon data/ Ordnern)
- [ ] User Audit Log (wer hat was geaendert)
- [ ] Database Backup/Restore
- [ ] Multi-Database Support
---
## 6. Infrastruktur
### Erledigt
- [x] Docker Compose (Go Server + PostgreSQL)
- [x] OWL 19.0 Frontend eingebettet
- [x] JS Transpiler (ES6→odoo.define)
- [x] XML Template Compiler
- [x] CSS Bundling
- [x] Database Manager (/web/database/manager)
### Offen
- [ ] Tests (aktuell 0 Go-Tests fuer ORM)
- [ ] CI/CD Pipeline
- [ ] Migrations (Schema-Upgrades bei Model-Aenderungen)
- [ ] Performance-Benchmarks
- [ ] Logging Framework (strukturiert, nicht nur log.Printf)
- [ ] Configuration File (statt nur Env-Vars)
- [x] Odoo.com URLs entfernt (alle 5 Stellen)
- [ ] Health-Check erweitern (DB + Dependencies)
---
## Priorisierung fuer naechste Sessions
### Prio 1 — Blockiert echte Nutzung
1. Account Reconciliation (Payment↔Invoice)
2. Stock Quant Management (Reservation)
3. View Inheritance (XPath)
4. PDF Reports (wkhtmltopdf)
### Prio 2 — Verbessert UX stark
5. Kanban auto_unfold
6. Binary Field Serving (Bilder)
7. Pivot/Graph Views
8. Dynamic Visibility in Views
### Prio 3 — Vervollstaendigung
9. ir.cron Runner
10. Mail Server Integration
11. Authentik SSO
12. Tests schreiben
13. Weitere Module vertiefen