Commit Graph
318 Commits
Author SHA1 Message Date
attacker 24f955832e feat: 发布权限 RBAC + PipelineEditor 修复 + 菜单优化
- 新增 DeployRBAC 页面: Jenkins-style Item Role 权限管理
  - 正则匹配流水线 code,实时命中预览
  - 内置用户分配面板,无需跳转系统管理
  - 支持创建/编辑/删除/启用禁用 Item Role
- 修复 PipelineEditor 成员管理 http 双解包 bug
- 修复 PipelineManager 前端 code 路由迁移(delete/trigger/stop/loadRuns)
- 新增批量删除流水线运行记录 API
- Sidebar: 应用发布下新增「发布权限」, 仓库认证→发布配置, 移除用户组
- 恢复系统管理菜单(不受发布权限改动影响)
- 后端 ItemRole CRUD handler + 正则匹配中间件已就绪
2026-06-21 05:26:01 +00:00
attacker 0fea0ccc20 refactor: Ansible template list — cards to table with batch delete, edit dialog, new template
- AnsibleManager: card grid → table list with checkbox/批量删除/edit/clone/delete
- AnsibleWorkflow: template step cards → table, add 新建模板 button
- Edit: window.prompt → AnsibleFormDialog (name/YAML/category/tags)
- Delete: window.confirm → _confirm dialog
- Batch delete: window.confirm → _confirm dialog
- Clone: card hover → table row button
2026-06-19 15:28:52 +00:00
attacker 732974d152 refactor: unify kubernetes_ table prefix, merge CI/CD models, LLM session support
- Rename container_clusters → kubernetes_clusters, container_topology_layouts → kubernetes_topology_layouts
- LLM: add session_id to chat history for multi-turn conversation support
- CI/CD: add pipeline_id, deploy_type, artifact_url, k8s_cluster_id to AppRelease
- Cleanup: remove deprecated playbook handler, simplify automation models
- Database: optimize auto-migrate model list
- Frontend: AIOps assistant improvements, api.ts updates
2026-06-19 15:01:54 +00:00
attacker 9365c1e9db fix: 移除脚本库冗余统计框 & 修复 CronJob 表名 (cron_jobs→ops_cron_jobs) 导致创建500 2026-06-19 13:59:47 +00:00
attacker 7be277658a feat: Ansible 模板克隆 (后端 ClonePlaybook API + 前端卡片悬浮克隆按钮 + 模板管理入口) 2026-06-19 13:52:37 +00:00
Logan 2d02d63806 feat: 定时任务关联脚本库 + 脚本库精简为shell/python
定时任务:
- 执行类型改为 Shell脚本/Python脚本/自定义命令 三选一
- Shell/Python 类型下拉关联脚本库, 选择后预览脚本内容
- 卡片显示关联脚本名 (Preload Script 已就绪)
- 去掉 playbook 类型

脚本库:
- 去掉 powershell/yaml, 只保留 shell + python
- 后端 validation 同步 oneof=shell python

涉及文件:
- script-helpers.tsx: scriptTypes 去掉 powershell/yaml
- CronJobFormDialog.tsx: 完整重写, 脚本库下拉+预览
- CronJobManager.tsx: type 标签对齐, 脚本名展示
- automation.go: CronJob type oneof 改 shell/python/command
                Script type oneof 改 shell/python
2026-06-19 21:46:56 +08:00
attacker f05cf71121 feat: Ansible 完整工作流页面(模板→主机→预览→执行→监控)
**新组件 AnsibleWorkflow.tsx(~670行):**
- Step 1: 模板选择 — 卡片网格,按分类/标签搜索过滤
- Step 2: 主机匹配 — 正则/前缀/模糊搜索,checkable 表格,全选
- Step 3: 确认执行 — Playbook 摘要 + 主机列表 + YAML 预览
- Step 4: 执行监控 — 状态指示器 + 终端输出 + 耗时统计
- 执行记录 Tab — 历史列表 + 输出展开

**路由调整:**
- /ansible → AnsibleWorkflow(主工作流)
- /ansible/manage → AnsibleManager(模板 CRUD)

**类型补全:**
- ExecutionRecord 增加 triggered_by 字段
2026-06-19 13:41:04 +00:00
attacker c9b6647831 feat: Ansible 15个运维模板 + 主机匹配 + 远程执行
**种子模板(15个):**
- 系统信息收集、安全更新、磁盘清理、服务巡检
- 用户SSH管理、Nginx配置、SSL证书检查、配置备份
- 进程诊断、Docker清理、防火墙、时间同步
- 日志轮转、内核调优、网络诊断
- 分类覆盖:maintenance/security/configuration/backup/monitoring

**主机匹配 API:**
- GET /api/v1/ansible/match-hosts?pattern=&match_type=regex|prefix|contains
- 支持正则/前缀/模糊匹配 hostname, IP, tags
- 复杂正则回退到 Go 过滤
- 分页支持

**远程执行增强:**
- 指定 target_hosts 时自动查询 SSH 信息生成临时 inventory
- 未指定时回退到 --connection=local
- 自动禁用 StrictHostKeyChecking
2026-06-19 13:31:55 +00:00
attacker 9af0685e90 fix: 修复架构分析报告指出的P0问题
**AI 告警分析(P0):**
- 替换 setTimeout 伪AI为真实 LLM 调用 (aiApi.chat)
- LLM 不可用时回退到规则模板(generateAIAnalysis)
- 移除 Math.random() 随机置信度/相似案例
- 分析结果从 LLM JSON 响应解析

**SSH HostKey 验证(P0):**
- webshell.go: InsecureIgnoreHostKey → TOFU 模式
- agent_install.go: 同步修复
- 首次连接记录 SHA256 fingerprint 到日志
- 后续连接校验 HostKey 一致性

**Ansible 执行引擎(P0):**
- ExecutePlaybook 从模拟改为真实 ansible-playbook 调用
- 支持 extra-vars 参数传递
- 5分钟超时保护
- ansible-playbook 未安装时返回明确错误
2026-06-19 11:51:03 +00:00
attacker a3cd0d3910 feat: PTY kubectl终端 + 侧边栏对齐修复 + 构建缓存清理
**kubectl WebShell 修复:**
- 引入 github.com/creack/pty 库实现真正的伪终端
- 替换 bash --noediting + TERM=dumb 方案为 PTY-backed bash
- 支持 xterm-256color、窗口自适应、readline 交互
- 修复键盘输入无响应问题

**侧边栏优化:**
- 独立菜单项高度从 py-1.5 改为 h-8,与父菜单对齐
- 独立菜单图标从 h-3 w-3 改为 h-3.5 w-3.5,统一 14px

**构建优化:**
- run.sh docker up 增加 docker image prune -f 清理悬空镜像
- 每次部署自动清理 builder cache + dangling images

**认证修复(历史):**
- Token 存储:Zustand + localStorage 双写,http.ts 双源 fallback
- YamlViewer/DeploymentDetail token 来源统一为 Zustand store
2026-06-19 11:22:45 +00:00
attacker cac1414917 refactor: 全局重命名 k8s → kubernetes (前后端+路由+表名+文件)
后端:
  - pkg/k8sclient → pkg/kubernetesclient
  - models/k8s.go → models/kubernetes.go
  - handlers/k8s.go → handlers/kubernetes.go
  - K8sCluster/K8sNode/.. → KubernetesCluster/KubernetesNode/..
  - K8sHandler → KubernetesHandler
  - 路由: /k8s-clusters → /kubernetes-clusters
  - 路由: /k8s/:code/namespace/:ns/... → /kubernetes/:code/namespace/:ns/... (Kuboard风格)
  - 表前缀: container_k8s_ → container_kubernetes_

前端:
  - components/k8s/ → components/kubernetes/
  - K8sClusters → KubernetesClusters
  - K8sWorkloads → KubernetesWorkloads
  - K8sNodes → KubernetesNodes
  - k8sApi → kubernetesApi
  - 路由前缀: /k8s/ → /kubernetes/

测试验证:
✅ /kubernetes/k8s-cluster-liren/namespace/kube-system/deployments → 3 items
✅ /kubernetes/k8s-cluster-liren/namespace/kube-system/pods → 7 items
✅ /kubernetes/k8s-cluster-liren/namespace/kube-system/services → 4 items
✅ /kubernetes/k8s-cluster-liren/namespace/kube-system/configmaps → 6 items
✅ /kubernetes/k8s-cluster-liren/namespace/kube-system/secrets → 1 item
✅ /kubernetes/k8s-cluster-liren/namespaces → 4 items
2026-06-19 08:10:12 +00:00
attacker f7b667b878 feat(k8s-ui): HPA 创建按钮醒目化 + K8sWorkloads 命名空间切换
DeploymentDetail:
  - HPA 未配置时,状态卡片内直接显示「创建 HPA」按钮
  - 无需切换到 HPA Tab 即可一键创建

K8sWorkloads:
  - 新增命名空间下拉选择器(自动加载集群全部 ns)
  - 切换集群时自动重置命名空间为「全部」
  - Deployment/Pod 列表按命名空间过滤
  - 统计卡片始终显示全量数据(不受 ns 过滤影响)
2026-06-19 07:52:46 +00:00
attacker 77045622fc feat(k8s): 实时日志流 + WebSocket exec 交互终端 + 前端流式日志查看器
后端:
  - GetPodLogsStream: 新增 K8s follow=true 流式日志读取
  - GetPodLogs handler: 支持 stream=true → chunked transfer 实时推流
  - ExecTerminal: WebSocket → K8s SPDY exec 双向代理 (交互式 bash)
  - 路由: GET /ws/k8s-exec/:id/namespaces/:ns/pods/:pod (WebSocket)

前端 DeploymentDetail:
  - 新增「实时流」按钮: fetch ReadableStream + TextDecoder 逐块渲染
  - 日志内容自动滚动追加

CD/CI 镜像更新:
  - POST /update-image 已可用 (前端表单+后端 API 均完成)
2026-06-19 07:49:32 +00:00
attacker 1a913549fc feat(k8s-ui): 重写 K8s 前端 — Deployment 详情页/HPA/CronJob/操作按钮
api.ts 改造:
  - 修复 scaleDeployment/restartDeployment/deletePod 死桩 → 真实后端 API
  - 新增: getPodLogs/execPod/updateDeploymentImage (CI webhook)
  - 新增: getHPAs/createHPA/deleteHPA (HPA 管理)
  - 新增: getCronJobs/createCronJob/suspendCronJob/triggerCronJob/deleteCronJob
  - 新增: getNamespaces

DeploymentDetail 新组件:
  - 副本状态卡片 (Ready/Total/Available)
  - 副本加减按钮 (scale control)
  - 滚动重启按钮
  - 镜像更新表单 (CI webhook inline)
  - Pod 列表 (按 deployment 名前缀过滤)
  - Pod 日志查看器 (tail/container 参数)
  - HPA 管理选项卡 (列表+删除)
  - 创建 HPA 弹窗 (CPU/内存指标配置)

K8sWorkloads 增强:
  - Deployment 表添加「操作」列(副本加减 + 查看详情)
  - 点击 Deployment 行 → 跳转 DeploymentDetail 详情页
  - handleQuickScale 快速扩缩容

新增 useToast hook (轻量级 toast 通知)
2026-06-19 07:36:13 +00:00
Logan abf2917fad fix: K8s集群编辑保存失败+凭据覆盖+去掉Kubectl死按钮
问题:
1. UpdateCluster 用 CreateK8sClusterRequest (code binding:"required"),
   编辑时不传 code → 校验失败 400 → 保存不成功
2. Token/KubeConfig json:"-" 不序列化, 编辑时拿不到原值,
   提交空字符串覆盖真实凭据
3. 操作菜单 Kubectl 是死按钮

修复:
- UpdateCluster 改用 map[string]interface{} 接收, 逐字段更新,
  空值不覆盖 (防止凭据清空)
- 新增 GET /:id/detail 返回 has_token/has_kube_config 脱敏标记
- 编辑弹框拉取详情 API 回填, Token/KubeConfig 留空显示 '已配置' 提示
- 去掉 Kubectl 死按钮, 保留 详情/配置/删除 三项
2026-06-19 15:08:50 +08:00
attacker b25ad8705f feat: K8s 集群实时代理 — 直接调用 K8s API 不存储 MySQL
- 新增 pkg/k8sclient 轻量级 K8s REST 客户端(解析 kubeconfig TLS 证书)
- ListNodes/Pods/Deployments/Services/Ingresses 改为实时代理 K8s API
- 集群同步端点 POST /:id/sync(拉取后仍存 MySQL 用于离线缓存储备)
- 前端 k8sApi 新增 syncCluster 方法
- 修复 SNMP MaxRepetitions uint8→uint32 类型错误
- 修复 ServicePort.TargetPort 兼容 int/string 双类型
- 创建 k8s_nodes/pods/deployments/services/ingresses 五张表
2026-06-19 06:32:18 +00:00
attacker 534fbdbfaf fix: 切换实例按钮无效 & 磁盘分区内容溢出
- Select 下拉切换主机时同步更新 latest/serverInfo(添加 selectedHost 依赖)
- 磁盘分区 used_gb/usage_percent 格式化 .toFixed(1),容器加宽 + whitespace-nowrap 防溢出
2026-06-19 02:02:04 +00:00
attacker 4dd3e3238d fix: agent_version 为空 & 恢复批量卸载
- 后端上报时若 agent_version 为空则不覆盖已有版本(防止旧Agent清空版本号)
- 安装/升级后写入版本号 v0.1.0(而非 installed/latest)
- DB 存量 online 主机 agent_version 补填 v0.1.0
- 前端恢复批量卸载 Agent 按钮
2026-06-19 01:51:16 +00:00
attacker 502674d73a feat: 合并批量安装/升级为统一弹窗 — 类阿里云风格
- 批量安装/升级合并为一个「批量部署」按钮,弹窗内切换安装/升级模式
- 弹窗展示选中主机列表、当前版本、操作目标
- 增加专业警告文案(AIOps语境,区分安装/升级注意事项)
- 「我已知悉」勾选确认后才可提交
- Agent版本列:提交后显示loading转圈「部署中」状态
- 移除批量卸载按钮
2026-06-19 01:44:03 +00:00
attacker 0d61be1413 fix: API类型兼容 default_port + importInstances opts 参数 2026-06-19 01:32:43 +00:00
attacker 11e8c24f37 feat: CSV/云平台导入添加SSH端口(默认22) + 凭证关联下拉
- CSV模板新增port列, 连接方式改为SSH端口输入(默认22)
- 云平台导入新增SSH端口配置 + 凭证下拉选择
- 移除冗余的连接方式(密码/密钥)选择 → 凭证下拉统一管理
- ExcelServerImport: template含port列, resetState包含新字段
2026-06-19 01:31:46 +00:00
attacker 346042a29c fix: ServerForm 缺少 ssh_key/credential_id 字段, selIds.has→includes 2026-06-19 01:27:31 +00:00
attacker ed08ea255e feat: Agent批量升级 + 版本号注入 + 服务器凭证下拉关联
- Dockerfile: ARG VERSION/BUILD_TIME 通过 ldflags 注入 agent+backend 二进制
- run.sh: 自动从 git tag 获取版本号
- docker-compose: build args 传递 VERSION/BUILD_TIME
- backend: BatchUpgradeAgent SSH下载新二进制+重启, /agent/bin 静态文件服务
- frontend: 监控大屏添加批量升级按钮 (闪电图标)
- frontend: 服务器编辑/添加表单改为凭证下拉选择器
- frontend: ServerForm 加载 /credentials 列表, 选择后自动填充用户名/认证方式
2026-06-19 01:24:47 +00:00
attacker 228b6b52f9 feat: HostMonitor Brush图表缩放 + avg/max/min下拉选择器
- 添加 BucketPoint 结构 (avg/max/min/count)
- 时间范围切换自动调整聚合窗口 (1h→60s, 6h→5min, 12h→10min...)
- 每张指标卡片支持平均值/最大值/最小值切换
- Recharts Brush 组件实现鼠标拖选时间范围缩放
- 参考线显示整体均值
- 图表高度增大到 48 适配 Brush 条
- 磁盘分区列表兼容 agent 上报的原始字段名
2026-06-19 01:15:42 +00:00
attacker 5949ec5d0c feat: Agent采集uptime, 后端持久化kernel/uptime/diskIO, 前端磁盘BPS+IOPS展示
- Agent: system.go 添加 readUptime(), SystemStat 携带 Uptime
- Backend: Server 模型新增 Kernel 字段, ReceiveReport 持久化 kernel+uptime
- Backend: /agent/latest 返回 kernel/uptime/port_info/disk_io_info/disk_total
- Frontend: 磁盘监控改为 BPS+IOPS (4张卡片), 系统信息修复内核/运行时长/监听端口/磁盘容量
- 图表单位从 MB/s 改为 KB/s, 添加 formatBPS 工具函数
2026-06-19 01:10:00 +00:00
attacker 4e3f8cb306 docs: update README, API reference, dev-log, project structure with Agent monitoring + quick-alarm + latest fixes
- README.md: React 19, default pwd 123456, Docker Compose deploy, correct module list
- api-reference.md: add Agent monitoring section (report/latest/rules/quick-setup/alerts/tasks/kline)
- dev-log.md: new entry documenting hostname/IP fix, system collector, offline detection, quick alarm
- project-structure.md: add agent/ directory, dev-log.md link, React 19
2026-06-18 16:11:13 +00:00
attacker c51d0b8b8b feat: Zabbix 数据源管理 — 完整 CRUD + 双 Tab 数据源页面
后端:
- models/zabbix_datasource.go: Zabbix 数据源 model (15字段, 参照 Grafana)
- handlers/zabbix_datasource.go: CRUD + 测试连接 (调用 Zabbix API Auth)
- routes.go: /zabbix-datasources 路由组
- database.go: AutoMigrate

前端:
- api.ts: zabbixDatasourceApi
- ZabbixDatasourceManager.tsx: 表单 (URL/用户名/密码/Trends设置/DB直连)
- DatasourcePage.tsx: Prometheus + Zabbix 双 Tab 包装
- App.tsx: /datasources 路由更新
2026-06-18 14:14:40 +00:00
attacker d2201fc8c0 feat: 监控大屏 Grafana 风格增强 — 6卡统计 + bargauge 资源条状图 (参照 k8s/node/jvm dashboard)
- 统计卡片: 3→6 (主机总数/在线/离线/平均CPU/平均内存) 带阈值颜色
- 资源条状图: Top 5 CPU + 内存排行, 渐变色进度条 (绿<60%<黄<85%<红)
- 参照: Grafana k8s-dashboard bargauge / node-dashboard 表格 / jvm Quick Facts
2026-06-18 14:04:26 +00:00
attacker 2596bbc789 feat: Prometheus数据源管理 — 参考Grafana界面CRUD
- 后端: PrometheusDataSource model (22字段,含Basic Auth/TLS/Headers/Alerting)
- 后端: 8 API (CRUD + 设默认 + 连接测试 + 审计)
- 前端: 数据源管理页 — 表格列表 + Grafana风格配置Dialog
- 前端: 侧边栏「监控中心→数据源」菜单项
- 功能: Save & test 连接测试(含Basic Auth + Skip TLS)

Author: Logan.Li
2026-06-18 14:03:00 +00:00
attacker 1726ad65ac snapshot: 数据源管理+大屏增强前快照 2026-06-18 14:01:22 +00:00
attacker 2bf3e7c308 feat: 监控大屏 /grafana→/dashboards + Agent主机Top10默认面板
- 路由: /grafana → /dashboards (Sidebar + App.tsx)
- GrafanaDashboard 新增默认面板: Agent 主机监控 Top 10
  - CPU/Memory/Disk 使用率三列排行
  - 进度条颜色: >85%红 >60%黄 <60%绿
  - 🥇🥈🥉 emoji 前三名
  - 30s 自动刷新
- Prometheus/Zabbix/SkyWalking 需配置数据源后才可用
2026-06-18 13:26:38 +00:00
attacker 737f00169f feat: 修复服务器硬件规格(CPU核/内存/磁盘) + Top 5 资源排行
修复:
- agent.go ReceiveReport 写入 cpu(核数)/memory(总内存MB)/disk(总磁盘GB) 到 servers 表
- 之前 Agent 上报只写了 cpu_usage/memory_usage/disk_usage 使用率,硬件规格始终为 0

新功能:
- GET /api/v1/metrics/top?metric=cpu|memory|disk&limit=5 主机排行 API
- HostMonitor 新增 Top 5 排行面板: CPU/内存/磁盘 使用率排名
- TopRankCard 组件: 排名号+主机名+进度条+百分比
2026-06-18 13:13:03 +00:00
attacker 2e71371257 feat: Phase 2-5 监控中心全栈实现 — 指标浏览器/SNMP/站点拨测/中间件
Phase 2 指标监控:
- 修复 /metrics 路由(原指向 AlertManager → 现指向 MetricsExplorer)
- 新建 MetricsHandler (4 API): targets/list/query/names
- 新建 MetricsExplorer 前端(170行): 目标选择器+指标分类树+多指标叠加SVG图表

Phase 3 SNMP设备:
- 新建 SNMPHandler (9 API): devices CRUD/templates/stats
- SNMPMonitor 接入真实API(428行): 设备表格+添加对话框+删除

Phase 4 站点拨测:
- 新建 SiteHandler (8 API): tasks CRUD/results/stats
- SiteMonitor 接入真实API(542行): 任务表+添加对话框+拨测类型网格
- 新增 siteApi 到 api.ts

Phase 5 中间件采集:
- Agent 新增 collector/middleware.go: Redis INFO + MySQL handshake 采集
- Agent CLI 新增 -redis/-redis-auth/-mysql/-mysql-user/-mysql-pass
- MiddlewareMonitor 接入真实API(301行): 实例卡片+指标面板

基础设施:
- AutoMigrate 新增 23 张监控表
- 前后端容器构建部署验证通过
2026-06-18 13:02:19 +00:00
attacker 94dbc89b9b refactor: rename EZOps → AIOps globally (brand unification) 2026-06-18 11:57:59 +00:00
attacker 24fa17c2a8 feat: 监控架构优化 — 模型层 + Prometheus/Zabbix/SNMP pkg + Dockerfile升级Go1.24
整合 /srv/监控架构优化方案 核心代码:

后端模型(4个新文件):
- monitor.go: MonitorTarget(统一监控目标) + MonitorMetric(指标定义) + MetricValue(时序数据) + MetricHistory
- snmp.go: SNMPDevice + SNMPTemplate + OID模板管理
- site.go: SiteTask(拨测任务) + SiteResult(拨测结果)
- alert_v2.go: 增强告警(多条件规则/模板/升级策略/静默)

后端 pkg(3个包):
- pkg/prometheus/client.go (531行): PromQL查询/Range/Labels/Rules
- pkg/zabbix/client.go: Zabbix API (Host/Item/Trigger/History)
- pkg/snmp/collector.go (621行): gosnmp Walk/BulkWalk/自动发现

基础设施:
- Dockerfile: Go 1.21→1.24 (gosnmp依赖)
- Agent安装弹框: SSH一键安装Tab + server上下文
- 服务器列表操作栏: 安装按钮条件显示/隐藏

Handler层因类型不兼容暂时跳过,模型和客户端包已编译通过。
2026-06-18 11:52:10 +00:00
attacker f3a9e5e8d0 feat: 重构监控中心导航,新增资源监控4大模块
- 主菜单「监控告警」→「监控中心」
- 「告警中心」→「告警服务」移至链路追踪下方
- 新增资源监控 Tab 页(主机/中间件/SNMP/站点拨测)
- Agent 新增网络采集器(network)和磁盘IO采集器(diskio)
- 后端扩展 Agent 上报模型,支持 NetworkStat/DiskIOStat
- 前端 ServerTableRow 展示网络和磁盘IO实时指标
- WebSocket MetricsUpdate 推送扩展
2026-06-18 09:30:45 +00:00
attacker 020b7a9063 fix: cmdTimeout type number 2026-06-18 08:04:32 +00:00
attacker a843ab7b00 feat: Redis热数据+K线聚合+Dashboard MySQL指标修复 2026-06-18 08:03:49 +00:00
attacker b8b1a3d5f6 fix: 远程命令直连SSH(去轮询) + 去掉无用命令分类 2026-06-18 07:56:10 +00:00
attacker ed3bf59c3b fix: add missing imports (useUserStore, Cpu) 2026-06-18 07:25:11 +00:00
attacker 2fc2a2ae07 feat: Agent一键安装(loading/成功/失败状态无弹框) + 批量安装API 2026-06-18 07:24:24 +00:00
attacker 48b2d2281b fix: AgentWizard URL拼接修正(origin/backend分离) + 复制兼容HTTP/移动端 2026-06-18 07:14:19 +00:00
Logan 2f4c0df0f2 fix: resolve merge conflict in ServerTableRow imports 2026-06-18 11:47:30 +08:00
attacker cdb978fcfc fix: 重写 AgentWizard 复制逻辑 + 手动复制文本框 fallback 2026-06-18 03:39:58 +00:00
attacker 3a0f5ddb52 fix: 清理冲突合并产生的行号前缀 2026-06-18 03:37:22 +00:00
attacker 2354959811 feat: run.sh四模式(dev/docker/build/binary) + CLI flags + Redka内嵌Redis + Agent复制修复 + 服务器编辑IP字段 + 安装Agent按钮 2026-06-18 03:36:04 +00:00
Logan d0b94d39c0 fix: agent install.sh 404 + 三阶段构建编译agent二进制
问题: 构建上下文 ./backend 无法访问 ../agent, 导致容器内
/app/agent/deploy/install.sh 不存在, 返回 404

修复:
- Dockerfile 改为三阶段构建 (backend go1.21 + agent go1.24 交叉编译 + alpine runtime)
- docker-compose backend build context 改为项目根
- routes.go /agent/arch 安装命令改为动态获取 URL
- 新增 .dockerignore
- agent_install.go: SSH 远程安装 handler
- AgentWizard.tsx: 复制按钮 fallback + 动态 server URL
- ServerTableRow.tsx: agent 状态判断

验证: curl|bash 安装成功, agent 上报数据到 MySQL ✅
2026-06-18 09:44:12 +08:00
Logan d0344c2f52 feat: Docker部署 + 云主机导入 + 终端优化
Docker 部署:
- 新增根目录 docker-compose.yml(MySQL+Redis+前后端四容器)
- 新增 frontend/Dockerfile(多阶段构建)和 nginx.conf(SPA+API反代)
- 修复 backend/Dockerfile:GOPROXY国内加速、编译整个cmd包

云主机导入功能:
- 新增 backend/internal/cloud 包:Provider接口 + 阿里云API客户端
- 新增 cloud_sync.go:区域同步/主机发现/导入 API
- 重写 CloudServerImport.tsx:4步流程(选云→选账号→选区域→发现导入)
- 修复导入外键约束失败(region_id/cloud_id 设为 NULL)

终端优化:
- 修复双X关闭按钮重影(showCloseButton=false)
- 修复最大化→最小化不恢复(ResizeObserver + 禁用CSS过渡)

其他:
- GORM AutoMigrate 逐表迁移,避免索引冲突阻塞启动
- Makefile 更新为 AIOps + 新增 docker 命令组
- .env.example 移至 backend 目录
2026-06-18 09:22:13 +08:00
attacker ca8ebb1634 feat: AIOps智能助手支持停止生成(AbortController中止流式,保留部分内容+已停止提示) 2026-06-18 07:07:01 +08:00
attacker 5d19878b28 feat: AIOps智能助手流式输出(SSE代理,逐字渲染+思考中光标+断连安全持久化) 2026-06-18 05:07:28 +08:00