Add Blinker signal handlers to emit OTEL spans for app CRUD operations and
user feedback events. All handlers use enum-based span/counter names for
type safety.
App lifecycle telemetry:
- app_was_created: Emit span + requests counter
- app_was_deleted: Emit span + requests counter
- app_was_updated: Emit span only
Feedback telemetry:
- feedback_was_created: Emit span + feedback counter
- Privacy gating via exporter.include_content flag
Infrastructure changes:
- Add missing signal exports to events/app_event.py
- Create events/feedback_event.py with feedback_was_created signal
- Emit app_was_deleted signal in services/app_service.py
- Emit feedback_was_created signal in services/message_service.py
Handlers are registered at import time via @signal.connect decorators and
loaded during ext_enterprise_telemetry.init_app().