Skip to content

chore: dossiq integration batch 25 - #4134

Merged
rubenvdlinde merged 12 commits into
developmentfrom
integration/dq-batch-25
Oct 21, 2026
Merged

rubenvdlinde merged 12 commits into
developmentfrom
integration/dq-batch-25

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Dossiq integration batch 25: the L7 renames, on @conduction/nextcloud-vue ^2.120.0 (library batch 24d).

Included

  • L7 feature/dq-abstract-l7-rename 38339ee. 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 commit therefore takes only the four rename commits (0a337ff..38339ee) over development; history keeps both parents.

How the renames meet development

  • Routes: the renamed API paths each keep their old path as a deprecated alias. That includes /api/document-review/reports/throughput, which sits beside development's /api/reports/offered.
  • Reports page: it is now DocumentReviewReports at /document-review-reports, still the library dashboard development made it. /woo-reports redirects there, and the stored layout pageId is unchanged.
  • Layout ids: family-plan becomes goal-plan and case-pipelinq-contact-moments becomes linked-contact-moments, over development's library-config bodies. RewriteRenamedLayoutIds carries stored layouts over.
  • Admin tabs: they take the new file names (ChecklistTemplates, DeadlineDefinitions, DelegationMatrix) within development's tab set. The tabs and views development retired stay retired.
  • Review-report settings: the declared fields write the renamed keys (reviewerThroughputReport and friends). The server reads those keys, and CarryRenamedSettingKeys fills them from the old ones.
  • Specs: casePlanTab, renamedUiNames, wooReports and adminSettingsForms follow the merged state.

Hydra (fresh ConductionNL/.github, against development)

  • Fixed in this batch:
    • gate-25 (1 -> 16): the 15 new deprecated aliases now declare @contract exclude, as the StUF aliases already do.
    • gate-16: the RoleTreeManager watcher names its spec.
    • gate-110: the app version moves so the two new repair steps run on upgrade.
  • Left open, and not from this batch: gate-100 setup-demo-data-first. Development's setup wizard opens with organisation-details, not a welcome step. The gate only judges it because this batch touches src/manifest.json.
  • Every other gate's count matches development.

Verification (local)

  • Revert trap: every file the rename delta touches is present. The only differences are the resolutions above and DocumentReviewReportsView, which development retired.
  • composer check:strict: ALL CHECKS PASSED (PHPUnit 9323 tests, no failures).
  • npm run lint and npm run test:l10n: green.
  • npm run build: green.
  • vitest with --maxWorkers=2 on the touched specs is green (19 files; renamedUiNames was re-run after its fix).
  • _rbac appears once in the diff: a parameter of a test double in RewriteRenamedLayoutIdsTest. It has to mirror OpenRegister's searchObjectsBySlug signature, because the shared SearchesObjects helper 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

…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
…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
@github-actions

Copy link
Copy Markdown
Contributor

Quality Report — ConductionNL/dossiq @ 44feec3

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.

@rubenvdlinde
rubenvdlinde merged commit f5de15d into development Oct 21, 2026
43 of 50 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant