Skip to content

docs: CLAUDE.md 重写 + 企业集成设计 + 27个Bug修复 - #16

Open
nopassword2000 wants to merge 9 commits into
beizhu-1209:mainfrom
nopassword2000:feature/docs-and-fixes
Open

docs: CLAUDE.md 重写 + 企业集成设计 + 27个Bug修复#16
nopassword2000 wants to merge 9 commits into
beizhu-1209:mainfrom
nopassword2000:feature/docs-and-fixes

Conversation

@nopassword2000

Copy link
Copy Markdown
Contributor

文档建设

  • CLAUDE.md 重写为中文项目宪法,新增:平台能力一览表(7大模块)、企业集成架构、SSO认证流程、开发规范(设计原则+技能评审+测试要求)、提交前规则
  • 新增 docs/enterprise-integration.md(企业微信 OAuth 2.0 集成设计)
  • 新增 enterprise-ai/ 企业 AI 分析报告

Bug修复

  • 日志管理页面缺失导致管理端启动报错
  • other 类型供应商模型名前缀被错误改写为 openai/
  • 含 / 的 model_id 导致 LiteLLM 路由解析错误
  • web 端 provider 图标 symlink 指向其他开发者绝对路径

安全修复(6个严重问题)

  • JWT密钥/超管密码移除弱默认值
  • API Key 权限绕过修复
  • 容器以非 root 用户运行
  • router_settings 重复插入修复

其他修复(21个)

详见 git log,涵盖架构改进、前端安全、基础设施加固

🤖 Generated with Claude Code

nopassword added 9 commits May 30, 2026 12:16
严重修复:
- JWT密钥/超管密码移除弱默认值,部署时必须显式设置
- API Key权限绕过修复,不再硬编码is_admin=True
- 容器以非root用户运行
- router_settings重复插入修复
- 数据库索引已存在于init.sql

重要修复:
- LiteLLM孤儿用户创建失败时cleanup
- crypto解密失败加warning日志
- logging.py改用settings.log_dir
- efficiency 404改用HTTPException
- delete_user重命名为deactivate_user
- 批量更新返回失败明细
- URL参数传递token已移除
- accessTest.ts改用统一request函数
- request.ts JSON解析加安全try-catch
- 删除5个未引用的效率视图
- nginx安全头
- docker-compose.middleware.yaml默认值+日志限制

建议改进:
- .env路径改为基于__file__的绝对路径
- log_dir加入Settings
- createEfficiencyReport API函数
- Dockerfile镜像ARGS化+Node 22
- agent_usage_logs CASCADE改为SET NULL
@beizhu-1209

Copy link
Copy Markdown
Owner

感谢提交PR,review中

@beizhu-1209

Copy link
Copy Markdown
Owner

需要警惕的问题(按风险排序)

  1. 中危:batch_update_keys 返回结构变了,但前端没改

PR 把 PUT /api/v1/ai-keys/batch 的返回从 {success, fail} 改成了 {successes:[], failures:[]}(apps/api/v1/ai_keys.py),但前端 ai-key.ts:136 的 batchUpdateResources 仍然声明返回 {success, fail},且 BatchResourceDialog.vue:193 直接用 result.success。

合并后:批量设置资源的成功提示会显示 "成功 undefined 个"。功能本身能跑,但提示坏了。这是前后端没对齐的遗漏。

  1. 中危:deps.py 改了 AI Key 鉴权,且 hasattr 是无效判断

两个改动:

  • 移除了 ?token= query 参数鉴权,只保留 Authorization: Bearer。我查了调用方只有 skills.py 一处,前端也没有用 ?token= 传 AI Key 的地方,所以影响面可控。但如果有外部客户端/文档依赖 query 传 token,会 401。
  • is_admin = api_key.is_admin if hasattr(...) else False——我确认了 ApiKey 模型根本没有 is_admin/permissions 字段,所以 hasattr 永远 False。结果是:AI Key 的 is_admin 从原来的 True 变成了 False。

这第二点其实是安全修复(原代码给所有 API Key 默认管理员权限,是越权漏洞),方向对。但写法用 hasattr 判断一个明确不存在的属性,是无意义的防御,等于硬编码 False。如果现有有任何 AI Key 在走管理操作,合并后会立刻 403——需要确认没有这种依赖。

  1. 低危但影响部署:Docker 改非 root 用户运行

Dockerfile 新增 USER aihelms 非 root 运行,supervisord 也从 user=root 改成 user=aihelms。安全上是好事,但:

  • 需要确认 /logs、/data、/frontend 这些挂载卷的宿主机权限,非 root 用户写不进去会启动失败。
  • 这是部署行为变更,合并后第一次 docker build + 部署要重点验证。

良性改动(可放心合并的部分)

  • 删除 5 个 efficiency 视图(-1462 行):已确认这些在 nightly 的 router 里就没被引用,是死代码,PR 同时用 Overview/Adoption/Cost/Budget/Reports 这套新视图替代,router 引用完整,不会留下死链接。
  • secret_key/super_admin_password 默认值改空:强制从环境变量读,杜绝硬编码弱密码,安全修复。.env.example 也同步加了说明。
  • user_service:create_user 给 LiteLLM 调用加了 try/except 容错(符合 CLAUDE.md "同步失败不影响平台功能"原则);delete_user 改成软删除 deactivate_user 并保留旧函数兼容,合理。
  • model_service:model_id 含 / 时替换成 -,避免 LiteLLM 误解析;other 类型供应商跳过前缀解析。是针对实际 bug 的修复。
  • request.ts:抽出 parseResponseJSON,处理非 JSON 响应,健壮性提升。
  • accessTest.ts:三个同步测试函数统一走 request(),消除重复代码。
  • nginx 安全头、init.sql 幂等插入、agent_usage_logs 外键改 SET NULL:都是合理的小修复。
  • asyncio.create_task 保留引用防 GC:正确的 bug 修复。

几个要你确认的点

  1. vite.config.ts 把 dev 代理端口从 8000 改到了 8010——但 dev/start-api 里后端还是跑在 8000。这俩对不上,合并后本地 dev 前端代理会连不上后端。需要确认是不是你们 dev 环境约定改了端口,否则这是个会破坏开发环境的改动。
  2. 新增 docs/ 下两个文件(企业集成文档、分析报告)——你的记忆规则里明确"不要在 docs/ 下创建新文件"。这俩文件违反了项目约定。
  3. CLAUDE.md 被大幅重写(+298 行),改成了"中文项目宪法"。需要你确认新版宪法是否和现有 .claude/rules/ 冲突。

@beizhu-1209

Copy link
Copy Markdown
Owner

您好,感谢提交的PR,请提交到dev分支。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants