Jira Reports
reply-pilot-jira-reports/ is a standalone long-running module for Jira
reporting snapshots and generated wallboard artifacts.
Purpose
The module asks reply-pilot-be to execute one project or explicit JQL query
and keeps a local reporting copy of the returned Jira data:
- current raw issue payloads in
data/raw/current/issues.jsonl - current raw issue changelog payloads in
data/raw/current/changelogs.jsonl - derived CSV statistics in
data/csv/ - generated static report pages in
data/public/
Raw JSONL is the source for local reporting. CSV and HTML files are generated outputs.
Runtime
- Docker image name:
reply-pilot-jira-reports - Container name:
reply-pilot-jira-reports - Generated report pages are served from
data/public/onhttp://127.0.0.1:9096/by default. - Public report URL:
https://reply-pilot-jira-reports.mathbox.90.cz/ - Public supplier onboarding wallboard:
https://reply-pilot-jira-reports.mathbox.90.cz/supplier-onboarding-wallboard.html - Public Zaveden supplier onboarding count wallboard:
https://reply-pilot-jira-reports.mathbox.90.cz/supplier-onboarding-zaveden-done-count-wallboard.html - Public Zaveden supplier onboarding delta wallboard:
https://reply-pilot-jira-reports.mathbox.90.cz/supplier-onboarding-zaveden-done-delta-wallboard.html - Public Rollout + Implementation supplier onboarding count wallboard:
https://reply-pilot-jira-reports.mathbox.90.cz/supplier-onboarding-rollout-implementation-count-wallboard.html - Public Rollout + Implementation supplier onboarding delta wallboard:
https://reply-pilot-jira-reports.mathbox.90.cz/supplier-onboarding-rollout-implementation-delta-wallboard.html - Public new supplier onboarding count wallboard:
https://reply-pilot-jira-reports.mathbox.90.cz/supplier-onboarding-new-count-wallboard.html - Public Supplier Alignment supplier onboarding count wallboard:
https://reply-pilot-jira-reports.mathbox.90.cz/supplier-onboarding-supplier-alignment-count-wallboard.html - Logs:
stdoutonly; inspect locally withdocker compose logs - Heartbeat:
reply-pilot-jira-reports/data/state/jira-reports-heartbeat.json - Healthcheck:
python -m reply_pilot_jira_reports healthcheck, which checks the scheduler heartbeat, the last successful publication age, and local HTTPGET /healthz
The service follows the standard module runtime contract:
/app/data,/app/conf/app/confread-onlyHOST_UIDandHOST_GIDpassed through Composerestart: unless-stopped
Commands
Project-root commands:
./script/jira-reports.sh sync-jira
./script/jira-reports.sh generate
./script/jira-reports.sh publish
./script/jira-reports.sh healthcheck
sync-jira refreshes one canonical issue/changelog snapshot. Full syncs
replace it and incremental syncs merge changed issues into it. generate
rebuilds CSV, SVG, and
staged HTML outputs from already downloaded Jira raw data. publish copies the
staged HTML and SVG files to reply-pilot-jira-reports/data/public/, where the
HTTP service serves them.
generate reads the completed current snapshot only, so it can run while a
Jira sync is writing staging files. Legacy timestamped snapshots are ignored
after the first successful current snapshot is written.
Local module commands:
cd reply-pilot-jira-reports
python -m reply_pilot_jira_reports sync-jira --full --limit 20
python -m reply_pilot_jira_reports generate
python -m reply_pilot_jira_reports publish
Long-running scheduler:
python -m reply_pilot_jira_reports scheduler
Static report server only:
python -m reply_pilot_jira_reports serve
Module scripts:
./reply-pilot-jira-reports/scripts/jira-reports-start.sh
./reply-pilot-jira-reports/scripts/jira-reports-stop.sh
./reply-pilot-jira-reports/scripts/jira-reports-deploy.sh
Configuration
Committed env template:
reply-pilot-jira-reports/.env.example
Encrypted source of truth:
secrets/local/reply-pilot-jira-reports.envsecrets/prod/reply-pilot-jira-reports.env
Important keys:
JIRA_REPORTS_ENABLEDHOST_HTTP_BINDHOST_HTTP_PORTJIRA_REPORTS_HTTP_ENABLEDJIRA_REPORTS_HTTP_HOSTJIRA_REPORTS_HTTP_PORTJIRA_REPORTS_BACKEND_BASE_URLJIRA_REPORTS_BACKEND_API_TOKEN(must match backendJIRA_REPORTS_API_TOKEN)JIRA_PROJECT_KEYJIRA_JQLJIRA_FIELDSJIRA_DOWNLOAD_CHANGELOGSJIRA_REPORTS_SYNC_INTERVAL_SECONDS
JIRA_REPORTS_ENABLED defaults to false in the committed template so the
module can be deployed before its backend bearer token is configured. Jira
site, email, API token, and optional Cloud ID remain backend-only settings.
Current Limitation
The first implementation generates current status and assignee/status summaries from the latest raw issue payload per issue. It downloads changelogs, but it does not yet calculate historical daily/monthly time-in-status or transition graphs.