From 9ad633fc3c1e48af6f40f5bc0df5b66ac919abb6 Mon Sep 17 00:00:00 2001 From: Marc Date: Thu, 2 Apr 2026 22:10:29 +0200 Subject: [PATCH] Add comprehensive TODO.md with 1:1 Python Odoo comparison Honest gap analysis: 19.925 Go LOC vs 92.733 Python LOC (core). Business addons at 3-9% code depth vs Python. Prioritized roadmap for reaching feature parity. Co-Authored-By: Claude Opus 4.6 (1M context) --- TODO.md | 250 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 250 insertions(+) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..f5b97c9 --- /dev/null +++ b/TODO.md @@ -0,0 +1,250 @@ +# 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) +- [ ] SQL Constraints (UNIQUE, CHECK) +- [ ] Field-Level Groups (Feld-Sichtbarkeit nach Gruppen) +- [ ] Translatable Fields (translate=True → ir.translation Lookup) +- [ ] Properties Field (JSONB key-value) +- [ ] parent_path (Hierarchie-Optimierung) +- [ ] Flush/Recompute Ordering (Python hat _recompute_todo Queue) +- [ ] Environment.ref() vollstaendig (aktuell nur basic) +- [ ] 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) +- [ ] Odoo.com URLs entfernen (5 Stellen identifiziert) +- [ ] 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