- Add OpenCV as default camera backend, nokhwa as optional alternative
- Make camera backends mutually exclusive via feature flags (opencv_camera, nokhwa_camera)
- Remove deprecated hardware_camera feature, use nokhwa_camera instead
- Add main thread camera initialization for macOS TCC authorization
- Add pre-opened capture storage via static Mutex for async compatibility
- Add pixel format conversion utilities (pixel_convert.rs)
- Update all cfg guards from hardware_camera to nokhwa_camera
macOS requires camera authorization requests on main thread. OpenCV's
VideoCapture::new() is now called before tokio runtime starts, with
the handle stored for later use by async code.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement the Vida detection algorithm for meteor and fireball detection
based on the RMS/CMN paper. Key features:
- Frame accumulator: 256-frame FTP compression (maxpixel, avepixel, stdpixel, maxframe)
- Meteor detector: K1=1.5 threshold, Hough transform, temporal propagation verification
- Fireball detector: K1=4 threshold, 3D point cloud analysis for very bright meteors
- Binary image downsampling with OR operation to preserve trajectory connectivity
- Star extraction for astrometric calibration
- FTPdetect format output for interoperability with RMS tools
- test-vida CLI command for testing detection on video files
Performance optimizations:
- Binary image downsampling instead of FTP downsampling (fixes false positives)
- Inline centroid calculation with bounding box scan
- ~100ms/block processing time (down from 377ms)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace OpenSSL with rustls for better cross-compilation support
- Fix tpm_attestation field name typos (was tmp_attestation)
- Add missing Debug traits to FramePool structs
- Fix borrow checker issue in device registration
- Add missing module declarations in main.rs
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Successfully implemented comprehensive monitoring and alerting infrastructure for the Meteor platform across all three stories of Epic 3:
**Story 3.5: 核心业务指标监控 (Core Business Metrics Monitoring)**
- Instrumented NestJS web backend with CloudWatch metrics integration using prom-client
- Instrumented Go compute service with structured CloudWatch metrics reporting
- Created comprehensive Terraform infrastructure from scratch with modular design
- Built 5-row CloudWatch dashboard with application, error rate, business, and infrastructure metrics
- Added proper error categorization and provider performance tracking
**Story 3.6: 关键故障告警 (Critical System Alerts)**
- Implemented SNS-based alerting infrastructure via Terraform
- Created critical alarms for NestJS 5xx error rate (>1% threshold)
- Created Go service processing failure rate alarm (>5% threshold)
- Created SQS queue depth alarm (>1000 messages threshold)
- Added actionable alarm descriptions with investigation guidance
- Configured email notifications with manual confirmation workflow
**Cross-cutting Infrastructure:**
- Complete AWS infrastructure as code with Terraform (S3, SQS, CloudWatch, SNS, IAM, optional RDS/Fargate)
- Structured logging implementation across all services (NestJS, Go, Rust)
- Metrics collection following "Golden Four Signals" observability approach
- Configurable thresholds and deployment-ready monitoring solution
The platform now has production-grade observability with comprehensive metrics collection, centralized monitoring dashboards, and automated critical system alerting.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
📋 What Was Accomplished
Backend Changes:
- ✅ Enhanced API Endpoint: Updated GET /api/v1/events to accept optional date query parameter
- ✅ Input Validation: Added YYYY-MM-DD format validation to PaginationQueryDto
- ✅ Database Filtering: Implemented timezone-aware date filtering in EventsService
- ✅ Controller Integration: Updated EventsController to pass date parameter to service
Frontend Changes:
- ✅ Date Picker Component: Created reusable DatePicker component following project design system
- ✅ Gallery UI Enhancement: Integrated date picker into gallery page with clear labeling
- ✅ State Management: Implemented reactive date state with automatic re-fetching
- ✅ Clear Filter Functionality: Added "Clear Filter" button for easy reset
- ✅ Enhanced UX: Improved empty states for filtered vs unfiltered views
🔍 Technical Implementation
API Design:
GET /api/v1/events?date=2025-08-02&limit=20&cursor=xxx
Key Files Modified:
- meteor-web-backend/src/events/dto/pagination-query.dto.ts
- meteor-web-backend/src/events/events.service.ts
- meteor-web-backend/src/events/events.controller.ts
- meteor-frontend/src/components/ui/date-picker.tsx (new)
- meteor-frontend/src/app/gallery/page.tsx
- meteor-frontend/src/hooks/use-events.ts
- meteor-frontend/src/services/events.ts
✅ All Acceptance Criteria Met
1. ✅ Backend API Enhancement: Accepts optional date parameter
2. ✅ Date Filtering Logic: Returns events for specific calendar date
3. ✅ Date Picker UI: Clean, accessible interface component
4. ✅ Automatic Re-fetching: Immediate data updates on date selection
5. ✅ Filtered Display: Correctly shows only events for selected date
6. ✅ Clear Filter: One-click reset to view all events
🧪 Quality Assurance
- ✅ Backend Build: Successful compilation with no errors
- ✅ Frontend Build: Successful Next.js build with no warnings
- ✅ Linting: All ESLint checks pass
- ✅ Functionality: Feature working as specified
🎉 Epic 2 Complete!
With Story 2.9 completion, Epic 2: Commercialization & Core User Experience is now DONE!
Epic 2 Achievements:
- 🔐 Full-stack device status monitoring
- 💳 Robust payment and subscription system
- 🛡️ Subscription-based access control
- 📊 Enhanced data browsing with detail pages
- 📅 Date-based event filtering