Jira Reports
reply-pilot-jira-reports/ is a standalone long-running module for Jira
reporting snapshots and generated wallboard artifacts.
Purpose
The module keeps a local reporting copy of Jira data for one project or explicit JQL query:
- raw issue payloads in
data/raw/issues/*.jsonl - raw issue changelog payloads in
data/raw/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 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 raw Jira JSONL files. 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 completed *.jsonl files only, so it can run while a Jira
sync is writing new .tmp files.
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_BASE_URLJIRA_EMAILJIRA_API_TOKENJIRA_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 real Jira credentials are configured.
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.