feat: restore core chat and observability

This commit is contained in:
2026-06-22 02:24:10 +08:00
parent 524c027a4a
commit 705cfe47e8
43 changed files with 12301 additions and 11 deletions
@@ -901,7 +901,10 @@ export interface WorkflowStreamEvent {
accumulated_content?: string; // 累积内容
// 并行执行字段
branches?: string[]; // 并行分支 ID 列表
branch_id?: string;
branch_label?: string;
branch_results?: Record<string, any>; // 各分支执行结果
results?: any;
// 循环迭代字段
iteration?: number; // 当前迭代次数(从 0 开始)
total?: number; // 总迭代次数(for_each 模式)
@@ -1154,20 +1157,37 @@ export interface ReasoningStep {
| 'action'
| 'annotation_reply'
| 'knowledge_retrieval'
| 'loop_complete'
| 'loop_iteration_complete'
| 'loop_iteration_error'
| 'loop_iteration_start'
| 'node_complete'
| 'node_start'
| 'observation'
| 'parallel_complete'
| 'parallel_start'
| 'thought';
content: string;
tool?: string;
params?: Record<string, any>;
branch_id?: string;
branch_label?: string;
agent_code?: string;
agent_name?: string;
model?: string;
model_id?: string;
subflow_name?: string;
from_subflow?: boolean;
collaboration_role?: string;
collaboration_mode?: string;
communication?: Record<string, any>;
timestamp: string;
// 对话流模式:节点信息
node_id?: string;
node_type?: string;
output?: any;
/** 步骤状态:running 执行中,completed 已完成 */
status?: 'completed' | 'running';
status?: 'completed' | 'failed' | 'running';
}
/** 工具调用记录 */
@@ -1237,6 +1257,8 @@ export interface AgentChatEvent {
| 'node_event'
| 'node_start'
| 'observation'
| 'parallel_complete'
| 'parallel_start'
| 'start'
| 'thought'
| 'waiting_input';
@@ -1254,7 +1276,12 @@ export interface AgentChatEvent {
node_id?: string;
node_type?: string;
node_label?: string;
branch_id?: string;
branch_label?: string;
communication?: Record<string, any>;
output?: any;
results?: any;
branch_results?: Record<string, any>;
outputs?: {
output?: any;
output_variables?: Record<string, any>;
@@ -0,0 +1,170 @@
import { requestClient } from '#/api/request';
// 数据库基本信息
export interface DatabaseBasicInfo {
db_type: string;
host: string;
port: number;
database: string;
version: string;
uptime: string;
timezone: string;
charset: string;
}
// 数据库连接信息
export interface DatabaseConnectionInfo {
total_connections: number;
max_connections: number;
active_connections: number;
idle_connections: number;
connection_usage_percent: number;
}
// 数据库大小信息
export interface DatabaseSize {
database_size_bytes: number;
database_size_mb: number;
database_size_gb: number;
}
// 数据库性能统计
export interface DatabasePerformanceStats {
// PostgreSQL
total_backends?: number;
transactions_commit?: number;
transactions_rollback?: number;
tuples_returned?: number;
tuples_fetched?: number;
tuples_inserted?: number;
tuples_updated?: number;
tuples_deleted?: number;
// MySQL
total_queries?: number;
total_connections?: number;
slow_queries?: number;
bytes_received?: number;
bytes_sent?: number;
// SQL Server
batch_requests_per_sec?: number;
page_life_expectancy?: number;
buffer_cache_hit_ratio?: number;
// 通用
cache_hit_ratio: number;
}
// 数据库表统计
export interface DatabaseTableStats {
// PostgreSQL
schemaname?: string;
tablename?: string;
inserts?: number;
updates?: number;
deletes?: number;
live_tuples?: number;
dead_tuples?: number;
size?: string;
size_bytes?: number;
total_size?: string;
total_size_bytes?: number;
// MySQL
table_name?: string;
table_rows?: number;
data_length?: number;
index_length?: number;
auto_increment?: number;
// SQL Server
total_size_kb?: number;
used_size_kb?: number;
data_size_kb?: number;
// Oracle
size_bytes?: number;
}
// 数据库概览
export interface DatabaseMonitorOverview {
connection_id: string;
connection_name: string;
status: string;
basic_info: DatabaseBasicInfo;
connection_info: DatabaseConnectionInfo;
database_size: DatabaseSize;
performance_stats: DatabasePerformanceStats;
table_stats: DatabaseTableStats[];
timestamp: string;
}
// 数据库实时统计
export interface DatabaseRealtimeStats {
connection_id: string;
connections_used: number;
connection_usage_percent: number;
database_size_mb: number;
cache_hit_ratio: number;
active_connections: number;
timestamp: string;
}
// 数据库连接测试
export interface DatabaseConnectionTest {
success: boolean;
message: string;
response_time?: number;
version?: string;
db_type: string;
}
// 数据库配置(监控目标 = 数据库连接 code)
export interface DatabaseConfig {
name: string;
db_name: string;
db_type: string;
host: string;
port: number;
database: string;
user: string;
has_password: boolean;
is_system?: boolean;
}
/**
* 获取数据库监控配置列表
*/
export async function getDatabaseMonitorConfigsApi() {
return requestClient.get<DatabaseConfig[]>(
'/api/core/database_monitor/configs',
);
}
/**
* 获取数据库概览信息
*/
export async function getDatabaseMonitorOverviewApi(dbName: string) {
return requestClient.get<DatabaseMonitorOverview>(
`/api/core/database_monitor/${dbName}/overview`,
);
}
/**
* 获取数据库实时统计信息
*/
export async function getDatabaseRealtimeStatsApi(dbName: string) {
return requestClient.get<DatabaseRealtimeStats>(
`/api/core/database_monitor/${dbName}/realtime`,
);
}
/**
* 测试数据库连接
*/
export async function testDatabaseConnectionApi(dbName: string) {
return requestClient.post<DatabaseConnectionTest>(
`/api/core/database_monitor/${dbName}/test`,
);
}
@@ -0,0 +1,170 @@
import { requestClient } from '#/api/request';
// Redis配置信息
export interface RedisConfig {
host: string;
port: number;
database: number;
has_password: boolean;
redis_url: string;
}
// Redis基础信息
export interface RedisInfo {
redis_version: string;
redis_mode: string;
role: string;
os: string;
arch_bits: number;
uptime_in_seconds: number;
uptime_in_days: number;
tcp_port: number;
connected_clients: number;
blocked_clients: number;
}
// Redis内存信息
export interface RedisMemory {
used_memory: number;
used_memory_human: string;
used_memory_rss: number;
used_memory_peak: number;
used_memory_peak_human: string;
total_system_memory: number;
total_system_memory_human: string;
used_memory_dataset: number;
used_memory_dataset_perc: string;
allocator_allocated: number;
allocator_active: number;
maxmemory: number;
maxmemory_human: string;
maxmemory_policy: string;
mem_fragmentation_ratio: number;
}
// Redis统计信息
export interface RedisStats {
total_connections_received: number;
total_commands_processed: number;
instantaneous_ops_per_sec: number;
total_net_input_bytes: number;
total_net_output_bytes: number;
instantaneous_input_kbps: number;
instantaneous_output_kbps: number;
rejected_connections: number;
sync_full: number;
sync_partial_ok: number;
sync_partial_err: number;
expired_keys: number;
evicted_keys: number;
keyspace_hits: number;
keyspace_misses: number;
pubsub_channels: number;
pubsub_patterns: number;
latest_fork_usec: number;
migrate_cached_sockets: number;
}
// Redis键空间信息
export interface RedisKeyspace {
db_id: number;
keys: number;
expires: number;
avg_ttl: number;
}
// Redis客户端信息
export interface RedisClient {
id: string;
addr: string;
fd: number;
name: string;
age: number;
idle: number;
flags: string;
db: number;
sub: number;
psub: number;
multi: number;
qbuf: number;
qbuf_free: number;
obl: number;
oll: number;
omem: number;
events: string;
cmd: string;
}
// Redis慢日志
export interface RedisSlowLog {
id: number;
timestamp: number;
duration: number;
command: string;
client_ip: string;
client_name: string;
}
// Redis监控概览
export interface RedisMonitorOverview {
connection_id: string;
connection_name: string;
status: string;
info: RedisInfo;
memory: RedisMemory;
stats: RedisStats;
keyspace: RedisKeyspace[];
clients: RedisClient[];
slow_log: RedisSlowLog[];
timestamp: string;
}
// Redis实时统计
export interface RedisRealtimeStats {
connection_id: string;
used_memory: number;
memory_usage_percent: number;
connected_clients: number;
ops_per_sec: number;
hit_rate: number;
keyspace_hits: number;
keyspace_misses: number;
timestamp: string;
}
/**
* 获取Redis配置信息
*/
export async function getRedisConfigApi() {
return requestClient.get<RedisConfig>('/api/core/redis_monitor/config');
}
/**
* 获取Redis监控概览
*/
export async function getRedisMonitorOverviewApi() {
return requestClient.get<RedisMonitorOverview>(
'/api/core/redis_monitor/overview',
);
}
/**
* 获取Redis实时统计
*/
export async function getRedisRealtimeStatsApi() {
return requestClient.get<RedisRealtimeStats>(
'/api/core/redis_monitor/realtime',
);
}
/**
* 测试Redis连接
*/
export async function testRedisConnectionApi() {
return requestClient.post<{
message: string;
redis_version?: string;
response_time?: number;
success: boolean;
}>('/api/core/redis_monitor/test');
}