refactor: 标准化项目结构 frontend/ + backend/ + SQLite + run.sh
- 目录重构: app/ -> frontend/,与 backend/ 并列 - 数据库: 默认 SQLite(零配置),修复 DSN() bug - run.sh: 一键启动前后端,支持 start/stop/restart/status - Makefile: install/dev/build/lint/clean 快捷命令 - vite.config.ts: 配置 dev server 端口 5173 + API 代理到 8080 - config.yaml: SQLite 默认配置,开箱即用 - docs/: 完整开发文档(项目结构/API/数据库/规范/部署) - 修复: GORM foreign key 关联声明 - 修复: go get gorm.io/driver/sqlite 依赖
This commit is contained in:
1 parent
7d6674bddd
commit
97c4207ff8
132 files changed
+1572
-34
No files matched your search
@@ -0,0 +1,362 @@
|
||||
// 服务器资产
|
||||
export interface Server {
|
||||
id: string;
|
||||
hostname: string;
|
||||
ip: string;
|
||||
os: string;
|
||||
cpu: number;
|
||||
memory: number;
|
||||
disk: number;
|
||||
status: 'running' | 'stopped' | 'maintenance' | 'offline';
|
||||
tags: string[];
|
||||
region: string;
|
||||
createdAt: string;
|
||||
lastSeen: string;
|
||||
cpuUsage: number;
|
||||
memoryUsage: number;
|
||||
diskUsage: number;
|
||||
}
|
||||
|
||||
// Kubernetes集群
|
||||
export interface K8sCluster {
|
||||
id: string;
|
||||
name: string;
|
||||
version: string;
|
||||
nodes: number;
|
||||
pods: number;
|
||||
services: number;
|
||||
deployments: number;
|
||||
status: 'healthy' | 'warning' | 'error';
|
||||
cpuUsage: number;
|
||||
memoryUsage: number;
|
||||
createdAt: string;
|
||||
namespace: string;
|
||||
}
|
||||
|
||||
// K8s节点
|
||||
export interface K8sNode {
|
||||
id: string;
|
||||
name: string;
|
||||
clusterId: string;
|
||||
role: 'master' | 'worker';
|
||||
status: 'ready' | 'notready' | 'unknown';
|
||||
cpu: number;
|
||||
memory: number;
|
||||
cpuUsage: number;
|
||||
memoryUsage: number;
|
||||
pods: number;
|
||||
os: string;
|
||||
kernel: string;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
// K8s Pod
|
||||
export interface K8sPod {
|
||||
id: string;
|
||||
name: string;
|
||||
namespace: string;
|
||||
clusterId: string;
|
||||
status: 'running' | 'pending' | 'failed' | 'succeeded' | 'unknown';
|
||||
restarts: number;
|
||||
cpu: string;
|
||||
memory: string;
|
||||
node: string;
|
||||
createdAt: string;
|
||||
labels: Record<string, string>;
|
||||
}
|
||||
|
||||
// 告警规则
|
||||
export interface AlertRule {
|
||||
id: string;
|
||||
name: string;
|
||||
metric: string;
|
||||
operator: '>' | '<' | '==' | '!=';
|
||||
threshold: number;
|
||||
duration: number;
|
||||
severity: 'critical' | 'warning' | 'info';
|
||||
enabled: boolean;
|
||||
description: string;
|
||||
notifyChannels: string[];
|
||||
}
|
||||
|
||||
// 告警事件
|
||||
export interface AlertEvent {
|
||||
id: string;
|
||||
ruleId: string;
|
||||
ruleName: string;
|
||||
severity: 'critical' | 'warning' | 'info';
|
||||
status: 'firing' | 'resolved';
|
||||
value: number;
|
||||
threshold: number;
|
||||
target: string;
|
||||
message: string;
|
||||
startedAt: string;
|
||||
resolvedAt?: string;
|
||||
}
|
||||
|
||||
// 工单
|
||||
export interface Ticket {
|
||||
id: string;
|
||||
title: string;
|
||||
type: 'incident' | 'request' | 'change';
|
||||
priority: 'high' | 'medium' | 'low';
|
||||
status: 'open' | 'in_progress' | 'resolved' | 'closed';
|
||||
assignee: string;
|
||||
assigneeName: string;
|
||||
creator: string;
|
||||
creatorName: string;
|
||||
description: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
dueDate?: string;
|
||||
}
|
||||
|
||||
// 审批流程
|
||||
export interface ApprovalFlow {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
nodes: ApprovalNode[];
|
||||
enabled: boolean;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
// 审批节点
|
||||
export interface ApprovalNode {
|
||||
id: string;
|
||||
name: string;
|
||||
type: 'start' | 'approval' | 'condition' | 'end';
|
||||
approvers?: string[];
|
||||
condition?: string;
|
||||
nextNodes: string[];
|
||||
}
|
||||
|
||||
// 审批实例
|
||||
export interface ApprovalInstance {
|
||||
id: string;
|
||||
flowId: string;
|
||||
flowName: string;
|
||||
applicant: string;
|
||||
applicantName: string;
|
||||
status: 'pending' | 'approved' | 'rejected';
|
||||
currentNode: string;
|
||||
createdAt: string;
|
||||
completedAt?: string;
|
||||
}
|
||||
|
||||
// 应用发布
|
||||
export interface AppRelease {
|
||||
id: string;
|
||||
appName: string;
|
||||
version: string;
|
||||
environment: 'dev' | 'test' | 'staging' | 'prod';
|
||||
status: 'pending' | 'building' | 'deploying' | 'success' | 'failed' | 'rolled_back';
|
||||
pipeline: string;
|
||||
commitId: string;
|
||||
branch: string;
|
||||
deployer: string;
|
||||
startedAt: string;
|
||||
completedAt?: string;
|
||||
duration?: number;
|
||||
}
|
||||
|
||||
// 系统用户
|
||||
export interface User {
|
||||
id: string;
|
||||
username: string;
|
||||
nickname: string;
|
||||
email: string;
|
||||
phone?: string;
|
||||
avatar?: string;
|
||||
roles: string[];
|
||||
status: 'active' | 'inactive';
|
||||
lastLoginAt?: string;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
// 角色
|
||||
export interface Role {
|
||||
id: string;
|
||||
name: string;
|
||||
code: string;
|
||||
description: string;
|
||||
permissions: string[];
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
// 操作日志
|
||||
export interface OperationLog {
|
||||
id: string;
|
||||
userId: string;
|
||||
username: string;
|
||||
module: string;
|
||||
action: string;
|
||||
resource: string;
|
||||
ip: string;
|
||||
userAgent: string;
|
||||
result: 'success' | 'failure';
|
||||
message?: string;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
// 定时任务
|
||||
export interface CronJob {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
cron: string;
|
||||
command: string;
|
||||
status: 'running' | 'paused';
|
||||
lastRunAt?: string;
|
||||
nextRunAt?: string;
|
||||
successCount: number;
|
||||
failCount: number;
|
||||
}
|
||||
|
||||
// 脚本
|
||||
export interface Script {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
language: 'bash' | 'python' | 'powershell';
|
||||
content: string;
|
||||
params: ScriptParam[];
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface ScriptParam {
|
||||
name: string;
|
||||
type: 'string' | 'number' | 'boolean';
|
||||
required: boolean;
|
||||
default?: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
// 仪表盘数据
|
||||
export interface DashboardData {
|
||||
serverCount: number;
|
||||
runningServers: number;
|
||||
alertCount: number;
|
||||
criticalAlerts: number;
|
||||
k8sClusters: number;
|
||||
healthyClusters: number;
|
||||
pendingTickets: number;
|
||||
todayReleases: number;
|
||||
cpuUsage: number;
|
||||
memoryUsage: number;
|
||||
diskUsage: number;
|
||||
networkUsage: number;
|
||||
}
|
||||
|
||||
// ==================== CMDB资源模型类型 ====================
|
||||
|
||||
// 资源模型属性
|
||||
export interface ModelAttribute {
|
||||
id: string;
|
||||
name: string;
|
||||
code: string;
|
||||
type: 'string' | 'number' | 'boolean' | 'date' | 'enum';
|
||||
required: boolean;
|
||||
unique?: boolean;
|
||||
options?: string[];
|
||||
}
|
||||
|
||||
// 资源模型
|
||||
export interface ResourceModel {
|
||||
id: string;
|
||||
name: string;
|
||||
code: string;
|
||||
description: string;
|
||||
type: 'normal' | 'parent' | 'child';
|
||||
parentId?: string;
|
||||
attributes: ModelAttribute[];
|
||||
instanceCount: number;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
// 模型实例
|
||||
export interface ModelInstance {
|
||||
id: string;
|
||||
modelId: string;
|
||||
name: string;
|
||||
data: Record<string, unknown>;
|
||||
relations: {
|
||||
targetModelId: string;
|
||||
targetInstanceId: string;
|
||||
relationType: string;
|
||||
}[];
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
// ==================== 机房机柜类型 ====================
|
||||
|
||||
// 机柜
|
||||
export interface Cabinet {
|
||||
id: string;
|
||||
name: string;
|
||||
room: string;
|
||||
row: number;
|
||||
column: number;
|
||||
totalU: number;
|
||||
usedU: number;
|
||||
status: 'active' | 'empty' | 'disabled';
|
||||
powerCapacity: number;
|
||||
powerUsed: number;
|
||||
}
|
||||
|
||||
// 设备
|
||||
export interface Device {
|
||||
id: string;
|
||||
name: string;
|
||||
type: 'server' | 'switch' | 'router' | 'firewall' | 'storage' | 'other';
|
||||
cabinetId: string;
|
||||
startU: number;
|
||||
sizeU: number;
|
||||
status: 'online' | 'offline' | 'maintenance';
|
||||
ip?: string;
|
||||
sn?: string;
|
||||
assetNo?: string;
|
||||
}
|
||||
|
||||
// ==================== 拓扑架构类型 ====================
|
||||
|
||||
// 拓扑节点
|
||||
export interface TopologyNode {
|
||||
id: string;
|
||||
name: string;
|
||||
type: 'server' | 'database' | 'cache' | 'loadbalancer' | 'cluster' | 'app' | 'service';
|
||||
x: number;
|
||||
y: number;
|
||||
data?: Record<string, unknown>;
|
||||
}
|
||||
|
||||
// 拓扑边
|
||||
export interface TopologyEdge {
|
||||
id: string;
|
||||
source: string;
|
||||
target: string;
|
||||
label?: string;
|
||||
}
|
||||
|
||||
// ==================== 监控日志类型 ====================
|
||||
|
||||
// 监控指标数据
|
||||
export interface MetricData {
|
||||
timestamp: number;
|
||||
metric: string;
|
||||
value: number;
|
||||
labels: Record<string, string>;
|
||||
}
|
||||
|
||||
// 日志条目
|
||||
export interface LogEntry {
|
||||
id: string;
|
||||
timestamp: string;
|
||||
level: 'DEBUG' | 'INFO' | 'WARN' | 'ERROR' | 'FATAL';
|
||||
source: string;
|
||||
message: string;
|
||||
host: string;
|
||||
metadata?: Record<string, unknown>;
|
||||
}
|
||||
Reference in new issue
Block a user