What this page shows
Portrait Generation Report is a read-only activity report for the game portrait image workflow.
It shows when a portrait was generated or reused for a source game, and when that portrait was
sent to one or more target brands.
Use it to answer:
- did a portrait generation or sync attempt run for this game?
- which brand was the source, and which brand was the target?
- did the attempt succeed, fail, skip, or finish with a warning?
- if target sync ran, which target brands succeeded or failed?
- is there an image link that can be opened for review?
When to use it
- investigate missing or outdated portrait images on game cards
- check whether a target brand received the generated portrait
- troubleshoot failed or skipped portrait sync results
- search activity by game identifier, game id, batch id, target brand, status, action, or event type
- compare source generation events with target sync events for the same game
How to read the table
Each table row is one recorded portrait activity.
Dateis when the activity was recorded, displayed in UTC.Eventseparates source generation from target sync.Gameshows the game identifier and game id when known.SourceandTargetshow the brands involved in the activity.Actionexplains the step that ran, such as reuse, generation, result application, lookup, or target update.Statusshows the row outcome: success, error, skipped, pending, or success with warning.Targetssummarizes nested target-brand results asOKandErrcounts.Errorshows the most relevant failure or skip reason when one exists.Imageopens the portrait URL returned for that activity when one is available.
Rows with target-brand details can be expanded. The expanded section shows each target brand, its target status, the target-side game identifier when known, any target-specific error, and the target image link when available.
Filters
Filters are staged until Search is pressed. Typing in text filters and pressing Enter also
applies the current filter values.
Start dateandEnd daterestrict activity by recorded date.Statusrestricts rows to one outcome.Eventrestricts rows to source generation or target sync.Actionrestricts rows to one workflow step.Identifiersearches the game identifier recorded on the activity.Game IDsearches the numeric game id or the request game id.Batch IDfinds rows for a submitted portrait batch.Target brandsearches the direct target brand and any nested target sync entries.
Reset clears all filters and returns to the first page.
End Date is not expanded through the selected calendar day. The report uses an inclusive upper boundary at the start of that selected UTC date. To include activity throughout a final UTC day, select the following date, noting that an event exactly at midnight on that following date is also included.
Setup required for new activity
This report does not start generation. It only shows activity that the portrait workflow recorded.
The portrait System Settings group controls generation and cross-brand sync:
| Setting | Operator impact |
|---|---|
portraitGenEnabled | Allows new automatic batches to be submitted. Turning it off does not stop already submitted batches from being processed. |
portraitGenModel | Image-generation model. |
portraitGenQuality | Requested output quality. |
portraitGenSize | Requested portrait dimensions. |
portraitGenS3Prefix | Storage prefix for generated portraits. |
portraitGenBatchMax | Maximum games in one submitted batch; zero or empty means unlimited. |
portraitSyncEnabled | Enables propagation to configured target brands. |
portraitSyncTargets | Target-brand definitions for fan-out. |
portraitSyncApiToken | Shared encrypted token used to authenticate target sync. |
portraitSyncOverwriteExisting | Controls whether an existing target portrait can be replaced. |
The shared OpenAI key, working image storage, eligible games with a source square image, and active submit/process scheduling are also required.
If the report is empty
Check whether portrait generation is enabled, whether eligible games are missing a portrait, whether source images exist, whether submit/process jobs have run, and whether the current filters exclude all activity.
An empty report is not automatically an error. It can mean that no source-generation or target-sync activity has been recorded yet.
Common questions
Why do I see OK 0 and Err 0?
That row has no nested target-brand results. This is normal for source-generation rows that only record the source portrait step, or for activities that did not fan out to target brands.
Why does a skipped row still matter?
Skipped rows are useful because they explain that the workflow intentionally did not continue.
For example, a sync can be skipped when a required image, brand, identifier, or validation step is
missing. Read the Error column or expanded target details for the reason.
Why can the same game appear more than once?
The report records activities, not unique games. A single game can have a source-generation row, one or more target-sync rows, retries, and later reruns from a different batch.
Does this report change game images?
No. This page only reads recorded activity. It can refresh, search, reset filters, expand target details, and open image links. It does not generate images or update target brands by itself.
Access recommendation
The page requires PortraitGenerationReport: R. Give access to casino/content operations or technical support users who investigate image generation and target synchronization. Generation and sync mutations use separate controls and permissions.
Known caveats
- The report is an activity log view, so it shows what was recorded by the portrait workflow rather than a full current-state inventory of every game image.
- Date filters use the activity recorded time. They do not mean the image is still current on every target brand.
- Target success and error counts come from nested target results on the activity row. If a workflow did not write target details, the row can still be useful but the target counters will be zero.
- The table is sorted newest first, so reruns and retries appear above older attempts for the same game.
- Setup values are owned by System Settings; this report does not edit them.