Skip to content

Conversation

@SimonHeybrock
Copy link
Member

@SimonHeybrock SimonHeybrock commented Dec 9, 2025

Still testing/refining this, not intended for review/merge at this point

Enables running the dashboard with --transport=http to inject data via POST /api/data without requiring a Kafka broker. This simplifies testing, development, and automated screenshot generation.

Key additions:

  • HttpTransport with QueueableMessageSource for receiving da00-encoded data
  • Tornado endpoint at /api/data accepting base64-encoded da00 payloads
  • Screenshot script with pre-configured fixtures for reproducible captures
  • Unit tests for the HTTP transport components

Usage:
python -m ess.livedata.dashboard.reduction --instrument dummy --transport http python scripts/screenshot_dashboard.py --output-dir screenshots/

SimonHeybrock and others added 3 commits December 9, 2025 11:01
Enables running the dashboard with --transport=http to inject data via
POST /api/data without requiring a Kafka broker. This simplifies testing,
development, and automated screenshot generation.

Key additions:
- HttpTransport with QueueableMessageSource for receiving da00-encoded data
- Tornado endpoint at /api/data accepting base64-encoded da00 payloads
- Screenshot script with pre-configured fixtures for reproducible captures
- Unit tests for the HTTP transport components

Usage:
  python -m ess.livedata.dashboard.reduction --instrument dummy --transport http
  python scripts/screenshot_dashboard.py --output-dir screenshots/

Original prompt: "Please do not copy. We need to make this ready in this branch/worktree!"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Replace the hardcoded inject_screenshot_data() function with a declarative
registry system. Data generators are now registered with decorators and
automatically matched to workflow configurations.

Key changes:
- Add FixtureRegistry class with @register decorator for data generators
- Load job_numbers from workflow_configs.yaml (single source of truth)
- Move data generators to instrument-specific modules (dummy/__init__.py)
- Add README.md documenting how to add new screenshot scenarios

This eliminates duplication of workflow IDs and job UUIDs across multiple
files, and reduces boilerplate when adding new fixtures.

Prompt: find out and think about how the added screenshot feature can be made
more convenient and simpler to (re)use. I do not want an over-engineered
solution though, it needs to stay pragmatic (but has to be clean and reusable).
- Fix Callable type annotation in screenshot_dashboard.py
- Fix scipp array syntax in timeseries generator (use dims=['time'] kwarg)
- Improve README with complete examples for both 1D and 2D data

The timeseries fixture was created by a Haiku agent following the docs,
revealing the API syntax gap that is now addressed in the examples.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant