refactor(typings): Refactor user and profile models; update API response types

This commit is contained in:
Tran Anh Tuan
2026-01-24 18:18:16 +07:00
parent 1a06328c77
commit b0b09a86b7
43 changed files with 1035 additions and 967 deletions

36
src/services/master/typings/alarm.d.ts vendored Normal file
View File

@@ -0,0 +1,36 @@
declare namespace MasterModel {
interface SearchAlarmPaginationBody extends SearchPaginationBody {
order?: 'name' | undefined;
thing_name?: string;
thing_id?: string;
level?: number;
}
interface AlarmsResponse {
total?: number;
limit?: number;
order?: string;
dir?: string;
alarms?: Alarm[];
}
interface ConfirmAlarmRequest {
id?: string;
description?: string;
thing_id?: string;
time?: number;
}
// Alarm
interface Alarm {
name?: string;
time?: number;
level?: number;
id?: string;
confirmed?: boolean;
confirmed_email?: string;
confirmed_time?: number;
confirmed_desc?: string;
thing_id?: string;
thing_name?: string;
thing_type?: string;
}
}

11
src/services/master/typings/auth.d.ts vendored Normal file
View File

@@ -0,0 +1,11 @@
declare namespace MasterModel {
interface LoginRequestBody {
guid: string;
email: string;
password: string;
}
interface LoginResponse {
token?: string;
}
}

52
src/services/master/typings/group.d.ts vendored Normal file
View File

@@ -0,0 +1,52 @@
declare namespace MasterModel {
interface GroupBodyRequest {
id?: string;
name: string;
parent_id?: string;
description?: string;
metadata?: GroupMetadata;
}
interface AddGroupBodyResponse extends Partial<GroupBodyRequest> {
id: string;
}
interface GroupMetadata {
code?: string;
short_name?: string;
has_thing?: boolean;
[key: string]: unknown;
}
interface GroupResponse {
total?: number;
level?: number;
name?: string;
groups?: GroupNode[];
}
interface GroupNode {
id: string;
name: string;
owner_id: string;
description: string;
metadata: GroupMetadata;
level: number;
path: string;
parent_id?: string;
created_at?: string;
updated_at?: string;
children?: GroupNode[]; // Đệ quy: mỗi node có thể có children là mảng GroupNode
[key: string]: any; // Nếu có thêm trường động
}
interface GroupQueryParams {
level?: number;
tree?: boolean;
[key: string]: any;
}
interface AssignMemberRequest {
group_id: string;
type: 'users' | 'admin' | 'things' | undefined;
members: string[];
}
}

31
src/services/master/typings/log.d.ts vendored Normal file
View File

@@ -0,0 +1,31 @@
declare namespace MasterModel {
interface SearchLogPaginationBody extends SearchPaginationBody {
from?: number;
to?: number;
publisher?: string;
subtopic?: string;
}
type LogTypeRequest = 'user_logs' | undefined;
interface LogResponse {
offset?: number;
limit?: number;
publisher?: string;
from?: number;
to?: number;
format?: string;
total?: number;
messages?: Message[];
}
interface Message {
channel?: string;
subtopic?: string;
publisher?: string;
protocol?: string;
name?: string;
time?: number;
string_value?: string;
}
}

73
src/services/master/typings/thing.d.ts vendored Normal file
View File

@@ -0,0 +1,73 @@
declare namespace MasterModel {
interface SearchThingPaginationBody<T = SearchThingMetadata>
extends SearchPaginationBody {
order?: string;
metadata?: T;
}
interface SearchThingMetadata {
external_id?: string;
state_level?: string; // vd: "normal,warning,critical,sos"
/** kết nối */
connected?: boolean;
group_id?: string; // "id1,id2,id3"
}
// Thing
interface ThingReponseMetadata {
address?: string;
alarm_list?: string;
cfg_channel_id?: string;
connected?: boolean;
ctrl_channel_id?: string;
data_channel_id?: string;
enduser?: string;
external_id?: string;
group_id?: string;
req_channel_id?: string;
state?: string;
state_level?: number;
state_updated_time?: number;
type?: string;
updated_time?: number;
}
interface ThingsResponse<
T extends ThingReponseMetadata = ThingReponseMetadata,
> extends PaginationReponse {
metadata?: ThingsResponseMetadata;
things?: Thing<T>[];
}
interface ThingsResponseMetadata {
total_connected?: number;
total_filter?: number;
total_sos?: number;
total_state_level_0?: number;
total_state_level_1?: number;
total_state_level_2?: number;
total_thing?: number;
}
interface Thing<T extends ThingReponseMetadata = ThingReponseMetadata> {
id?: string;
name?: string;
key?: string;
metadata?: T;
}
// Thing Policy
interface ThingPolicyResponse extends PaginationReponse {
metadata?: null;
things?: ThingPolicy[];
}
interface ThingPolicy {
policies?: Policy[];
thing_id?: string;
thing_name?: string;
external_id?: string;
}
type Policy = 'read' | 'delete' | 'write';
}

44
src/services/master/typings/user.d.ts vendored Normal file
View File

@@ -0,0 +1,44 @@
declare namespace MasterModel {
interface SearchUserPaginationBody extends SearchPaginationBody {
order?: 'email' | 'name' | undefined;
email?: string;
metadata?: Partial<UserMetadata>;
}
interface ChangePasswordRequestBody {
old_password: string;
password: string;
}
interface UserResponse {
id?: string;
email?: string;
metadata?: UserMetadata;
}
interface UserMetadata {
frontend_thing_id?: string;
frontend_thing_key?: string;
full_name?: string;
phone_number?: string;
telegram?: string;
user_type?: 'admin' | 'enduser' | 'sysadmin' | 'users';
}
// User
interface CreateUserMetadata extends UserMetadata {
group_id?: string;
}
interface CreateUserBodyRequest extends Partial<UserResponse> {
password: string;
full_name?: string;
metadata?: CreateUserMetadata;
}
interface UserListResponse {
total?: number;
offset?: number;
limit?: number;
users: UserResponse[];
}
}