From f3dc0de26836356a9ae6e01998ae37eaef9c4a4f Mon Sep 17 00:00:00 2001 From: xiezhouwei Date: Wed, 3 Jun 2026 10:15:09 +0800 Subject: [PATCH] Remove .codebuddy from tracking and add to .gitignore --- .codebuddy/memory/2026-05-28.md | 30 --------------------------- .codebuddy/memory/2026-06-01.md | 12 ----------- .codebuddy/memory/2026-06-02.md | 36 --------------------------------- .codebuddy/memory/2026-06-03.md | 11 ---------- .gitignore | 1 + 5 files changed, 1 insertion(+), 89 deletions(-) delete mode 100644 .codebuddy/memory/2026-05-28.md delete mode 100644 .codebuddy/memory/2026-06-01.md delete mode 100644 .codebuddy/memory/2026-06-02.md delete mode 100644 .codebuddy/memory/2026-06-03.md diff --git a/.codebuddy/memory/2026-05-28.md b/.codebuddy/memory/2026-05-28.md deleted file mode 100644 index 7f6a212..0000000 --- a/.codebuddy/memory/2026-05-28.md +++ /dev/null @@ -1,30 +0,0 @@ -# 2026-05-28 - -## Docker 构建 & 部署 -- 项目使用多阶段 Docker 构建(bun前端 → golang后端 → debian运行时) -- 国内构建需要添加 `ENV GOPROXY=https://goproxy.cn,direct` 到 Dockerfile builder2 阶段 -- docker-compose.yml 中 image 需改为本地镜像名 `token-factory:latest` 才能使用自建镜像 - -## 代码修复 -- `ModelTag` 和 `ModelTestResult` 未加入 AutoMigrate 列表,导致 `model_tags` 和 `model_test_results` 表缺失 - - 已在 model/main.go 的 `migrateDB()` 和 `migrateDBFast()` 两处添加 -- Dockerfile 中添加了 GOPROXY=goproxy.cn 解决国内网络无法访问 proxy.golang.org 的问题 - -## 模型广场数据链路分析 -- GET /api/pricing 3层过滤: abilities(enabled) → ModelHasConfiguredPricing(倍率/价格表) → BuildPricingAPIItems(渠道+单测门禁) -- 模型名必须与 ModelRatio/ModelPrice 中的 key 精确匹配(区分大小写) -- 模型广场需: home_page_content为空 + abilities有记录 + 倍率表有配置 + models表status=1 + 单测通过 -- 设置页面仅 Root 用户(role=100)可见,Admin(role=10)不可见 -- 倍率配置在: 设置 → 分组与模型定价设置(RatioSetting组件) - -## DeepSeek 模型配置 -- 渠道名为"DeepSeek",实际模型名为 `deepseek-v4-flash` 和 `deepseek-v4-pro` -- ModelRatio 中只有 `DeepSeek`(大写),缺少 `deepseek-v4-flash` 和 `deepseek-v4-pro` -- 已通过 SQL 在 ModelRatio 中添加这两个模型名的倍率配置 - -## 单测门禁问题(核心阻断) -- `model_test_results` 表不存在时,`BuildPricingAPIItems` 中 `testMs` 永远为0 -- 第264行: `if !includeUntestedChannelPricingRows && testMs <= 0 { continue }` 跳过所有条目 -- 即使 `LoadChannelPricingTestSuccessIndex` 对空表返回空map不报错,但 `testMs<=0` 门禁仍阻断 -- 解决方案: 手动创建表并插入测试记录,或在管理后台执行渠道测试 -- 已通过 SQL 创建 `model_test_results` 表并插入 deepseek 渠道的两条测试记录(testMs=500/800) diff --git a/.codebuddy/memory/2026-06-01.md b/.codebuddy/memory/2026-06-01.md deleted file mode 100644 index c96ae5c..0000000 --- a/.codebuddy/memory/2026-06-01.md +++ /dev/null @@ -1,12 +0,0 @@ -# 2026-06-01 - -## 项目架构文档生成 -- 完整分析了项目所有模块、目录结构、API端点、数据模型、前端路由等关联关系 -- 生成了 `TokenFactory_Architecture_Doc.docx` (35.7KB) 和中文版 `TokenFactory_Architecture_Doc_CN.docx` (29.8KB) -- 涵盖: 项目概述、路由模块(5个子路由器)、70+个API端点、40+个Relay适配器、数据模型、服务层、中间件、配置模块、通用工具、OAuth、DTO、前端页面路由(30+页面)、i18n、构建部署 - -## 阿里渠道添加 Qwen3.7-Max 模型 -- 修改了 `relay/channel/ali/constants.go`:ModelList 添加 "qwen3.7-max" -- 修改了 `setting/ratio_setting/model_ratio.go`:defaultModelRatio 添加倍率 10(与 qwen-plus 相同) -- 模型名含"qwen",自动适配 Claude Anthropic 接口和 OpenAI 兼容接口,无需改 adaptor -- 需要重建镜像并在数据库 ModelRatio 中同步配置才能生效 diff --git a/.codebuddy/memory/2026-06-02.md b/.codebuddy/memory/2026-06-02.md deleted file mode 100644 index e0a5d3b..0000000 --- a/.codebuddy/memory/2026-06-02.md +++ /dev/null @@ -1,36 +0,0 @@ -# 2026-06-02 - -## 修复供应商菜单权限不生效的 Bug -- **根本原因**:管理员设置页面 `SettingsSidebarModulesAdmin.jsx` 中 personal 区域使用 `provider` key,而实际侧栏 `SiderBar.jsx` 使用 `supplier` key(以及 `supplier-apply`、`supplier-channel`、`supplier-pricing-settings`、`supplier-dashboard` 子菜单),导致 key 不匹配 -- **修复文件**:`web/src/pages/Setting/Operation/SettingsSidebarModulesAdmin.jsx` - - 初始状态中 personal 区域:`provider` → `supplier`,并补充子菜单 key - - 重置默认配置中:`provider` → `supplier` - - sectionConfigs UI 展示:`provider` → `supplier`,并补充子菜单模块 -- 修复后管理员禁用供应商相关模块即可正确生效 - -## 新增聊天区域角色级菜单配置功能 -- **需求**:管理员可针对不同角色(普通用户/管理员/超级管理员)独立配置聊天区域的操练场和聊天菜单可见性 -- **修改文件**: - 1. `controller/misc.go`:GetStatus API 新增 `SidebarModulesByRole` 配置返回 - 2. `web/src/hooks/common/useSidebar.js`:finalConfig 计算末尾添加角色覆盖逻辑,读取用户角色和 SidebarModulesByRole 配置 - 3. `web/src/pages/Setting/Operation/SettingsSidebarModulesAdmin.jsx`:新增角色配置 UI(RadioGroup 切换角色 + Switch 控制模块),独立保存到 `SidebarModulesByRole` -- **数据格式**:`SidebarModulesByRole` = `{ "1": { "chat": { "playground": false } }, "10": {...}, "100": {...} }`,角色值与 USER_ROLES 一致 -- **覆盖逻辑**:角色配置优先级高于全局 SidebarModulesAdmin 配置,显式设为 false 的模块对对应角色隐藏 -- **后续优化**:角色配置扩展为所有菜单区域(chat/console/personal/admin),UI 复用 sectionConfigs 动态渲染全部模块 - -## 修复超级管理员点击"系统设置"菜单异常 -- **根本原因**:`SettingsSidebarModulesAdmin.jsx` 中 `sectionConfigs` 用 `const` 声明在组件内部(第340行),但 `buildDefaultRoleConfig()` 在 `useState` 初始值中调用(第172行),引用了尚未声明的 `sectionConfigs`,触发 JavaScript Temporal Dead Zone 错误,导致整个 Setting 页面崩溃 -- **修复方案**:将 `sectionConfigs` 提取为组件外部常量,内部用 `translatedSections` 做翻译映射 -- **同时修复**: - - `resetSidebarModules` 中 personal 缩进混乱 + 遗漏 supplier 子菜单 key - - `useEffect` fallback 中仍有旧的 `provider` key 和 `'distributor-apply'` key 未修正 - -## 优化菜单权限管理功能(去重+简化) -- **问题**:侧边栏管理页面存在两套重复配置(全局控制 SidebarModulesAdmin + 角色配置 SidebarModulesByRole),需要保存两次 -- **修改文件**: - 1. `web/src/pages/Setting/Operation/SettingsSidebarModulesAdmin.jsx`:移除全局控制部分,只保留角色菜单权限配置,一个保存按钮;普通用户角色不显示管理员区域配置 - 2. `web/src/hooks/common/useSidebar.js`:移除 `adminConfig`/`SidebarModulesAdmin` 依赖,改用角色配置(`SidebarModulesByRole`)作为基础配置与用户个人配置合并 - 3. `web/src/components/settings/personal/cards/NotificationSettings.jsx`:移除 `adminConfig`/`mergeAdminConfig` 引用,改用后端权限检查 - 4. `web/src/components/settings/OperationSetting.jsx`:移除 `SidebarModulesAdmin` state - 5. `controller/misc.go`:GetStatus API 移除 `SidebarModulesAdmin` 返回 -- **配置流程简化**:管理员只需配置角色菜单权限(SidebarModulesByRole),用户个人设置在此基础上自定义,不需要保存两次 diff --git a/.codebuddy/memory/2026-06-03.md b/.codebuddy/memory/2026-06-03.md deleted file mode 100644 index 7eb4053..0000000 --- a/.codebuddy/memory/2026-06-03.md +++ /dev/null @@ -1,11 +0,0 @@ -## Git 推送问题排查 -- 项目首次推送到 `https://git.tlyq.ai/xiezhouwei/tokenFactory.git` 时遇到 HTTP 413 错误 -- 原因:`service/ffprobe-bin/` 包含 3 个大型二进制文件(linux-amd64: 76MB, linux-arm64: 49MB, windows-amd64: 97MB),用于 embed_ffprobe 构建模式 -- 解决:将 `service/ffprobe-bin/` 加入 `.gitignore`,删除旧 Git 对象重新提交 -- 注意:`.gitignore` 文件曾被 PowerShell 的 `Add-Content` 损坏编码(写入 UTF-16 LE),需用 Python 重写为 UTF-8 -- 服务器 HTTP 请求体限制极低(~1MB),即使 6.74MB 的干净提交仍无法推送,需服务器管理员调整 Gitea 配置 - -## 菜单权限优化验证 -- 修复 `NotificationSettings.jsx` 中遗留的 `isAllowedByAdmin` 引用(该函数已被删除,会导致运行时错误) -- 所有修改文件 linter 检查通过,无错误 -- 全项目搜索确认 `SidebarModulesAdmin` 全局配置引用已完全清理 diff --git a/.gitignore b/.gitignore index 4aa4fc7..62444e4 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ tiktoken_cache .cache plans .claude +.codebuddy electron/node_modules electron/dist