@mytec Phase 1 - Core UI & Manual Input, Phase 2 - RF Calculation Engine, Phase 3 - Heatmap Visualization

This commit is contained in:
2026-01-30 07:12:00 +02:00
parent 343c8e078d
commit 18a7d6de81
41 changed files with 6014 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
export interface CoveragePoint {
lat: number;
lon: number;
rsrp: number; // dBm (calculated signal strength)
siteId: string; // which site provides this coverage
}
export interface CoverageResult {
points: CoveragePoint[];
calculationTime: number; // milliseconds
totalPoints: number;
settings: CoverageSettings;
}
export interface CoverageSettings {
radius: number; // km (calculation radius)
resolution: number; // meters (grid resolution)
rsrpThreshold: number; // dBm (minimum signal to display)
}
export interface GridPoint {
lat: number;
lon: number;
}

View File

@@ -0,0 +1,11 @@
export interface FrequencyBand {
value: number; // MHz
name: string; // e.g., "Band 3"
range: string; // e.g., "1710-1880 MHz"
type: 'LTE' | 'UHF' | 'VHF' | '5G' | 'Custom';
characteristics: {
range: 'short' | 'medium' | 'long';
penetration: 'poor' | 'fair' | 'good' | 'excellent';
typical: string;
};
}

View File

@@ -0,0 +1,8 @@
export type { Site, SiteFormData } from './site.ts';
export type {
CoveragePoint,
CoverageResult,
CoverageSettings,
GridPoint,
} from './coverage.ts';
export type { FrequencyBand } from './frequency.ts';

View File

@@ -0,0 +1,21 @@
export interface Site {
id: string;
name: string;
lat: number;
lon: number;
height: number; // meters above ground (1-100)
power: number; // dBm (10-50)
gain: number; // dBi (0-25)
frequency: number; // MHz (any value)
antennaType: 'omni' | 'sector';
azimuth?: number; // degrees (0-360), sector only
beamwidth?: number; // degrees (30-120), sector only
color: string; // hex color for map marker
visible: boolean;
notes?: string;
equipment?: string;
createdAt: Date;
updatedAt: Date;
}
export type SiteFormData = Omit<Site, 'id' | 'createdAt' | 'updatedAt'>;