Files
sp80/.planning/codebase/INTEGRATIONS.md
2026-03-13 01:08:16 +08:00

191 lines
5.7 KiB
Markdown

# External Integrations
**Analysis Date:** 2026-03-13
## APIs & External Services
**Backend API Integration:**
- **Status:** Not yet implemented
- **Evidence:** No fetch/axios/API client code found in source files
- **Pattern Used:** Static mock data in view components
**Current Data Approach:**
- All data is hardcoded/mock data within components
- Examples:
- `RainfallView.tsx` - Static rainfall data array
- `StationInfoView.tsx` - Hardcoded station information
- `FlashMemoryView.tsx` - Mock file list and content
- `ADCSettingView.tsx` - Mock ADC channel readings
- `CalibrationView.tsx` - Mock sensor calibration status
**Planned Integration Points:**
Based on view structure, expected API endpoints include:
- `/api/rainfall` - Rainfall measurement data
- `/api/station` - Station configuration and status
- `/api/adc` - ADC channel readings
- `/api/calibration` - Sensor calibration data
- `/api/files` - Flash memory file management
- `/api/gprs` - GPRS settings and connectivity
- `/api/network` - Network configuration
- `/api/auth` - Authentication (login/logout)
## Data Storage
**Databases:**
- **Type:** None detected in frontend
- **Pattern:** This is a pure frontend application
- **Expected Backend:** RTU device likely exposes REST API or WebSocket
**File Storage:**
- **Frontend:** Local filesystem access not implemented
- **Flash Memory View:** Mock file browser interface (UI only)
- **Expected:** File download/upload via API to device storage
**Caching:**
- **Current:** React state only (useState)
- **No external caching libraries detected**
## Authentication & Identity
**Auth Provider:**
- **Status:** UI only - Login form present but not functional
- **Location:** `src/app/components/views/LoginView.tsx`
- **Current:** Static credentials display ("admin / admin")
- **Implementation:** Basic form without API integration
**Auth Pattern:**
- Username/password form
- "Remember me" checkbox (localStorage potential)
- Login status indicator in header (mock state)
- Expected: JWT or session-based auth with backend
## Monitoring & Observability
**Error Tracking:**
- **Service:** None detected
- **Implementation:** No error boundaries or logging framework
**Logs:**
- **Approach:** Console logging only (default)
- **No structured logging detected**
## Communication Protocols
**GPRS/Cellular:**
- **UI Location:** `src/app/components/views/GPRSSettingView.tsx`
- **Configuration:** Server URL, Port, Upload Interval settings
- **Integration:** Form UI only - no actual GPRS client code
**Network Setup:**
- **UI Location:** `src/app/components/views/NetworkSetupView.tsx`
- **Expected:** IP configuration, DNS, Gateway settings
**Mobile Setting:**
- **UI Location:** `src/app/components/views/MobileSettingView.tsx`
- **Purpose:** SMS/cellular configuration for RTU
## Hardware Integration
**ADC (Analog-to-Digital Converter):**
- **UI Location:** `src/app/components/views/ADCSettingView.tsx`
- **Channels:** 4 channels displayed (Water Level, Temperature, Pressure, Flow Rate)
- **Integration:** Voltage and raw value display expected from hardware
**Sensors:**
- **Rainfall Sensor** - `RainfallView.tsx`, `RainfallSettingView.tsx`
- **Water Level Sensor** - `LevelSettingView.tsx`
- **Temperature/Pressure** - `ADCSettingView.tsx`
- **Evaporation Sensor** - `EVAPSettingView.tsx`
- **Siren Control** - `SirenSettingView.tsx`
**Status Monitoring:**
- Header displays: Online status, battery voltage, solar voltage
- Mock state only - no real hardware polling
## Environment Configuration
**Required Environment Variables (Expected):**
Based on typical RTU applications:
```
VITE_API_BASE_URL=http://device.local/api
VITE_WS_URL=ws://device.local/ws
VITE_DEVICE_ID=STN-001
```
**Current State:**
- No `.env` files present
- No environment variable usage detected
- All values hardcoded
**Secrets Location:**
- Not applicable (no backend integration yet)
## Webhooks & Callbacks
**Incoming:**
- None detected
- Expected: WebSocket for real-time sensor data
**Outgoing:**
- None detected
- Expected: HTTP POST for data upload to server
## CI/CD & Deployment
**Hosting:**
- **Platform:** Figma Make (inferred from package name `@figma/my-make-file`)
- **Build Command:** `vite build`
- **Output:** Static SPA files in `dist/`
**CI Pipeline:**
- None detected (no `.github/workflows`, `.gitlab-ci.yml`, etc.)
## Integration Gaps
**Missing Critical Integrations:**
1. **Backend API Client**
- Missing: fetch/axios configuration
- Impact: Application shows only static data
- Recommendation: Add API client with error handling
2. **WebSocket Connection**
- Missing: Real-time sensor data updates
- Impact: Manual refresh required for data updates
- Recommendation: Implement WebSocket for live data
3. **Authentication Flow**
- Missing: Login/logout API integration
- Impact: Auth is UI-only
- Recommendation: Connect to device auth endpoint
4. **File Operations**
- Missing: Download/delete API calls
- Impact: Flash memory is read-only mock
- Recommendation: Implement file API client
5. **Hardware Commands**
- Missing: Save settings to device
- Impact: Settings forms don't persist
- Recommendation: Add POST endpoints for configuration
## Third-Party Services Summary
**Currently Integrated:**
| Service | Purpose | Location |
|---------|---------|----------|
| Lucide React | Icons | All view components |
| Radix UI | Accessible components | `src/app/components/ui/` |
**Recommended for Integration:**
| Service | Purpose | Use Case |
|---------|---------|----------|
| axios/fetch | HTTP client | API communication |
| SWR/React Query | Data fetching | Caching and synchronization |
| zod | Validation | API response validation |
| WebSocket API | Real-time | Sensor data streaming |
---
*Integration audit: 2026-03-13*