Sacha Al Himdani
ef2e99d86c
Add measure-document linking
...
Introduce the ability to link measures to documents, following the
existing pattern used by controls and risks. This includes:
- Database migration for measures_documents join table
- Coredata MeasureDocument struct with insert/delete operations
- Document service methods for listing/counting by measure ID
- Measure service CreateDocumentMapping/DeleteDocumentMapping methods
- Cleanup of measure-document mappings on document archive
- GraphQL mutations, inputs, payloads, and Measure.documents field
- DocumentConnection.TotalCount support for measure resolver
- MCP linkMeasure/unlinkMeasure updated to support documents
- MCP listMeasureDocuments tool
- Frontend MeasureDocumentsTab with LinkedDocumentsCard integration
- Authorization actions for measure document mapping
- E2e tests for measure document mapping
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com >
2026-04-03 17:51:31 +02:00
..
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-04-02 14:37:29 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-18 19:19:04 +01:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-21 19:16:19 +01:00
2026-03-31 13:31:30 +02:00
2026-04-02 14:37:29 +02:00
2026-04-02 14:37:29 +02:00
2026-03-31 13:31:30 +02:00
2026-04-02 14:37:29 +02:00
2026-04-02 14:37:29 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-03-31 13:31:30 +02:00
2026-04-02 14:37:29 +02:00
2026-03-31 14:11:57 +02:00
2026-04-02 14:37:29 +02:00
2026-04-02 14:49:13 +02:00
2026-04-02 14:49:13 +02:00
2026-04-02 16:32:38 +02:00
2026-04-02 10:59:25 +02:00
2026-04-03 08:33:37 +02:00
2026-04-03 17:51:31 +02:00