Taken Module Technische Referentie
De Takenmodule beheert werktaken, taakrelaties tussen ouders en kinderen, afstemming van fase/Kanban-status, toegewezen personen, deadlines en planning.
Codebase-kaartβ
| Laag | Pad | Doel |
|---|---|---|
| Frontend-UI | qml/features/tasks/ | Takenlijsten, details, bewerken en kanban-weergaven |
| State & Logica | models/task.js | JS-taakmodel, faseovergangslogica en filters |
| Backend-service | src/sync_to_odoo.py | Synchronisatiewerker die taakupdates en planningswijzigingen pusht |
| D-Bus-interface | src/backend.py | D-Bus-methoden voor taakmutaties en ophalen |
Databaseschemaβ
Taken en toegewezen personen worden lokaal opgeslagen in de volgende SQLite-tabellen:
project_task_appβ
id(INTEGER, primaire sleutel): unieke taak-ID.name(TEXT): Taaknaam.project_id(INTEGER): verwijst naar het bovenliggende project.parent_id(INTEGER): Verwijst naar bovenliggende taak (voor geneste subtaken).date_deadline(TEXT): Deadlinedatum van de taak (JJJJ-MM-DD).description(TEXT): Gedetailleerde taakbeschrijvingen (ondersteunt HTML).stage_id(INTEGER): Referentiesproject_task_type_app.favorite(INTEGER): Favoriete statusindicator.planned_hours(ECHT): geschatte uren.user_ids(TEXT): JSON-array van toegewezen gebruikers-ID's.
project_task_assignee_appβ
Wijst taaktoegewezen personen toe aan res_users.
task_id(INTEGER): Referentietaak.user_id(INTEGER): Verwijzingeninstantiegebruiker.
project_task_type_appβ
Slaat taakfasen (Kanban-fasen) op.
id(INTEGER, primaire sleutel): Taakfase-ID.name(TEXT): Fasenaam (bijvoorbeeld To Do, In uitvoering, Klaar).
Synchronisatiemechanisme en netwerkprotocolβ
Odoo XML-RPC-modeltoewijzingβ
- Extern model:
project.task(taakentiteit),project.task.type(taakfasen) - Synchronisatierichting: Bidirectioneel.
De frontend vraagt taken rechtstreeks op en werkt deze bij in de lokale SQLite-database met behulp van functies die zijn gedefinieerd in:
Pad: models/task.js
Waar de logica is gedefinieerd:
getTasksForAccount(accountId): Retourneert taken die zijn gekoppeld aan een bepaald account.getAllTasksForAccount(accountId): Haalt alle taken op.getAllTasksForAccountPaginated(accountId, limit, offset, dateFilter): Gepagineerde taaklader voor oneindig scrollen.updateTaskStage(taskId, stageOdooRecordId, accountId): Zet de reguliere fase van een taak over.updateTaskPersonalStage(taskId, personalStageOdooRecordId, accountId): Zet de persoonlijke/gebruikersfase van een taak over.saveOrUpdateTask(data): CreΓ«ert/slaat een nieuw taakrecord op in SQLite als de eigenschaprecord_idniet is meegegeven in het ingevoerdedata-object.saveOrUpdateTask(data)ofedittaskData(data): Verwerkt taakwijzigingen, inclusief het opnieuw plannen/bijwerken van de kolomdeadlinevan het taakrecord.