Files
Jeff Gu a7c65b9476 feat(i18n): 添加多语言支持,优化用户界面文本
在此提交中,我们引入了多语言支持,允许用户根据其语言偏好查看界面文本。新增了国际化库(i18next)并在多个组件中实现了翻译功能,确保错误消息和界面文本能够根据用户的语言设置动态变化。这一改动旨在提升用户体验,使得应用能够服务更广泛的用户群体,增强可访问性和友好性。同时,更新了相关文档以指导开发者如何使用新的国际化功能。
2026-04-15 09:31:29 +08:00

4.5 KiB
Raw Permalink Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Project Overview

One API on Workers — 基于 Cloudflare Workers 的 AI 统一网关,支持多渠道管理、负载均衡、用量统计。将 OpenAI、Azure OpenAI、Claude、Gemini 等多家 AI 服务商统一为 OpenAI 兼容 API。

Commands

bun install                          # 安装所有依赖(Bun workspaces,根目录一次安装包含 frontend)
bun run dev                          # 同时启动 Vite 前端 (5173) + Worker 本地 (8788)
bun run dev:worker                   # 仅启动 Worker(使用 wrangler.local.jsonc)
bun run dev:web                      # 仅启动前端 Vite 开发服务器
bun run build                        # 构建前端到 public/(含 tsc 类型检查)
bun run deploy                       # 构建 + 部署到 Cloudflare
bun run cf-typegen                   # 生成 Cloudflare 绑定类型到 worker-configuration.d.ts
cd frontend && bun run lint          # 前端 ESLint 检查

无专用测试框架。bun run build 作为基本类型检查;后端变更通过 bun run dev 启动后用管理界面的 API 测试页面验证。

Architecture

Tech Stack

  • Runtime: Cloudflare Workers
  • Backend: Hono + chanfana (OpenAPI) + Zod
  • Database: Cloudflare D1 (SQLite),自动迁移(src/db/index.ts 中 ensureReady() 懒初始化)
  • Analytics: Cloudflare Analytics Engine(用量统计写入)
  • Frontend: React 19 + Vite + TailwindCSS 4 + shadcn/ui + Zustand + TanStack Query + React Router 7
  • Package Manager: Bun(workspaces monorepo:根目录 = Worker,frontend/ = React UI)

Request Flow

Client → src/index.ts (Hono app)
  ├─ /v1/*  → providers/index.ts → UnifiedProxyEndpoint
  │    1. route-policy.ts: URL → RouteId(决定允许的渠道类型)
  │    2. channel-resolver.ts: 认证 token → 查可用渠道 → 按权重选取
  │    3. upstream-retry.ts: 执行请求,支持同渠道重试 + 跨渠道 fallback
  │    4. provider-registry.ts: 按 ChannelType 分发到具体 proxy 实现
  ├─ /api/admin/*  → admin/index.ts(管理 API,需 x-admin-token 或 session 认证)
  └─ 其他路径  → 前端静态资源 / Vite dev server 代理

Key Modules

  • src/providers/shared/: 核心代理逻辑 — 认证、渠道解析、负载均衡、重试、流式处理
  • src/providers/*.ts: 各服务商代理实现(统一 ProviderFetch 接口)
  • src/admin/: 管理 API(渠道/令牌/定价/计费/系统配置/认证/统计)
  • src/billing.ts: 计费精度处理(BILLING_RAW_SCALE = 1e9,内部整数运算)
  • src/channel-config.ts: 渠道配置标准化(normalizeChannelConfig / sanitizeChannelConfig)
  • src/analytics/: Analytics Engine 写入 + Cloudflare GraphQL 查询
  • type.d.ts: 全局类型定义(CloudflareBindings, ChannelConfig, ApiTokenData 等),不需要 import

Frontend Structure

  • frontend/src/pages/: 各页面组件(Dashboard、Channels、Tokens、Pricing、UsageLogs 等)
  • frontend/src/api/client.ts: API 客户端,自动附加 admin token
  • frontend/src/store/auth.ts: Zustand 认证状态管理
  • frontend/src/components/ui/: shadcn/ui 基础组件
  • frontend/src/lib/: 工具函数(计费格式化、渠道模型处理、本地缓存等)
  • 构建输出到 ../public/,由 Worker 的 ASSETS 绑定提供服务

Database

D1 表:channel_config、api_token、settings、admin_login_challenge、admin_session、admin_rate_limit。Schema 定义在 src/db/index.ts,首次请求自动建表和迁移。版本号在 src/constants.ts 的 DB_VERSION 中管理。

Configuration

  • wrangler.jsonc: 生产部署配置
  • wrangler.local.jsonc: 本地开发配置(含 FRONTEND_DEV_SERVER_URL)
  • .dev.vars: 本地 secrets(ADMIN_TOKEN、CF_API_TOKEN、CF_ACCOUNT_ID)
  • type.d.ts: CloudflareBindings 定义所有环境绑定

Code Style

  • 后端 TypeScript 缩进 4 空格,前端 TSX 缩进 2 空格
  • 渠道类型使用字符串字面量("openai", "azure-openai", "claude" 等),定义在 type.d.ts 的 ChannelType
  • Admin API 路由命名:src/admin/*_api.ts
  • Provider 文件命名:src/providers/{type}-proxy.ts
  • 新增 Provider 需在 src/providers/shared/provider-registry.ts 注册,并在 route-policy.ts 的对应 RouteId 中添加类型