6 Commits
Author SHA1 Message Date
james.maes 80b0b66c49 Merge remote-tracking branch 'origin/develop' into feature/job-progress
# Conflicts:
#	README.md
#	docs/DESIGN.md
#	pom.xml
#	src/main/java/com/kingsrook/qbits/jobs/JobsCoreContract.java
#	src/main/java/com/kingsrook/qbits/jobs/widgets/JobsWidgetRenderer.java
#	src/test/java/com/kingsrook/qbits/jobs/JobsRetentionTest.java
2026-10-14 21:12:47 -05:00
james.maesandClaude Opus 5.5 e5c6a71493 feat(progress): job log panel, live phase and percent, log retention, parent app
- Log child list on the job record (newest first), when core defines
  jobs_log
- Running jobs and the Live Progress panel show the current phase,
  percent, message, bytes and ETA from the new jobs_job progress fields,
  falling back to the rows/chunks derivation
- Retention purges jobs_log with its job
- parentAppName config places the Jobs app under a host group (for
  example Admin > Operations)

Needs QQQ 4.1.0-RC.8 (QRun-IO/qqq#1212).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 17:44:16 -05:00
james.maesandClaude Opus 5.5 f961191173 feat: built on QQQ 4.1.0-RC.7; stand-ins removed
RC.7 ships the durable jobs kernel (QRun-IO/qqq #1178, #1181, #1184, #1191,
#1195, #1201).
- Both profiles (default and demo) use 4.1.0-RC.7. The demo no longer needs a
  locally installed kernel build.
- JobsCoreContract references core's tables, enums, labels, alert names and
  joins. JobsSecurity is removed and callers use core's DurableJobsSecurity.
- JobsStorage calls StorageAction.deleteObject directly.
- Tests build the instance with core's DurableJobsMetaDataProvider (real
  record locks, joins and possible values). JobsTablesStandIn is removed.
- The Postgres DDL matches core RC.7's seven tables. The docs require RC.7
  or later.

verify: 37 tests, checkstyle clean, JaCoCo 99% instructions / 100% classes.
The demo compiles.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 16:33:32 -05:00
james.maesandClaude Opus 5.5 73538809f3 chore: remaining RC.6 references say RC.7 (storage delete, DDL tag)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 08:30:10 -05:00
james.maesandClaude Opus 5.5 dfa9ca5e37 feat: job effects in the Jobs app (outbox review, counts, retention)
The app side of QRun-IO/qqq#1191: core's transactional outbox for side effects
outside the job's database (jobs_effect).
- The job record gets an Effects child list (when core has the table).
- Needs attention shows "N effects need review"; Live Progress gets an Effects
  group (sent, pending, failed, needs review).
- Declares the alert type jobs.effect-unresolved ("Job effect needs review").
- Retention deletes a purged job's effects and keeps jobs whose effects are
  still outstanding or need review, with a summary line.
- Adds jobs_effect to the Data Analysis list and to the Postgres DDL.
- Stand-ins tagged STAND-IN(core=QRun-IO/qqq#1191, removeBy=RC.6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 07:55:33 -05:00
james.maesandClaude Opus 5.5 2d76d3b414 feat: Jobs app for QQQ durable background jobs
Scaffold per the QRun qbit repo standard:
- CircleCI orb config, release-rc workflow and dependabot;
- Maven wrapper, checkstyle, and a JaCoCo gate at 70% instructions and 90% classes;
- README, LICENSE, NOTICE, CHANGELOG, AGENTS and CLAUDE pointers.

The app (design: QRun-IO/qqq docs/specs/DURABLE-JOBS-AND-ASSISTED-BULK-LOAD.md,
section 2.12 and phase 4):
- Home, built from typed widgets read in the viewer's session:
  - an overview: now, and the last 24 hours;
  - running and queued jobs, with progress bars and record links;
  - rows per hour by process;
  - needs attention, with the errors;
  - workers;
  - 30 days of history.
- Job record: a live progress panel, chunk/row-error/event child lists,
  and the audit link for changes made by the job.
- Declarations: the jobs.job-failed and jobs.job-stalled alert types,
  and the jobs.reaper heartbeat monitor.
- Retention: a hidden scheduled purge with a standard process summary.
- Opt-in ESB, Quick Search and Data Analysis registration lists, and the
  Postgres DDL.

It builds against released 4.1.0-RC.5. The core names it needs are mirrored
in stand-ins tagged STAND-IN(core=QRun-IO/qqq#1178, removeBy=RC.6).
The -Pdemo server runs against a locally installed kernel build and takes
the screenshots in docs/screenshots.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 23:21:02 -05:00