Sample screenshots now carry the beam mark as normalized metadata for the
AareDB frontend overlay — the JPEG stays unmarked so raw images remain
clean for YOLO training.
- upload_image: optional `beam_center` sent as a JSON form field.
- ScreenshotService.save_to_db: normalizes the beam mark by the captured
frame dims -> {x,y,ar,[w,h]} via _beam_center_metadata (+ unit tests).
- save_screenshot_db: reads get_beam_mark() (centre) best-effort. Beam
SIZE in px is a TODO(calibration) hook -> crosshair until filled, then
a rectangle matching the gridscan.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>