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:
attacker committed 2026-06-13 23:34:23 +08:00
1 parent 7d6674bddd
commit 97c4207ff8
132 files changed
+1572 -34

No files matched your search

+362
View File
@@ -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>;
}