Logan.Li
|
f006464116
|
refactor: 系统设置外观区精简——移除主题色/字体大小/界面密度/圆角风格,仅保留主题模式;修复 /login 与未知路径重定向死循环
|
2026-10-27 17:39:32 +08:00 |
|
Logan.Li
|
9103b13510
|
feat: 流水线三级权限体系(手动多选+通配符授权)+ 菜单分级 + SSE 认证修复
权限模型(借鉴 Jenkins Role-Strategy 与云效,默认拒绝):
- 三级权限:查看(流水线+成功/失败日志)/ 发布(+构建、批量发布、重试)/ 管理(+配置、成员);admin 全局豁免
- 权限组(管理员配置):默认手动多选流水线(免正则,操作友好);高级模式仅 * 通配符(cex-*)
- 单流水线成员直授权作为例外补充;AI 批量发布逐 job 校验,越权明确拒绝
后端:
- 新增 PipelineRole/PipelineMember 表与 /api/pipeline-roles、/api/pipelines/:id/members CRUD
- RequirePipelineAccess/RequireRunAccess 中间件挂全流水线与运行路由;列表按可见性过滤并附 accessLevel/canRetry
- /api/me 会话接口;logs/stream SSE 支持 ?token= 认证(原先完全免鉴权)并校验查看权限
- 凭证/主机/集群/构建节点/工具/Webhook/Jenkins/GitOps/插件/设置全部 AdminOnly;触发人以会话身份落库
前端:
- useSession 会话 hook;Sidebar 菜单分级(资源/集成/系统管理 admin-only);admin 路由守卫
- 按钮级权限:执行/配置/删除/保存/重试按等级显隐;新页「流水线权限」与流水线成员弹窗(纯点选)
- 登录页记住密码;GUIDE/API 文档补权限章节
|
2026-10-27 17:34:41 +08:00 |
|
Logan.Li
|
7090c8efc2
|
feat: 用户管理列表批量删除(复选框多选+全选,当前登录用户保护)
|
2026-10-27 15:56:31 +08:00 |
|
Logan.Li
|
67aeafac19
|
style: 凭证类型清理——移除用户名密码/AK·SK/Kubeconfig 兼容项,仅保留发布所需 4 种
|
2026-10-27 15:48:02 +08:00 |
|
Logan.Li
|
ee59706ab9
|
feat: 凭证类型化表单重构(参考 LokiStack/aiops),移除 aksk
- 类型精简为发布流程所需 4 种:SSH 密钥 / Docker 认证 / Git 仓库 /
Kubernetes(旧 password/kubeconfig/aksk 仅作历史数据展示,新建不提供)
- 类型化表单替代通用 JSON textarea(aiops 模式):
ssh=私钥/用户/端口/密码;docker=Registry/用户/Token;
git=仓库/用户/Token;编辑时留空=不修改,类型不可改
- Kubernetes 凭证双模式(LokiStack 模式),默认 Token(推荐):
apiServer+命名空间+Token,或整份 Kubeconfig+context
- 命名空间长期授权引导:折叠块内一键复制 kubectl 命令
(Namespace+SA+命名空间级 Role/RoleBinding+长期 Token Secret),
命名空间随表单动态注入;附最小权限安全说明
- 后端摘要支持 kubernetes 类型(K8s Token ns@server / Kubeconfig)
|
2026-10-27 15:40:59 +08:00 |
|
Logan.Li
|
935a29e2f1
|
style: 「文档」菜单更名为「文档中心」,与其他四字菜单对齐
|
2026-10-27 15:23:50 +08:00 |
|
Logan.Li
|
2040cd042a
|
fix: AI 配置服务商下拉选不中 + 先测试通过才能保存(参考 aiops)
- 根因:settings 刷新(保存其它配置后 invalidate)触发的表单初始化
useEffect 会把正在编辑的服务商/端点/密钥打回已保存值,表现为下拉
"闪退选不中"。改为 useRef 守卫仅首次加载数据时初始化一次,
后续刷新不再覆盖用户编辑(同时修复 lark/ldap 表单同类隐患)
- 先测试才能保存:启用 AI 后「保存」按钮在「测试连接」通过前禁用
(title 提示),任何字段修改重置测试状态;通过后显示绿色
"✓ 测试通过,可保存"徽标;未启用 AI 不受门槛限制
|
2026-10-27 15:21:54 +08:00 |
|
Logan.Li
|
b6b53c42a7
|
style: 侧边栏移除 New 徽标与数量统计,菜单仅图标+文字
|
2026-10-27 15:01:11 +08:00 |
|
Logan.Li
|
695c1c2357
|
refactor: Webhook 移入系统设置「消息通知」Tab,取消独立菜单
- WebhookConfig 页面转为可嵌入卡片组件 WebhookManager
(标准设置卡样式,逻辑不变),渲染于飞书通知卡下方
- 移除侧边栏「Webhook」菜单项、/webhooks 路由与页面文件
(旧地址自动回退流水线页)
- 使用指南/接口文档同步更新 Webhook 配置入口描述
|
2026-10-27 14:53:00 +08:00 |
|
Logan.Li
|
ed88a18e03
|
feat: 新增「文档」菜单(使用指南 + 接口文档)
- backend/docs/GUIDE.md:使用指南,每功能一句话讲清
「是什么→怎么用→实用技巧」(快速开始 3 步、流水线快速上手配置、
GitOps 概念与用法、AI 助手/批量发布/Jenkins/构建节点/工具/
飞书通知/用户 LDAP/常见问题 FAQ)
- backend/docs/API.md:接口文档(opsx-sec 骨架:通用约定/模块
索引表/重点端点 curl 示例/状态码速查)
- GET /api/docs:文档 embed 进二进制,运行目录 docs/ 优先可热更新
- /docs 页面:使用指南/接口文档切换 + 左侧目录锚点导航 +
markdown 渲染(marked + gfm-heading-id,深浅主题适配排版)
- 侧边栏系统组新增「文档」入口(第一位)
|
2026-10-27 14:45:33 +08:00 |
|
Logan.Li
|
8ee08e08da
|
style: 界面文案 K8s 统一改为 Kubernetes 全称(枚举值不变)
|
2026-10-27 14:36:47 +08:00 |
|
Logan.Li
|
8bd323cc73
|
refactor: 系统设置拆分顶部 Tab 分页
- 4 个 Tab:通用(外观主题+通知+语言区域)/ AI 助手 / 消息通知 /
用户目录(LDAP),复用编辑器 TopBar 下划线样式
- AI/消息通知/用户目录 Tab 标题带启用状态小圆点(绿=已启用)
- 原「保存设置/恢复默认」按钮移入通用 Tab(只作用于外观与通知)
- 内容区只渲染当前 Tab 卡片,纯布局重构,表单逻辑不变
|
2026-10-27 14:33:21 +08:00 |
|
Logan.Li
|
97193eb090
|
feat: v0.4.0 主题切换 + LLM 全面优化 + 登录会话 + 用户管理/LDAP
主题:
- 深色/浅色/跟随系统(useTheme:本地缓存先行+远端同步+matchMedia),
侧边栏快捷切换,设置页三档即选即生效
LLM(参考 opsxdb/aiops):
- llm.Client.ChatStream 流式(SSE 增量解析,透传 reasoning_content,
ctx 控制超时);POST /api/ai/chat/stream(平台实时数据注入降幻觉,
未配 LLM 降级规则 JSON,指令解析 action 不变)
- test-llm 支持草稿直测(保存前验证,apiKey 空/掩码回退已存)
- 发布失败自动 AI 分析日志尾部(结论/根因/建议),发布记录与发布
Tab 展示分析卡片
- 设置页 Provider 预设(DeepSeek/GLM/GLM编码/Qwen/Kimi/Ollama/自定义)
自动填 endpoint+模型+获取 Key 直达链接
登录与会话:
- HMAC 签名 token(7 天,密钥派生自 encryption.key);
authMiddleware 保护 /api/*(豁免登录/健康/SSE日志流/入站webhook)
- 登录页 /login + 未登录跳转 + 登出;401 自动清理跳登录
用户管理与 LDAP(借鉴 LokiStack):
- /users 页面:本地用户 CRUD、一次性密码、角色切换、来源徽章
(本地·蓝 | LDAP导入·紫);LDAP 导入按钮仅在启用且配置齐备时显示
- LDAP 配置卡(未启用仅提示语)、测试连接草稿直测+可选测试账号
- go-ldap:管理 Bind/用户搜索(防注入)/用户 DN 直连验证;
批量导入冲突策略(已LDAP跳过/本地同名转LDAP/新建);
登录分流本地 argon2id 或 LDAP 目录验证 + 首登 JIT 建号
|
2026-10-27 12:58:21 +08:00 |
|
Logan.Li
|
555934cc64
|
feat: 构建节点磁盘性能测试(dd 实测读写)
- 新增 internal/sshexec(x/crypto/ssh):远程命令通道,凭证来自
Credential(type=ssh) 解密(私钥/密码/端口/用户)
- POST /api/build-nodes/:id/disk-test:写 dd(256MB, oflag=direct,
不支持自动降级含缓存并标注) + 读 dd + 清理;IP 为本机时直接本地
exec;输出解析兼容 Linux/Mac 两种 dd 格式;60s 超时保护
- BuildNode 新增 credentialId 关联 SSH 凭证 + 磁盘测速结果持久字段
(显式 column 标签修正 GORM MBps 命名)
- 节点卡片新增仪表盘按钮触发测试;磁盘行显示 ↑写 ↓读 MB/s
(>200 绿 SSD 级 / 50-200 黄 / <50 红),hover 看测试模式与时间
- 编辑弹窗新增 SSH 凭证下拉
- 本机实测:local-mac 节点 写 2336 MB/s · 读 1793 MB/s(direct)
|
2026-10-27 12:21:39 +08:00 |
|
Logan.Li
|
6841c1104a
|
feat: 工具配置 Ubuntu 化 + nvm 管理 Node 版本
- 工具目录重写为 Ubuntu 构建环境导向(7 项),每项带安装命令提示
(apt/nvm,未安装时一键复制)
- 新增 nvm 工具条目(真实检测,本机验证 0.40.6);Node.js 改为
nvm 管理:默认版本可调,构建时通过 nvm install $NODE_VERSION
灵活指定版本
- DeployTool 新增 installHint 字段(模型/更新白名单/seed)
- 新增 deploy/Dockerfile.buildnode:Ubuntu 22.04 + JDK17/Maven/Git/
Docker CLI/Golang + nvm 默认 Node(--build-arg NODE_VERSION 可改)
- 工具页顶部说明条更新构建环境建议
|
2026-10-27 12:15:16 +08:00 |
|
Logan.Li
|
d9d1dd5e99
|
feat: 发布成功/失败飞书&Lark 群卡片通知
- internal/lark:飞书自定义机器人交互卡片(wide_screen_mode + 彩色头部
green/red/yellow + lark_md 字段区 + 查看构建详情按钮),支持签名加签
(timestamp+sign HMAC-SHA256,密钥 enc:v1: 加密存储)
- 双引擎收口:原生模拟引擎与 Jenkins 真实引擎运行结束均推送卡片;
应用/分支/构建(#N 或 runId)/状态/时间;Jenkins 构建附
externalURL 按钮直达构建详情页
- Webhook 优先级:流水线「通知 Webhook」> 全局设置(需启用)
- 系统设置新增飞书通知配置区(启用开关/Webhook/签名密钥只写/
发送测试卡片);POST /api/settings/test-lark
- E2E 已验证:本地模拟机器人收到完整卡片 JSON,测试卡片正常
|
2026-10-27 09:37:23 +08:00 |
|
Logan.Li
|
6e97b55015
|
feat: SPA 真实路由(/release、/pipelines/:id 等直达)
- 路由映射:/pipelines 列表、/pipelines/:id 编辑器、/release 批量发布、
/records 发布记录、/gitops、/environments、/credentials、/build-nodes、
/tools、/jenkins-import、/webhooks、/plugins、/settings
- 侧边栏/助手跳转同步更新 URL;直接输入/刷新/分享链接恢复对应页面;
未知路径回 /pipelines
|
2026-10-27 09:24:24 +08:00 |
|
Logan.Li
|
a3b4637e19
|
feat: 设置语言精简中英+补全时区;构建节点磁盘显示;浏览器 favicon
- 系统设置:界面语言仅保留 简体中文/English;时区按 亚/欧/美/大洋洲
分组补全 22 个常用时区
- 构建节点:BuildNode 新增 diskInfo 字段(模型/CRUD/seed),卡片显示
磁盘用量(未上报显示 —),添加/编辑弹窗可维护
- 新增 favicon.svg(主题渐变火箭图标),index.html 注入 icon 链接
|
2026-10-27 09:16:42 +08:00 |
|
Logan.Li
|
581d0a8351
|
feat: Jenkins Job 批量发布 + 全局 AI 智能助手 (v0.3.0)
参考 opsx-jenkins 发布清单:
- 批量发布页新增「粘贴清单」模式:多行 Job 名粘贴(#注释/内联对/
名称版本交替)、TAG/分支切换、分支快捷 chips、700ms 防抖解析预览、
串行/并发发布;未导入的 Jenkins Job 自动创建流水线后触发
- 解析器移植 opsx-jenkins parser(参数头识别/成对校验/重名检测)
全局 AI 智能助手(右下角悬浮):
- 自然语言「发布一下 cex-agent-server 等 5 个」→ 解析服务+分支+环境
→ 发布计划卡片(匹配状态着色)→ 确认 → 真实触发 → runId 回显 +
跳转发布记录
- LLM 接入:OpenAI 兼容接口(DeepSeek/GLM/Qwen),系统设置页配置
API Key(加密存储)+ 测试连接;未配置时自动降级本地规则模式,
服务名/分支关键词匹配,功能不中断
- 候选池 = 流水线 + Jenkins Job(60s 缓存);精确/忽略大小写/包含
三级匹配
新端点:POST /api/ai/chat、/api/ai/release、/api/batch/parse、
POST /api/settings/test-llm;SystemSetting 扩展 LLM 字段
|
2026-10-27 09:07:42 +08:00 |
|
Logan.Li
|
88d8fc282e
|
feat: 流水线编辑器 Task 任务库增加搜索(按任务名/描述/参数过滤)
|
2026-10-27 08:43:27 +08:00 |
|
Logan.Li
|
26341c3e8a
|
feat: 去 mock 化 —— 全模块接入真实数据 (参考 jianmu/opsx-jenkins/aiops)
后端(35+ 新路由):
- AES-256-GCM 字段加密(enc:v1:),密钥自动生成 data/encryption.key
- 新模型:Host/K8sCluster/Credential/BuildNode/DeployTool/WebhookEndpoint/
JenkinsServer/SystemSetting;Pipeline 扩展触发器/变量/缓存列,
PipelineRun 扩展 buildNumber/externalUrl
- 资源 CRUD + 真实测试端点:主机/集群/构建节点 TCP 拨号、
工具真实执行版本检测(保守安装策略)、Webhook HMAC-SHA256 签名发送、
入站流水线触发 /api/hooks/pipeline/:id
- Jenkins 完整集成(移植 opsx-jenkins 生产客户端):crumb/BasicAuth/
buildWithParameters/Location 队列/progressiveText 增量控制台,
服务器 CRUD+测试、Job 树拉取(folder 压平)、导入为流水线、
jenkins 类型流水线真实执行回传日志
- 流水线列表附带 lastRun、运行重试、summary 统计、系统设置单行表
- 运行结束触发出站 Webhook 通知;GitOps 同步状态真实推进
前端(14 页全部去 mock):
- 流水线列表/发布记录/批量发布/环境/凭证/构建节点/工具/Webhook/
系统设置/Jenkins 导入/GitOps(资源树+差异) 全部接入真实 API
- 编辑器 4 Tab 持久化(基本信息/触发设置含真实 Webhook URL/变量缓存/发布历史)
- TopBar 真实流水线切换 + 仅保存/保存并运行
- Sidebar 徽标真实统计;删除未使用组件与 mock 数据文件
|
2026-10-27 03:15:20 +08:00 |
|
Logan.Li
|
04d1342b27
|
feat: FlowStack 发布系统首个可运行版本 (gin + React)
- Go gin 后端:流水线/节点/连线/运行/日志/GitOps/插件 REST API,
SQLite(GORM) 自动建表 + seed,模拟执行引擎 + SSE 实时日志推送,
前端产物 go:embed 嵌入单二进制,一个端口同时服务 API 与页面
- React 19 前端:画布式流水线编辑器(React Flow + Tekton 任务库)、
GitOps 部署、批量发布、发布记录等 14 个模块页面,
tRPC 全部替换为 REST(TanStack Query)
- 首次启动生成随机密码管理员账号(日志 + data/initial-admin-password.txt)
- run.sh 一键构建启动(默认端口 9527,支持 start/stop/restart/build/dev)
|
2026-10-27 02:44:10 +08:00 |
|