feat: wire up copyright scan integration with moderation service (#382)
* feat: wire up copyright scan integration with moderation service
- add ModerationSettings to config (service URL, auth token, timeout)
- create moderation client module to call /scan endpoint
- hook into upload flow with fire-and-forget background task
- scan runs after successful track commit, doesn't affect upload status
- add 8 tests covering success, timeout, disabled, and error scenarios
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: add missing logfire[sqlalchemy] dep to copyright scan script
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: store scan errors as clear results instead of leaving tracks unscanned
when moderation service can't process a file (too short, bad format, etc.),
we now store a clear result with error info in raw_response so the track
isn't stuck in limbo forever.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
authored by
zzstoatzz.io
Claude
and committed by
GitHub
434fa34f
222975aa