feat: add Node ACS admin workflows

This commit is contained in:
unknown
2026-07-16 11:00:09 +09:00
parent a25872394a
commit c6f342a861
24 changed files with 3442 additions and 266 deletions

View File

@@ -33,6 +33,43 @@ export interface Zone {
securityLevel: number;
}
export interface PurposeCode {
id: number;
code: string;
name: string;
sortOrder: number;
active: boolean;
customAllowed: boolean;
}
export interface Watcher1Settings {
name: string;
team: string;
contact: string;
}
export interface Team {
id: number;
code: string;
name: string;
active: boolean;
defaultRoles: Role[];
}
export interface AdminUser {
id: number;
username: string;
fullName: string;
department?: string;
teamId?: number;
teamCode?: string;
teamName?: string;
email?: string;
enabled: boolean;
locked: boolean;
roles: Role[];
}
export type VisitStatus =
| 'DRAFT'
| 'PENDING'
@@ -52,6 +89,8 @@ export interface VisitRequestCreate {
/** Detail room (콤보박스, 기타 자유 입력) — auxiliary, no separate QR. */
roomZone?: string;
purpose: string;
purposeCode?: string;
purposeDetail?: string;
/** 작업명 — optional concrete task detail, stored separately from purpose. */
workName?: string;
/** 현장감시자2 (담당자 입력). 담당자·감시자1은 서버가 채운다. */
@@ -67,12 +106,15 @@ export interface VisitRequestView {
visitorName: string;
company?: string;
contact?: string;
email?: string;
vehicleNo?: string;
hostId: number;
hostName: string;
hostDepartment?: string;
zoneName?: string;
purpose: string;
purposeCode?: string;
purposeDetail?: string;
workName?: string;
controlName?: string;
controlTeam?: string;
@@ -109,6 +151,26 @@ export interface ExcelImportResult {
success: boolean;
}
export interface AdminExcelImportRow {
rowNumber: number;
status: 'CREATE' | 'UPDATE' | 'ERROR' | string;
key?: string;
summary?: string;
errors: string[];
warnings: string[];
}
export interface AdminExcelImportResult {
totalRows: number;
createCount: number;
updateCount: number;
errorCount: number;
warningCount: number;
applied: boolean;
success: boolean;
rows: AdminExcelImportRow[];
}
export interface InsideVisitor {
visitRequestId: number;
visitorName: string;
@@ -170,7 +232,7 @@ export interface AuditLog {
at: string;
actorId?: number;
actorUsername?: string;
action: 'APPROVE' | 'REJECT' | 'BLACKLIST_ADD' | 'BLACKLIST_REMOVE';
action: 'APPROVE' | 'REJECT' | 'BLACKLIST_ADD' | 'BLACKLIST_REMOVE' | 'ADMIN_CONFIG_UPDATE';
targetType?: string;
targetId?: number;
detail?: string;