grabbit 2b79cf37d0 fix: type errors and build issues
- Fix user.id -> user.userId in subscription and device registration
- Fix StatusIndicator to use DeviceStatus enum instead of strings
- Add Recharts type declarations for React 19 compatibility
- Add lightningcss WASM fallback for CI builds
- Remove unused LogsModule from backend
- Simplify CLAUDE.md documentation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 18:03:59 +08:00

421 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
Distributed meteor monitoring network with microservices architecture. Four main services communicate via REST APIs and SQS queues.
## Core Services
| Service | Technology | Entry Point | Port |
|---------|------------|-------------|------|
| meteor-frontend | Next.js 15, React 19, TailwindCSS 4 | `src/app/layout.tsx` | 3000 |
| meteor-web-backend | NestJS, TypeORM, PostgreSQL | `src/main.ts` | 3001 |
| meteor-compute-service | Go 1.24, AWS SDK | `cmd/meteor-compute-service/main.go` | - |
| meteor-edge-client | Rust, Tokio, OpenCV | `src/main.rs``src/app.rs` | - |
## Development Commands
```bash
# Full stack development
npm run dev # Start backend (3001) + frontend (3000) concurrently
npm run dev:frontend # Next.js only
npm run dev:backend # NestJS only
# Building
npm run build # Build all services
npm run build:frontend
npm run build:backend
# Testing
npm run test # Unit tests (frontend + backend)
npm run test:frontend # Jest + Testing Library
npm run test:backend # Jest for NestJS
npm run test:integration # Backend integration with real DB
npm run test:e2e # Playwright E2E tests
npm run test:fullstack # Complete test suite
# Single test execution
cd meteor-web-backend && npm test -- --testPathPattern=events.service
cd meteor-frontend && npm test -- --testPathPattern=gallery
cd meteor-frontend && npx playwright test --grep="Gallery page"
# Test environment
./test-setup.sh # Start LocalStack + test PostgreSQL (port 5433)
npm run clean:test # Teardown test containers
# Linting
npm run lint # Lint all
npm run lint:frontend # ESLint for Next.js
npm run lint:backend # ESLint + Prettier for NestJS
# Database migrations (from meteor-web-backend/)
npm run migrate:up
npm run migrate:down
npm run migrate:create <name>
```
### Edge Client (Rust)
```bash
cd meteor-edge-client
cargo build --release
cargo run -- run --camera sim:pattern:meteor # Simulated camera
cargo run -- run --camera file:video.mp4 # File replay
./build.sh # Cross-compile for Raspberry Pi ARM64
# Vida Meteor Detection Testing
./target/debug/meteor-edge-client test-vida <video.mp4> # Test Vida detection on video
./target/debug/meteor-edge-client run --camera file:video.mp4 # Run with video file
# Advanced Memory Management Testing
./target/debug/meteor-edge-client test # Core frame pool tests
./target/debug/meteor-edge-client test-adaptive # Adaptive pool management
./target/debug/meteor-edge-client test-integration # Complete integration tests
./target/debug/meteor-edge-client test-ring-buffer # Ring buffer & memory mapping
./target/debug/meteor-edge-client test-hierarchical-cache # Hierarchical cache system
# Production Monitoring & Optimization
./target/debug/meteor-edge-client monitor # Production monitoring system
# Phase 5: End-to-End Integration & Deployment
./target/debug/meteor-edge-client test-integrated-system # Integrated memory system
./target/debug/meteor-edge-client test-camera-integration # Camera memory integration
./target/debug/meteor-edge-client test-meteor-detection # Real-time meteor detection
./demo_integration_test.sh # Integration test
```
### Compute Service (Go)
```bash
cd meteor-compute-service
go run cmd/meteor-compute-service/main.go
go test ./...
```
## Data Flow
1. **Edge Client** captures frames via camera, detects meteors, uploads events to backend
2. **Backend API** receives uploads, stores in S3, pushes to SQS for processing
3. **Compute Service** consumes SQS, validates events, writes analysis results to PostgreSQL
4. **Frontend** displays gallery, dashboard, and analysis views via React Query
## Database Schema
Uses node-pg-migrate. Entities in `meteor-web-backend/src/entities/`:
- **Users**: `UserProfile` + `UserIdentity` (multiple auth methods)
- **Devices**: `Device` + `InventoryDevice` + `DeviceRegistration` + `DeviceCertificate`
- **Events**: `RawEvent``ValidatedEvent``AnalysisResult`
- **Subscriptions**: `SubscriptionPlan` + `UserSubscription` + `PaymentRecord`
- **Weather**: `WeatherStation` + `WeatherObservation` + `WeatherForecast`
## API Structure
- Base path: `/api/v1/`
- JWT Bearer token authentication
- Key modules: `AuthModule`, `DevicesModule`, `EventsModule`, `PaymentsModule`, `SubscriptionModule`
## Frontend Architecture
- App Router in `src/app/` (dashboard, gallery, analysis, devices, settings)
- Components in `src/components/` organized by domain (charts, device-registration, ui)
- API services in `src/services/`
- Auth context in `src/contexts/auth-context.tsx`
- React Query for server state, React Hook Form + Zod for forms
## Backend Architecture
- NestJS modules with domain-driven organization
- TypeORM entities with PostgreSQL
- Pino structured logging with correlation IDs
- Prometheus metrics via MetricsModule
- Stripe integration in PaymentsModule
## Coding Standards
- **TypeScript**: ESLint + Prettier, PascalCase for classes, camelCase for functions
- **Rust**: `cargo fmt`, snake_case modules, prefer `?` over `unwrap()`
- **Go**: `go fmt` + `go vet`, standard project layout
## Infrastructure
- Terraform configs in `infrastructure/`
- AWS: S3 (media), SQS (event queue), RDS (PostgreSQL), CloudWatch (logs/metrics)
- LocalStack for local development
- Docker Compose for test environment
## Key Type Considerations
- User type uses `userId` not `id` (defined in `src/contexts/auth-context.tsx`)
- `DeviceStatus` is an enum - use enum values not strings with StatusIndicator
- Recharts has React 19 compatibility issues - type declarations in `src/types/recharts.d.ts`
## Additional Testing Commands
```bash
# Single E2E test
cd meteor-frontend && npx playwright test --grep="Gallery page"
# Integration test for specific feature
cd meteor-web-backend && npm run test:integration -- --testPathPattern=events
# Rust edge client memory management tests
cd meteor-edge-client && cargo test
cd meteor-edge-client && ./target/debug/meteor-edge-client test
cd meteor-edge-client && ./target/debug/meteor-edge-client test-adaptive
cd meteor-edge-client && ./target/debug/meteor-edge-client test-integration
cd meteor-edge-client && ./target/debug/meteor-edge-client test-ring-buffer
```
## Production Deployment
### Docker Support
- Dockerfiles for all services
- Next.js standalone output mode
- Multi-stage builds for optimization
### Infrastructure
- Terraform configurations in `infrastructure/`
- AWS services: RDS, S3, SQS, CloudWatch
- Environment-based configuration
### Observability
- Structured JSON logging throughout stack
- Metrics collection with Prometheus
- Health check endpoints
- Correlation IDs for request tracking
## Advanced Memory Management (Edge Client)
The meteor edge client features a sophisticated 4-phase memory optimization system designed for high-performance astronomical data processing on resource-constrained devices.
### Phase 1: Zero-Copy Architecture
- **Arc-based frame sharing** eliminates unnecessary memory copies
- **RAII pattern** ensures automatic resource cleanup
- **Event-driven processing** with efficient memory propagation
### Phase 2: Hierarchical Frame Pools
- **Multiple pool sizes**: 64KB, 256KB, 900KB, 2MB buffers
- **Adaptive capacity management** based on memory pressure
- **Historical metrics tracking** for intelligent resizing
- **Cross-platform memory pressure detection**
Key Features:
- Automatic pool resizing based on system memory usage (70%/80%/90% thresholds)
- Zero-allocation buffer acquisition with automatic return
- Comprehensive statistics tracking and monitoring
- Memory leak detection and prevention
### Phase 3: Advanced Streaming & Caching
#### Week 1: Lock-Free Ring Buffers & Memory Mapping
- **Lock-free ring buffers** using atomic operations for concurrent access
- **Memory-mapped I/O** for large astronomical datasets
- **Cross-platform implementation** (Unix libc, Windows winapi)
- **Performance benchmarks**: >3M frames/sec throughput
#### Week 2: Hierarchical Cache System
- **Multi-level cache architecture** (L1/L2/L3) with different eviction policies
- **Astronomical data optimization** with metadata support
- **Intelligent prefetching** based on access patterns
- **Memory pressure adaptation** with configurable limits
Cache Performance:
- L1: Hot data, LRU eviction, fastest access
- L2: Warm data, LFU eviction with frequency tracking
- L3: Cold data, time-based eviction for historical access
- Cache hit rates: >80% for typical astronomical workloads
### Phase 4: Production Optimization & Monitoring
#### Real-Time Monitoring System
- **Health check monitoring** with component-level status tracking
- **Performance profiling** with latency histograms and percentiles
- **Alert management** with configurable thresholds and suppression
- **Comprehensive diagnostics** including system resource tracking
#### Key Metrics Tracked:
- Memory usage and efficiency ratios
- Cache hit rates across all levels
- Frame processing latency (P50, P95, P99)
- System resource utilization
- Error rates and alert conditions
#### Production Features:
- Real-time health status reporting
- Configurable alert thresholds
- Performance profiling with microsecond precision
- System diagnostics with resource tracking
- Automated metric aggregation and retention
### Memory Management Testing Commands
```bash
cd meteor-edge-client
# Phase 2 Testing
./target/release/meteor-edge-client test # Core frame pools
./target/release/meteor-edge-client test-adaptive # Adaptive management
./target/release/meteor-edge-client test-integration # Integration tests
# Phase 3 Testing
./target/release/meteor-edge-client test-ring-buffer # Ring buffers & memory mapping
./target/release/meteor-edge-client test-hierarchical-cache # Cache system
# Phase 4 Production Monitoring
./target/release/meteor-edge-client monitor # Live monitoring system
# Phase 5 End-to-End Integration
./target/release/meteor-edge-client test-integrated-system # Integrated memory system
./target/release/meteor-edge-client test-camera-integration # Camera memory integration
./target/release/meteor-edge-client test-meteor-detection # Real-time meteor detection
```
### Phase 5: End-to-End Integration & Deployment
The final phase integrates all memory management components into a cohesive system for real-time meteor detection with camera integration.
#### Integrated Memory System
- **Unified Architecture**: All memory components work together seamlessly
- **Multi-Configuration Support**: Raspberry Pi and high-performance server configurations
- **Auto-Optimization**: Dynamic performance tuning based on system conditions
- **Health Monitoring**: Comprehensive system health reporting with recommendations
Key Components:
- Hierarchical frame pools with adaptive management
- Ring buffer streaming for astronomical frames
- Multi-level caching with prefetching
- Production monitoring with alerts
- Camera integration with memory-optimized capture
#### Camera Memory Integration
- **Memory-Optimized Capture**: Integration with hierarchical frame pools
- **Real-Time Processing**: Zero-copy frame processing pipeline
- **Buffer Management**: Adaptive capture buffer pools with memory pressure handling
- **Performance Monitoring**: Camera-specific metrics and health reporting
Camera Features:
- Multiple configuration support (Pi camera, performance camera)
- Capture buffer pool with automatic optimization
- Real-time statistics collection
- Memory pressure detection and response
- Health monitoring with diagnostic recommendations
#### Real-Time Meteor Detection Pipeline
- **Vida Algorithm**: Scientific meteor detection based on Vida et al. 2016 paper
- **Dual Detection Paths**: FireballDetector (K1=4) and MeteorDetector (K1=1.5)
- **FTP Compression**: 256 frames → 4 statistical images (maxpixel, avepixel, stdpixel, maxframe)
- **Memory-Optimized Processing**: Integrated with zero-copy architecture
- **Real-Time Performance**: ~100ms/block processing latency
#### Production-Ready Features
- **Raspberry Pi Optimization**: Conservative memory usage and CPU utilization
- **Real-Time Constraints**: Guaranteed processing latency limits
- **Error Recovery**: Robust error handling with automatic recovery
- **Performance Metrics**: Comprehensive detection and system metrics
- **Memory Efficiency**: Optimized for resource-constrained environments
### Performance Benchmarks
- **Frame Pool Operations**: >100K allocations/sec with zero memory leaks
- **Ring Buffer Throughput**: >3M frames/sec with concurrent access
- **Cache Performance**: >50K lookups/sec with 80%+ hit rates
- **Memory Efficiency**: <2x growth under sustained load
- **Production Monitoring**: Real-time metrics with <50μs overhead
This advanced memory management system enables the meteor edge client to:
1. Process high-resolution astronomical frames with minimal memory overhead
2. Adapt to varying system memory conditions automatically
3. Provide production-grade observability and monitoring
4. Maintain high performance on resource-constrained Raspberry Pi devices
5. Support real-time meteor detection with sub-millisecond processing latency
## Vida Meteor Detection Algorithm (Edge Client)
The edge client implements the Vida detection algorithm based on *"Open-source meteor detection software for low-cost single-board computers"* (Vida et al., 2016). This is the same algorithm used by the Croatian Meteor Network (CMN) and RMS project.
### Architecture Overview
```
输入帧流 (视频/摄像头)
[FrameAccumulator] - 256帧 FTP 压缩
[AccumulatedFrame] - maxpixel, avepixel, stdpixel, maxframe
├─→ [FireballDetector] - K1=4, 3D点云分析 → 火球检测
└─→ [MeteorDetector] - K1=1.5, Hough变换 → 流星检测
[VidaDetectionController] - 协调和回调
[FtpDetectWriter] - FTPdetectinfo 格式输出
```
### Core Modules (`src/detection/vida/`)
| 模块 | 功能 | 代码行数 |
|------|------|----------|
| `frame_accumulator.rs` | FTP 压缩引擎 | ~1200 |
| `accumulated_frame.rs` | FTP 数据结构 | ~700 |
| `fireball_detector.rs` | 火球检测 (K1=4) | ~800 |
| `meteor_detector.rs` | 流星检测 (K1=1.5) | ~1000 |
| `line_detector.rs` | Hough + 3D 线检测 | ~800 |
| `morphology.rs` | 形态学预处理 | ~950 |
| `star_extractor.rs` | 星点提取和天空质量 | ~1000 |
| `calibration.rs` | 测量校准 | ~1000 |
| `ftpdetect.rs` | FTPdetectinfo 输出 | ~450 |
| `controller.rs` | 主控制器 | ~470 |
| `config.rs` | 配置管理 | ~375 |
### Detection Parameters
**FireballDetector** (明亮火球):
- `k1_threshold`: 4.0 (标准差倍数)
- `min_intensity`: 40 (最小像素强度)
- 使用 3D 点云分析
**MeteorDetector** (普通流星):
- `k1_threshold`: 1.5 (标准差倍数RMS 推荐)
- `j1_offset`: 9.0 (绝对强度偏移)
- `max_white_ratio`: 0.07 (最大白像素比例)
- 使用 Hough 变换 + 时间窗口
### FTP Compression Format
256帧压缩为4个统计图像
- **maxpixel**: 每像素最大值 (流星轨迹可见)
- **avepixel**: 平均值 (排除前4大值天空背景)
- **stdpixel**: 标准差 (变化区域)
- **maxframe**: 最大值出现的帧号 (时间信息)
### Detection Pipeline
1. **帧累积**: 收集256帧实时计算统计
2. **阈值化**: 应用 K1×σ + J1 阈值
3. **形态学处理**: 清理 桥接 闭合 细化
4. **线检测**: Hough变换(2D) 点云分析(3D)
5. **时间传播**: 7个重叠窗口验证
6. **质心提取**: 亚像素精度定位
7. **输出**: FTPdetectinfo 格式
### Testing Commands
```bash
cd meteor-edge-client
# 在视频文件上测试 Vida 检测
./target/debug/meteor-edge-client test-vida video.mp4
# 使用摄像头运行
./target/debug/meteor-edge-client run --camera device:0
# 使用视频文件运行
./target/debug/meteor-edge-client run --camera file:video.mp4
```
### Performance
- **处理速度**: ~100ms/block (256帧)
- **误检率**: 0-2 /block (优化后)
- **内存效率**: 在线统计无需存储原始帧