372 lines
7.1 KiB
TypeScript
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;
|
|
}
|
|
}
|