Repository navigation
chore: dossiq integration batch 25 - #4134
Merged
Merged
Conversation
…n the server Add GET /api/reports/processing-time?period&caseType&view&threshold. It answers the blocks the processing-time dashboard drew from every case, case type and status loaded into the browser: sla (+ slaSummary), distribution (+ distributionTarget), trend, throughput, atRisk and breakdown, each in the shape a chart, stat or object-table widget reads through responsePath. Rows carry severity and status words beside the colour keys. A case type filter matches id or slug, `truncated` says the load hit its limit, and the reporting audience gate refuses everyone else with its sentence. The unfiltered figures are handed to the OpenRegister analytics leaf under the existing procest-sla-* keys. /api/reports/process-mining accepts `period` (preset) and `view`, and answers the summary, dwell, throughput, bottlenecks and byAssignee blocks plus the clock-disclosing column labels beside the existing report. The quarterly deadline report adds `rows`, the per-type figures as a list named by case-type title, with the penalty total in euros. The JS shaping specs (doorlooptijdHelpers, doorlooptijdChartShaping, processMiningShaping, dwellTimeClock) are ported to PHPUnit. Assisted-by: ClaudeCode:claude-opus-5-5
…s as library widgets The three report dashboards are now manifest config over chart, stat and object-table widgets on the server-shaped report endpoints; the dossiq widget components, their mixins, the shaping modules, the doorlooptijd and processMining stores and their API clients are deleted. - Processing time: four charts (compliance by type, distribution, monthly trend, weekly throughput) on /api/reports/processing-time, one view each. The cases at risk and the deadline list of one case type are the same at-risk object-table; the second is narrowed to its case type by configuration (id or slug), not by "title contains woo". Severity is a translated enum badge, so text sits beside the colour, and rows open the case. The breakdown is a sortable table that names each status band. - Process mining: four stat tiles, a dwell chart, a throughput chart and two tables on /api/reports/process-mining views. The duration headings and the dwell series name come from the report's `labels`, so they still say which clock the numbers are on; the hint sentences are subtitles. - Deadline reports: the quarterly report is an object-table over the report's `rows` with CSV export, percent and euro formats and English column text; the annual audit is three stat tiles. Quarter and year are page filters. - The mail parties report is nextcloud-vue's CnCountTablesReport, configured in mailPartiesReport.js. - The substituted-work card on My work is dropped (Ruben, 20 Oct): the work queue carries covered work. The annual audit summary adds totalEuros and warningCount; the at-risk severity reads "at risk" from fourteen days left, as the deadline list did. Depends on the unreleased nextcloud-vue branch feature/dq-abstract-l6-dash (endpoint notices, exportCsv, labelPath, namePath, quarter/year page filters, CnCountTablesReport). Assisted-by: ClaudeCode:claude-opus-5-5
…term Assisted-by: ClaudeCode:claude-opus-5-5
…old ones
What the UI calls and names no longer carries a procedure word, and
nobody who used the earlier name loses anything.
- Routes: /api/checklists, /api/cases/{id}/checklist-results,
/api/deadlines/{dashboard/kpi, reports/quarterly|annual|first-response|
open-workload-age, definitions, calendar, instances/{id}/pause|resume|
extend|complete}, /api/payments/callback and
/api/document-review/reports/throughput. Every old URL stays routed to
a <method>LegacyPath() delegate with the same auth posture (AppHost
rejects duplicate route names); the payment callback's old URL is
permanent because the payment provider is configured with it.
- Deadline reports carry generic keys beside the old ones for one
release (total, withinTermPct, penaltyTotalCents, period, year, ...).
- Processing-time series publish under dossiq-sla-* and procest-sla-*.
- Widget ids dt-* -> processing-time-*, td-* -> deadline-report-*,
family-plan -> goal-plan, case-pipelinq-contact-moments ->
linked-contact-moments; WooReports -> DocumentReviewReports at
/document-review-reports, /woo-reports redirects. RewriteRenamedLayoutIds
rewrites them in stored buildiq arrangements.
- Document review report settings on generic keys, read with a fallback
to the old keys; CarryRenamedSettingKeys copies them over.
- Settings files renamed (DeadlineDefinitionsTab, DeadlineDefinitionEditor,
DelegationMatrixTab, DelegationImportPanel, DelegationMatrixTable,
RoleAssignmentsTable, RoleTreeManager, ChecklistTemplatesTab). The role
tree is CnTreeView; the checklist template editor is CnFormDialog with
the items as sub-objects, without the Dutch placeholder.
- NC dashboard ids procest_* stay frozen.
Assisted-by: ClaudeCode:claude-opus-5-5
Assisted-by: ClaudeCode:claude-opus-5-5
…variants Assisted-by: ClaudeCode:claude-opus-5-5
…iles Assisted-by: ClaudeCode:claude-opus-5-5
…ion/dq-batch-25 The branch sits on batch 20 and carries an earlier cut of L6, which development already holds in its final form (batch 24). The merge applies only the four rename commits (0a337ff..38339ee) over development: - the throughput report moves to /api/document-review/reports/throughput, keeping the old path as a deprecated alias, beside development's offered route; the reports page becomes DocumentReviewReports at /document-review-reports (dashboard, as development made it), with a redirect from /woo-reports and its stored layout id kept; - layout ids family-plan and case-pipelinq-contact-moments become goal-plan and linked-contact-moments over development's library-config bodies; RewriteRenamedLayoutIds carries stored layouts; - the admin tabs take the new file names over development's set; the tabs and views development retired stay retired; - the declared review-report fields write the renamed setting keys, which the server reads and CarryRenamedSettingKeys fills from the old ones. # Conflicts: # appinfo/routes.php # l10n/en.js # l10n/nl.js # src/manifest.d/86-document-review-reports.json # src/manifest.json # src/registry.js # src/utils/manifestRoutes.js # src/views/settings/AdminRoot.vue # tests/vitest/casePlanTab.spec.js # tests/vitest/wooReports.spec.js
Syncs the vendored manifest schema to the installed one for the lag check. Assisted-by: ClaudeCode:claude-opus-5-5
development (batch 24) made the reports page a dashboard with no app view, so the renamed page is checked by its type and no reports view is registered. Assisted-by: ClaudeCode:claude-opus-5-5
- The fifteen deprecated path aliases declare @contract exclude, as the existing StUF aliases do: each calls the canonical method its tests cover (gate 25). - The role tree's roles watcher names its spec (gate 16). - The app version moves so the two new repair steps run on upgrade (gate 110). Assisted-by: ClaudeCode:claude-opus-5-5
rubenvdlinde
requested review from
Rem-Dam,
SudoThijn,
WilcoLouwerse,
bbrands02,
remko48 and
rjzondervan
as code owners
October 21, 2026 12:14
Contributor
Quality Report — ConductionNL/dossiq @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-manifest | ✅ | ||||
| check-vue3-compile | ✅ | ||||
| test-l10n | ✅ | ||||
| format | ❌ | ||||
| check-schema-l10n | ❌ | ||||
| check-l10n-js | ✅ | ||||
| check-debt-ratchet | ❌ | ||||
| check-types-e2e | ✅ | ||||
| composer | ✅ | ✅ 109/109 | |||
| npm | ✅ | ✅ 658/658 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ❌ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ❌ | ||||
| Newman | ⏭️ | ||||
| Playwright | ⏭️ deferred: E2E runs locally and on the promotion path only. This pull request targets development, so the suite is asked once per promotion into beta and main rather than once per push per open pull request. Run it locally with npx playwright test, or from the Actions tab on a branch with no open pull request into development. |
||||
| Hydra gates | ❌ |
Quality workflow — 2026-10-21 12:31 UTC
Download the full PDF report from the workflow artifacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dossiq integration batch 25: the L7 renames, on
@conduction/nextcloud-vue^2.120.0 (library batch 24d).Included
How the renames meet development
/api/document-review/reports/throughput, which sits beside development's/api/reports/offered.DocumentReviewReportsat/document-review-reports, still the library dashboard development made it./woo-reportsredirects there, and the stored layoutpageIdis unchanged.family-planbecomesgoal-planandcase-pipelinq-contact-momentsbecomeslinked-contact-moments, over development's library-config bodies.RewriteRenamedLayoutIdscarries stored layouts over.reviewerThroughputReportand friends). The server reads those keys, andCarryRenamedSettingKeysfills them from the old ones.casePlanTab,renamedUiNames,wooReportsandadminSettingsFormsfollow the merged state.Hydra (fresh ConductionNL/.github, against development)
@contract exclude, as the StUF aliases already do.organisation-details, not a welcome step. The gate only judges it because this batch touchessrc/manifest.json.Verification (local)
DocumentReviewReportsView, which development retired.composer check:strict: ALL CHECKS PASSED (PHPUnit 9323 tests, no failures).npm run lintandnpm run test:l10n: green.npm run build: green.--maxWorkers=2on the touched specs is green (19 files;renamedUiNameswas re-run after its fix)._rbacappears once in the diff: a parameter of a test double inRewriteRenamedLayoutIdsTest. It has to mirror OpenRegister'ssearchObjectsBySlugsignature, because the sharedSearchesObjectshelper calls it by the named argument; about 15 tests on development use the same fake.AI disclosure: Claude Code (claude-opus-5-5) assembled this integration branch.
🤖 Generated with Claude Code