Skip to content

Phase 7d: Print API + QR Print Tab + Hangar Plugin (foundation MVP) #80

Description

@strausmann

Master tracking for Phase 7d implementation. Spec under review in the PR for branch `docs/phase-7d-foundation-spec`.

Scope (per spec)

Backend

  • POST /api/preview + POST /api/print with γ-hybrid PrintItem schema (name/subtitle/qr_url/image_url/copies/extras)
  • Tape-match logic with force-override + audit flag
  • Multi-item × copies → N Job rows
  • Alembic migration: Job table gains `api_key_id`, `source_ip`, `tape_match_override`, `plugin`, `plugin_item_id`

Plugin protocol

  • IntegrationPlugin.search(query, limit) → list[PluginItemSummary]
  • IntegrationPlugin.get_item(item_id) → PluginItem
  • Optional HasChildren.get_children(item_id) → list[PluginItemSummary]

Plugins

  • Grocy, SnipeIt, Spoolman: gain search() + get_item()
  • Hangar: new plugin module `backend/app/integrations/hangar/` with all 3 methods + httpx client

Frontend

  • New HTMX route `/qr-print` with platform-toggle, search-debounce, results-list, select-form
  • Per-item copies input
  • Children-toggle for hierarchical items
  • Live preview with red/green tape-match border + tape badge top-right
  • Print-button → toast with job IDs

Dependencies

Out-of-scope (Phase 7e+)

  • Aggregations templates (one big label for whole shelf)
  • Per-plugin search filters
  • Saved searches/favourites
  • Plugin config via UI
  • Multi-printer fan-out
  • Image rendering on labels (renderer falls back to QR-only for now)

Acceptance criteria

See spec Section 13 "Definition of Done for Phase 7d".

Refs #22

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions