Files
FE-DEVICE-SGW/src/services/controller/typings.d.ts
2025-11-20 16:21:17 +07:00

372 lines
7.1 KiB
TypeScript

/* eslint-disable */
// 该文件由 OneAPI 自动生成,请勿手动修改!
declare namespace API {
interface LoginRequestBody {
username: string;
password: string;
}
interface LoginResponse {
token?: string;
}
// Thông tin 1 entity
interface Entity {
id: string;
type: string;
name: string;
}
// Trigger điều kiện trong TCR
interface Trigger {
entityID: string;
gt: number;
lt: number;
}
// Command thực thi trong TCR
interface Command {
to: string;
params: string;
type: string;
}
// Cấu hình ngày/tuần/tháng/năm của TCR
interface ActiveDay {
activeDateRange: string[];
dayInWeek: string[];
dayInMonth: string[];
deactiveInYear: string[];
}
// TCR = Trigger Condition Rule
interface TCR {
id: string;
enable: boolean;
description: string;
name: string;
trigger: Trigger[];
conditions: any[]; // chưa rõ cấu trúc nên tạm để any[]
duration: number;
commands: Command[];
sendEvent: boolean;
eventID: string;
makeAlarm: string;
alarmLevel: number;
activeDay: ActiveDay;
activeTime: number[]; // [start, end]
}
// Sự kiện
interface Event {
evtid: string;
content: string;
}
// Node chính (mỗi thiết bị / sensor)
interface Node {
nid: string;
subtype?: string; // có thể không có (ví dụ hum:0:21)
enable: boolean;
name: string;
entities: Entity[];
TCR?: TCR[]; // không phải node nào cũng có
events?: Event[];
}
// Response root
interface NodeResponse {
nodes: Node[];
synced: boolean;
}
interface EntityResponse {
id: string;
v: number;
vs: string;
t: number;
type: string;
}
interface TransformedEntity {
id: string;
value: number;
valueString: string;
time: number;
type: string;
}
interface ShipDetail {
id: string;
thing_id: string;
owner_id: string;
name: string;
ship_type: number;
home_port: number;
ship_length: number;
ship_power: number;
reg_number: string;
imo_number: string;
mmsi_number: string;
fishing_license_number: string;
fishing_license_expiry_date: Date;
province_code: string;
ship_group_id: string;
created_at: Date;
updated_at: Date;
}
interface GPSResonse {
lat: number;
lon: number;
s: number;
h: number;
fishing: boolean;
}
interface ShipTrackPoint {
time: number;
lon: number;
lat: number;
s: number;
h: number;
}
// Trips
interface FishingGear {
name: string;
number: string;
}
interface TripCost {
type: string;
unit: string;
amount: string;
total_cost: string;
cost_per_unit: string;
}
interface TripCrewPerson {
personal_id: string;
name: string;
phone: string;
email: string;
birth_date: Date; // ISO string (có thể chuyển sang Date nếu parse trước)
note: string;
address: string;
created_at: Date;
updated_at: Date;
}
interface TripCrews {
role: string;
joined_at: Date;
left_at: Date | null;
note: string | null;
Person: TripCrewPerson;
}
interface FishingLogInfo {
fish_species_id?: number;
fish_name?: string;
catch_number?: number;
catch_unit?: string;
fish_size?: number;
fish_rarity?: number;
fish_condition?: string;
gear_usage?: string;
}
interface FishingLog {
fishing_log_id?: string;
trip_id: string;
start_at: Date; // ISO datetime
end_at: Date; // ISO datetime
start_lat: number;
start_lon: number;
haul_lat: number;
haul_lon: number;
status: number;
weather_description: string;
info?: FishingLogInfo[];
sync: boolean;
}
interface NewFishingLogRequest {
trip_id: string;
start_at: Date; // ISO datetime
start_lat: number;
start_lon: number;
weather_description: string;
}
interface Trip {
id: string;
ship_id: string;
ship_length: number;
vms_id: string;
name: string;
fishing_gears: FishingGear[];
crews?: TripCrews[];
departure_time: string; // ISO datetime string
departure_port_id: number;
arrival_time: string; // ISO datetime string
arrival_port_id: number;
fishing_ground_codes: number[];
total_catch_weight: number | null;
total_species_caught: number | null;
trip_cost: TripCost[];
trip_status: number;
approved_by: string;
notes: string | null;
fishing_logs: FishingLog[] | null; // tuỳ dữ liệu chi tiết có thể định nghĩa thêm
sync: boolean;
}
interface TripUpdateStateRequest {
status: number;
note?: string;
}
interface Alarm {
name: string;
t: number; // timestamp (epoch seconds)
level: number;
id: string;
}
interface AlarmResponse {
alarms: Alarm[];
level: number;
}
//Fish
interface FishSpeciesResponse {
id: number;
name: string;
scientific_name: string;
group_name: string;
species_code: string;
note: string;
default_unit: string;
rarity_level: number;
created_at: string;
updated_at: string;
is_deleted: boolean;
}
interface FishRarity {
id: number;
code: string;
label: string;
description: string;
iucn_code: any;
cites_appendix: any;
vn_law: boolean;
}
// SOS
interface SosRequest {
message?: string;
}
interface SosResponse {
active: boolean;
message?: string;
started_at?: number;
}
// Node
interface Welcome {
nodes?: Node[];
synced?: boolean;
}
interface Node {
nid?: string;
subtype?: string;
enable?: boolean;
name?: string;
entities?: Entity[];
TCR?: Tcr[];
events?: Event[];
}
interface Tcr {
id?: string;
enable?: boolean;
description?: string;
name?: string;
trigger?: Trigger[];
conditions?: any[];
duration?: number;
commands?: Command[];
sendEvent?: boolean;
eventID?: string;
makeAlarm?: string;
alarmLevel?: number;
activeDay?: ActiveDay;
activeTime?: number[];
}
interface ActiveDay {
activeDateRange?: any[];
dayInWeek?: any[];
dayInMonth?: any[];
deactiveInYear?: any[];
}
interface Command {
to?: string;
params?: string;
type?: string;
}
interface Trigger {
entityID?: string;
gt?: number;
lt?: number;
}
interface Entity {
id?: string;
type?: string;
name?: string;
}
interface Event {
evtid?: string;
content?: string;
}
// Banzone
export interface Zone {
id?: string;
name?: string;
type?: number;
conditions?: Condition[];
enabled?: boolean;
updated_at?: Date;
geom?: Geom;
}
export interface Condition {
max?: number;
min?: number;
type?: Type;
to?: number;
from?: number;
}
export enum Type {
LengthLimit = 'length_limit',
MonthRange = 'month_range',
}
export interface Geom {
geom_type?: number;
geom_poly?: string;
geom_lines?: string;
geom_point?: string;
geom_radius?: number;
}
}