|
|
0dcb9c02d3
|
fix(deploy): k8s backend 注入 AI 相关环境变量
Build and Deploy / build-and-deploy (push) Successful in 59m58s
生产环境 deployment 缺 AI_ENABLED/AI_API_KEY 等变量,导致 scheduler
里的 AI OKR 分析分支被跳过,cron 只跑了 gitea 同步而没触发 OKR 更新。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-28 11:19:52 +08:00 |
|
|
|
e1396b1479
|
feat(okr): 接入豆包AI自动分析Git提交生成OKR
Build and Deploy / build-and-deploy (push) Successful in 1m4s
基于豆包(Doubao) LLM 分析 git commit messages,按仓库维度自动为每个
提交人生成、更新、标记完成 OKR:
- 新增 ai_analyzed_commits 表实现增量标记,每条 commit 只分析一次
- objectives/keyResults 新增 source、sourceKey 字段区分 AI 生成与手动创建
- keyResults.status 扩展支持 completed 状态
- 新增 llm-client.ts 封装豆包 Ark API 调用(原生 fetch,零依赖)
- 新增 okr-ai-sync.ts 核心服务:按仓库分组 → 构建 prompt → 调用 AI → 执行 actions
- scheduler 在 Git 同步后自动触发 AI 分析(受 AI_ENABLED 开关控制)
- 新增 POST /api/okr/ai-analyze 手动触发和 preview 预览端点
- 防重复三层保障:commit SHA 标记 + sourceKey 去重 + 项目 OKR 上下文
已验证:501 条 commits 全量分析,生成 37 个 Objectives、164 个 Key Results,
增量去重机制正常(重复调用返回 0 actions)。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-27 13:29:36 +08:00 |
|
|
|
7cd8bc1b9b
|
feat: 同步全部分支的 Git 提交,不再仅限默认分支
Build and Deploy / build-and-deploy (push) Successful in 46m54s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-21 10:57:04 +08:00 |
|
|
|
4fa69ca2bc
|
fix: 项目明细 OKR 任务描述过长撑破栅格布局
Build and Deploy / build-and-deploy (push) Successful in 1m8s
grid-template-columns 默认 1fr 的 min-content 下限会被超长不换行中文撑开,
改为 minmax(0,1fr) 让列可正常收缩;kr-name 改为 2 行 line-clamp,
避免单行省略把描述几乎全部隐藏。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-04-20 17:21:55 +08:00 |
|
|
|
512d3baca2
|
feat: 开发者可编辑项目、侧边栏项目列表优化、筛选器UI改进
Build and Deploy / build-and-deploy (push) Successful in 1m1s
- 新增 PATCH /api/projects/:id 开发者有权限可编辑项目
- 侧边栏项目列表改用项目API直接拉取,路由切换时自动刷新
- 项目筛选器和权限分配下拉框只显示项目名称,标签自动折叠
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-14 15:02:42 +08:00 |
|
|
|
18e3ee18da
|
fix: 删除项目时先清理关联数据,避免外键约束报错
Build and Deploy / build-and-deploy (push) Successful in 1m2s
- 删除项目前清理 userProjectPermissions、projectRepos、OKR 数据
- 修复 admin 和普通路由两处删除逻辑
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-14 13:46:31 +08:00 |
|
|
|
17696f9049
|
perf: Nginx 开启 gzip 压缩和静态资源缓存,加速首次加载
Build and Deploy / build-and-deploy (push) Successful in 1m2s
- gzip 压缩 JS/CSS/JSON 等资源(676KB→226KB)
- /assets/ 静态文件设置 1 年缓存(文件名含 hash)
- index.html 设置 no-cache 确保更新及时
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-14 11:43:15 +08:00 |
|
|
|
feb305c454
|
feat(权限): 开发者也支持项目级权限,创建项目自动获得权限
Build and Deploy / build-and-deploy (push) Successful in 1m31s
- 开发者与观察者统一逻辑:未分配项目则无法查看数据
- 开发者创建项目时自动获得该项目的查看权限
- 管理员可在用户管理页面为开发者分配项目
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-14 11:33:01 +08:00 |
|
|
|
10ed4f090d
|
feat: 项目编辑、成员编辑、性能优化及UI改进
Build and Deploy / build-and-deploy (push) Successful in 1m2s
- 新增项目编辑功能(修改名称、标识)
- 团队成员页面增加编辑按钮(管理员可修改姓名、邮箱、角色)
- 项目详情接口性能优化:批量查询替代N+1,Git数据按仓库名过滤(8s→0.2s)
- 侧边栏和图表改为显示项目名称而非标识
- 同步日志按时间倒序排列
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-14 11:21:48 +08:00 |
|
|
|
4283824533
|
feat(权限): 观察者角色支持项目级查看权限
Build and Deploy / build-and-deploy (push) Successful in 1m37s
- 新增 user_project_permissions 表,管理观察者可查看的项目
- 管理员可在用户管理页面为观察者分配项目权限
- 所有数据接口(总览、项目、OKR、Git活动)按分配的项目过滤
- 未分配项目的观察者看到空数据
- 同步日志按时间倒序排列
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-14 10:33:11 +08:00 |
|
|
|
d6dc0a882e
|
fix: keep docker build cache, remove builder prune -a
Build and Deploy / build-and-deploy (push) Successful in 1m19s
|
2026-04-13 19:39:55 +08:00 |
|
|
|
becc3b34d1
|
ci: test kubectl mount after runner restart
Build and Deploy / build-and-deploy (push) Successful in 1m8s
|
2026-04-13 19:30:52 +08:00 |
|
|
|
7601ca5443
|
fix: detect mounted kubectl first, skip download
Build and Deploy / build-and-deploy (push) Successful in 5s
|
2026-04-13 19:27:25 +08:00 |
|
|
|
c6d5a1c935
|
fix: use mounted kubectl, fallback to official dl.k8s.io
Build and Deploy / build-and-deploy (push) Has been cancelled
|
2026-04-13 19:23:46 +08:00 |
|
|
|
b8ecaf44d0
|
fix: add production domain to CORS whitelist
Build and Deploy / build-and-deploy (push) Has been cancelled
|
2026-04-13 18:52:54 +08:00 |
|
|
|
7b8f4331f6
|
debug: add kubeconfig diagnostics to CI
Build and Deploy / build-and-deploy (push) Successful in 1m20s
|
2026-04-13 17:54:48 +08:00 |
|
|
|
8e2b1c04e7
|
fix: kubeconfig use base64 decode
Build and Deploy / build-and-deploy (push) Failing after 3m13s
|
2026-04-13 17:49:14 +08:00 |
|
|
|
88f6614fd3
|
ci: trigger redeploy with updated kubeconfig
Build and Deploy / build-and-deploy (push) Has been cancelled
|
2026-04-13 17:38:00 +08:00 |
|
|
|
d8204c8572
|
feat: HTTP→HTTPS 自动跳转
Build and Deploy / build-and-deploy (push) Has been cancelled
- 新增 redirect-https-middleware.yaml(Traefik Middleware)
- Ingress 加 traefik.ingress.kubernetes.io/router.middlewares annotation
- CI 流水线在 Ingress 之前 apply middleware
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-13 14:50:06 +08:00 |
|
|
|
43f885e22a
|
feat: MySQL 远程数据库 + CI/CD 流水线 + K8s 部署配置
数据库迁移:
- SQLite → MySQL (mysql-8351f937d637-public.rds.volces.com)
- Schema 从 drizzle-orm/sqlite-core 改为 drizzle-orm/mysql-core
- 全量数据迁移完成(13 张表 525 条记录)
CI/CD 流水线:
- .gitea/workflows/deploy.yaml(airlabs 分支触发)
- 前后端分别构建镜像推到火山引擎 CR internal 命名空间
- 自动部署到内部 K3s 集群
K8s 配置:
- backend-deployment.yaml(Bun 3200 端口 + MySQL 私网连接)
- web-deployment.yaml(Nginx 80 端口 + SPA fallback)
- backend-ingress.yaml(devperf-api.airlabs.art + TLS)
- web-ingress.yaml(devperf.airlabs.art + TLS)
- cert-manager-issuer.yaml(Let's Encrypt)
其他:
- 前端 Dockerfile 支持 VITE_API_BASE_URL 构建参数
- 后端 Dockerfile 改为直接运行源码(兼容 mysql2)
- 侧边栏/全局样式优化 + Git 图表修复
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-13 13:48:54 +08:00 |
|
|
|
58fe2b1ea8
|
feat: OKR看板重设计 + 周切换 + 恢复选日期 + 项目列表优化
- OKR看板:按项目分组大卡片 + 目标/任务折叠展开 + 统计栏 + 按项目筛选
- KR状态文本标签(已取消/已暂停/已延期)替代emoji
- 本周关键结果支持前后周切换(‹ 本周 ›)+ 日期范围显示
- 恢复暂停任务时必须选择新截止日期
- 项目列表仓库名只显示短名不显示完整URL
- 项目详情标题合并到进度条卡片内
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-10 15:07:37 +08:00 |
|
|
|
f88e2d9ab0
|
feat: KR 状态管理(延期/暂停/恢复/取消)+ 操作日志 + 异常事项面板
- KR 新增 status 字段(active/paused/cancelled)+ kr_logs 操作日志表
- 每个 KR 支持延期(选新日期+原因)、暂停、恢复、取消操作
- 延期过的 KR 显示蓝色「已延期」标签
- 暂停/取消的 KR 不计入目标进度
- 操作日志弹窗:时间线展示所有变更记录
- 团队总览「异常事项」面板:展示逾期/暂停/取消的 KR 及原因
- 本周关键结果面板正确显示取消/暂停状态
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-10 14:15:55 +08:00 |
|
|
|
246410e12c
|
feat: 自动同步每天两次(02:00+19:00) + 启动时首次同步
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-10 10:54:46 +08:00 |
|
|
|
690766528a
|
feat: 团队总览改版 + OKR 创建简化 + 时区修复
- 总览页6面板:项目OKR进度/KR状态/本周关键结果/代码活动/历史逾期/最近提交
- 去掉PR合入时间和产品线进度(重复),新增历史逾期未完成和最近提交动态
- OKR创建简化:目标只需标题+负责人,时间自动从任务推算
- KR创建简化:只需任务内容+起止时间,去掉目标值/单位/权重
- 修复时区问题:日期选择器UTC偏移导致少1天
- 今天截止显示橙色标签,已逾期红色,进行中蓝色
- DataCard支持自定义header slot
- 目标时间范围自动取任务最早开始~最晚截止
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-10 10:45:08 +08:00 |
|
|
|
44464dd334
|
feat: DevPerf Dashboard 研发人效看板 v1.0
- 后端:Bun + Hono + Drizzle ORM + SQLite
- 前端:Vue 3 + Naive UI + ECharts
- 项目管理:创建项目 + 绑定 Git 仓库
- OKR 系统:目标/关键结果 CRUD + 进度追踪
- Git 同步:Gitea API 自动同步 commit/PR + 作者关联
- 数据看板:项目 OKR 进度 + KR 状态分布 + 代码活动
- 权限体系:admin/manager/developer/viewer 四级
- Docker 部署:docker-compose + nginx
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-09 17:57:14 +08:00 |
|