Repository navigation
feat(flow-runs): per-flow run summary, and since/flowIds on the run history - #4672
Merged
Merged
Conversation
…istory GET /api/flow-runs/summary returns per flow the newest visible run and the number of visible runs since a moment, scoped like the history before the read. GET /api/flow-runs narrows to several flows and a start moment. Assisted-by: ClaudeCode:claude-opus-5-5
Contributor
Quality Report — ConductionNL/openregister @
|
| Check | PHP | Vue | Security | License | Tests |
|---|---|---|---|---|---|
| lint | ✅ | ||||
| phpcs | ✅ | ||||
| phpmd | ✅ | ||||
| psalm | ✅ | ||||
| phpstan | ✅ | ||||
| phpmetrics | ✅ | ||||
| eslint | ✅ | ||||
| stylelint | ✅ | ||||
| build | ✅ | ||||
| check-specs | ✅ | ||||
| test-l10n | ✅ | ||||
| test-l10n-parity | ✅ | ||||
| format | ✅ | ||||
| check-schema-l10n | ✅ | ||||
| composer | ✅ | ✅ 173/173 | |||
| npm | ✅ | ✅ 648/648 | |||
| app:check-code | ⏭️ | ||||
| info.xml | ✅ | ||||
| REUSE | ✅ | ||||
| lockfile sync | ✅ | ||||
| PHPUnit | ✅ 26260/26260 · 25 skipped | ||||
| Newman | ✅ 714/714 | ||||
| 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-16 23:48 UTC
Download the full PDF report from the workflow artifacts.
This was referenced Oct 17, 2026
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.
What
GET /api/flow-runs/summary?flowIds=a,b&since=<ISO 8601>returns, per flow, the newest visible run (uuid, status, error, created, updated; never the log) and the number of visible runs created since the moment (default seven days ago). Every requested flow gets an entry, so a flow that never ran readslastRun: null, runsSince: 0. The run history (GET /api/flow-runs) also acceptsflowIdsandsince, so a "runs this week" list shows exactly the runs the summary counted. An unreadablesinceis a 400 on both reads.Why
The shared flows index in
@conduction/nextcloud-vue(board PqFlows, every app's Flows page) draws "Last run" and "Runs this week" per flow, a "With errors" filter and a "Runs this week" tab. Deriving those from the history read (at most 200 rows, no time filter) undercounts a busy flow and loads every run log.Authorization
The summary is scoped exactly like the history, and the scope is decided before the read: an administrator sees all runs; anyone else counts the runs they triggered plus the runs of flows they own (same
scopeToVisiblepredicate, sameFlowCaller::idsOwnedByCaller()); a request without a session returns an empty result and issues no query.Verified locally
FlowRunControllerTest(32 tests, 4 new) andFlowRunMapperSummaryTest(3 new), green.composer check:strictonce (COMPOSER_PROCESS_TIMEOUT=0): lint, migration-version, phpcs, phpmd, psalm ("No errors found"), phpstan ("No errors") green; test:all 26,276 tests with 15 errors, all inAuditTrail*/DraftRemovalAuditRowDB tests that need the Nextcloud server'sOC\DB\Schema\Table(MigratedSqliteDatabase), untouched by this change and red without it.appinfo/routes.php(line length, comment case) are not part of this change.AI-assisted: written with Claude Code, reviewed by the lane before opening.
Consumer: ConductionNL/nextcloud-vue#1705