Repository navigation
Admin OP Phase 2: Media facet + Freshness report header - #2089
Merged
Merged
Conversation
This was referenced Aug 31, 2026
Merged
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.
Tutorials Admin OP — Phase 2: Media facet + Freshness report header
Adds object-store visibility and freshness run-history to the Tutorials admin Object Page. Builds on Phase 1 (#2088, merged).
Spec:
docs/superpowers/specs/2026-08-31-tutorials-admin-op-enhancements-design.md(§WS5)Plan:
docs/superpowers/plans/2026-08-31-tutorials-admin-op-phase2-media-freshness.mdWhat changed (6 TDD tasks)
Media facet (images + assets)
byteSize : Integer64onTutorialImages+TutorialAssets, persisted at ingest (buffer.length) in both stores (image-store.cjs,attachment-store.cjs) + both ingest handlers.AdminServiceprojections of both entities (@readonly @cds.redirection.target: false) +Tutorials.images/assetsassociations joined onslugandchannel='prod'(no QA-channel leak). ThecontentAttachments composition auto-exposes → native Fiori download link.sourceUrl(GitHub link viaDataFieldWithUrl),mimeType,byteSize,contentHash,channel(+filenamefor assets).Freshness report header
Tutorials.freshnessReportsassociation + a "Freshness Reports" facet (runAt / status / model / cost / openHighCount / error) sorted newest-first via@UI.PresentationVariant.Deployment safety (verified)
TutorialImages/TutorialAssetsare live prod.hdbtableentities — this PR deliberately does not journal them, sobyteSizedeploys as a safe HDI auto-ALTER TABLE ADD(no.hdbmigrationtable, nodb/last-dev/csn.jsonchange → thecds-build-stagingcheck stays green). An early attempt that journaled them (a deploy hazard) was caught and reverted during review.D1 (no object-store binding in
mta.yaml) remains a separate ops task — the Media facet renders regardless of backing store. D2:byteSizeonly; width/height deferred.Review
Subagent-driven: per-task review + a final Opus whole-branch review — clean, no Critical/Important, deployment-safety items explicitly verified. Unit tests: 5 new files / 9 tests green. The media-exposure hybrid guard is deferred to a bound HANA env (run post-deploy).
Follow-ups (non-blocking)
byteSizeuntil next (re)ingest — expected ("captured at ingest").byteSizerenders as a raw Int64 number (no unit formatting) — cosmetic.Not in this PR
Phase 3 (Knowledge-Graph facet) plan is written and ready to execute next.