Operator guideEN

Reporting / Portrait Generation Report

Read-only activity report for generated portrait game images and target-brand sync results.

How to use this guide

Start with the main guide

Follow the explanation and examples first. Extra definitions and formulas are available below when you need them.

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.

  • Date is when the activity was recorded, displayed in UTC.
  • Event separates source generation from target sync.
  • Game shows the game identifier and game id when known.
  • Source and Target show the brands involved in the activity.
  • Action explains the step that ran, such as reuse, generation, result application, lookup, or target update.
  • Status shows the row outcome: success, error, skipped, pending, or success with warning.
  • Targets summarizes nested target-brand results as OK and Err counts.
  • Error shows the most relevant failure or skip reason when one exists.
  • Image opens 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 date and End date restrict activity by recorded date.
  • Status restricts rows to one outcome.
  • Event restricts rows to source generation or target sync.
  • Action restricts rows to one workflow step.
  • Identifier searches the game identifier recorded on the activity.
  • Game ID searches the numeric game id or the request game id.
  • Batch ID finds rows for a submitted portrait batch.
  • Target brand searches 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:

SettingOperator impact
portraitGenEnabledAllows new automatic batches to be submitted. Turning it off does not stop already submitted batches from being processed.
portraitGenModelImage-generation model.
portraitGenQualityRequested output quality.
portraitGenSizeRequested portrait dimensions.
portraitGenS3PrefixStorage prefix for generated portraits.
portraitGenBatchMaxMaximum games in one submitted batch; zero or empty means unlimited.
portraitSyncEnabledEnables propagation to configured target brands.
portraitSyncTargetsTarget-brand definitions for fan-out.
portraitSyncApiTokenShared encrypted token used to authenticate target sync.
portraitSyncOverwriteExistingControls 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.
More details

Definitions and formulas

Open only the section you need. The relevant section opens automatically when you request help for a specific item on screen.

Actions6 topicsOpen details

Search

Applies the visible date, status, event, action, identifier, game id, batch id, and target brand filters to the report.

Action Type
filter-apply
Preconditions
Operator is viewing the Portrait Generation Report.
Side Effects
Promotes draft filter controls into the active query., Resets pagination to the first page., Sends a read-only report request., Does not generate images or update target brands.
Success State
The table reloads with rows that match the active filters.
Failure State
The page shows the load error; source activity is not changed.

Press Enter in text filters

Applies the same search behavior from text inputs without clicking the Search button.

Action Type
filter-apply
Preconditions
Focus is inside Identifier, Game ID, Batch ID, or Target brand., The pressed key is Enter.
Side Effects
Promotes draft filter values into the active query., Resets pagination to the first page.
Success State
The table reloads with matching rows.
Failure State
The page shows the load error; source activity is not changed.

Reset

Clears all draft and active filters and returns to the first page.

Action Type
filter-reset
Preconditions
Operator is viewing the Portrait Generation Report.
Side Effects
Clears date, status, event, action, identifier, game id, batch id, and target brand filters., Resets pagination to the first page., Sends a read-only report request for the unfiltered report.
Success State
The table reloads with the newest unfiltered portrait activity rows.
Failure State
The page shows the load error; source activity is not changed.

Refresh

Reloads the current active query without changing filters or pagination.

Action Type
refresh
Preconditions
Operator is viewing the Portrait Generation Report.
Side Effects
Sends the same read-only request again., Does not change any portrait workflow data.
Success State
The current page reflects the newest returned activity rows for the active query.
Failure State
The page shows the load error and keeps source activity unchanged.

Show targets / Hide targets

Opens or closes the nested target-brand results for a portrait activity row.

Action Type
row-expand
Preconditions
The row has at least one nested target result.
Side Effects
Toggles only local row expansion state., Does not send a request and does not change portrait workflow data.
Success State
The target-brand detail table is shown or hidden for that row.
Failure State
Rows without target results have no expand control.

Open image

Opens the recorded portrait image URL in a new browser tab for visual review.

Action Type
external-link
Preconditions
The row or target detail has a portrait image URL.
Side Effects
Opens a new tab through the browser., Does not regenerate, upload, or sync any image.
Success State
The image URL opens in a new tab.
Failure State
Rows without an image URL show a dash instead of a link.
Calculations8 topicsOpen details

Portrait activity scope

Logic
The report includes only portrait source-generation and target-sync activity codes., It joins recorded activity rows with activity definitions, then filters to the two portrait workflow codes., It does not scan every game record; it shows recorded workflow activity.

Date filtering

Logic
Start date keeps activity rows whose recorded timestamp is on or after the selected date., End date keeps activity rows whose recorded timestamp is on or before the selected date., Dates filter the activity record time, not the current state of the image on a game.

Text and id filtering

Logic
Identifier searches both the stored identifier and request identifier., Game ID searches the related game id plus stored game id and request game id values., Batch ID matches the stored portrait batch id exactly., Target brand searches the direct target brand and nested target result brands.

Activity row mapping

Logic
The row uses values from the activity payload when present, with the related game id used as a fallback for Game ID., The activity payload supplies source brand, target brand, identifier, action, status, image URL, error reason, error message, target counts, sync skip state, and nested target results., Nested target results remove the internal target game id field before returning rows to the page.

Date filter boundaries

Logic
Start date is compared with the recorded activity timestamp from the start of the selected UTC date., End date is compared inclusively at the start of the selected UTC date and is not expanded through that day., Selecting the following date includes the full final UTC day plus any record exactly at midnight on the following date.

Target status display

Logic
A target result displays success when the target is marked ok or synced., A target result displays skipped when it is marked skipped., Any other target result displays error.

Row error priority

Logic
The Error column prefers an explicit error message., If no explicit error message exists, it shows the error reason., If neither exists, it shows the sync skip reason., If none of those values exist, the Error column is blank.

Pagination and sort order

Logic
Matching rows are sorted by recorded date descending, then activity id descending., The report returns only the selected page size and offset., Page-size options in the UI are 10, 20, 50, and 100 rows.
Fields15 topicsOpen details

Date

When the portrait activity was recorded, displayed in UTC.

Data Type
datetime
Editable
false

Event

Activity type, either source generation or target sync.

Data Type
enum
Editable
false

Game

Game identifier with the game id shown underneath when available.

Data Type
string
Editable
false

Source

Source brand recorded for the activity.

Data Type
string
Editable
false

Target

Direct target brand recorded on the activity, when present.

Data Type
string
Editable
false

Action

Workflow step that produced the row, formatted from the stored action value.

Data Type
enum
Editable
false

Status

Outcome badge for the activity row.

Data Type
enum
Editable
false

Targets

Summary chips showing successful and failed nested target sync results.

Data Type
string
Editable
false

Error

Most relevant error, failure, or skip reason for the row.

Data Type
string
Editable
false

Image

Link that opens the portrait image URL recorded on the activity, when one exists.

Data Type
url
Editable
false

Target detail / Brand

Brand name inside the expanded target-sync result.

Data Type
string
Editable
false

Target detail / Status

Derived status badge for one target-sync result.

Data Type
enum
Editable
false

Target detail / Identifier

Target-side game identifier returned for the target brand, when known.

Data Type
string
Editable
false

Target detail / Error

Target-specific error message when that target failed or skipped.

Data Type
string
Editable
false

Target detail / Image

Link that opens the target portrait image URL when available.

Data Type
url
Editable
false
Filters9 topicsOpen details

Start date

Earliest recorded activity date included in the report.

Data Type
date
Editable
true
Behavior
Applied only after Search or Enter., Compared against the recorded activity timestamp.

End date

Inclusive upper timestamp boundary at the start of the selected UTC date.

Data Type
date
Editable
true
Behavior
Applied only after Search or Enter., Compared against the recorded activity timestamp., The backend includes records exactly at this start-of-day boundary but does not expand the value through the selected day.

Status

Filters rows by outcome.

Data Type
enum
Editable
true
Values
success, error, skipped, pending, success_with_warning

Event

Filters rows by activity type.

Data Type
enum
Editable
true
Values
Source generation, Target sync

Action

Filters rows by the workflow step recorded on the activity.

Data Type
enum
Editable
true
Values
central_reuse, openai_generated, download_resize, openai_result, apply_result, openai_submit, target_update, target_lookup, auth, validate

Identifier

Searches the game identifier or request identifier recorded on the activity.

Data Type
string
Editable
true

Game ID

Searches the related game id, stored game id, or request game id.

Data Type
string
Editable
true

Batch ID

Filters activity rows by portrait batch id.

Data Type
string
Editable
true

Target brand

Searches the direct target brand and nested target sync results.

Data Type
string
Editable
true
Metrics4 topicsOpen details

Total rows

Number of portrait activity rows matching the current filters, used by pagination.

Aliases
portrait activity count, report total, activity rows
Metric Kind
count
Formula
Count matching portrait activity rows before page limit and offset are applied.
Formula
COUNT(*) over matching activity rows.
Zero Denominator Behavior
Not applicable; this is a row count.

OK target count

Count of nested target-brand results that the portrait workflow recorded as successful for that activity row.

Aliases
successful targets, target sync success count, ok targets
Metric Kind
count
Formula
Value recorded as targetSuccessCount on the activity payload, defaulting to 0 when absent.
Formula
data_json.targetSuccessCount || 0.
Zero Denominator Behavior
Missing target details display as 0 rather than blank.

Err target count

Count of nested target-brand results that the portrait workflow recorded as failed for that activity row.

Aliases
failed targets, target sync error count, errored targets
Metric Kind
count
Formula
Value recorded as targetErrorCount on the activity payload, defaulting to 0 when absent.
Formula
data_json.targetErrorCount || 0.
Zero Denominator Behavior
Missing target details display as 0 rather than blank.

Target result status

Status badge shown for each expanded target-brand result.

Aliases
target status, target sync status, target result badge
Metric Kind
derived_status
Formula
success when the target is ok or synced; skipped when the target is skipped; otherwise error.
Formula
Target result flags are read from the activity payload; the page maps them to the displayed badge.
Zero Denominator Behavior
Not applicable; this is a per-target status.
More help

Related pages

Reporting

Canonical entrypoint for standalone reporting pages outside the main Dashboard widgets.

Reporting / Affiliate Events Report

Audit log of the events and saved amounts the platform sent to the affiliate system, with per-currency successful totals, CSV export, suspicious-traffic visibility, and a guarded force-send override.

Reporting / Bonus Performance

Grouped bonus performance report for activations, amounts, deposits, withdrawals, GGR, and NGR by bonus item.

Reporting / Card Approval Rates

Snapshot report of card deposit approval rates for NetworxPay, Paydex, and Carouseller, split by Trusted and NonTrusted players, with today versus the previous 30 days and today top decline reasons.

Reporting / Change Notification Detail

Detail page for one audit entry, including actor metadata, description, and before/after comparison views.

Reporting / Change Notifications

Audit list for recorded configuration, administrator, and system change entries with filters for actor, entity, and change type.