Initial commit of akmon project

This commit is contained in:
2026-01-20 08:04:15 +08:00
commit 77a2bab985
1309 changed files with 343305 additions and 0 deletions

View File

@@ -0,0 +1,195 @@
# 简化版 Supabase 自动翻译服务
这是一个简化版的自动翻译脚本,专门用于翻译 `ak_contents` 表的内容,使用 Supabase 和 RageFlow 接口。
## 功能特点
- ✅ 直接连接 Supabase 数据库
- ✅ 使用 RageFlow API 调用大模型翻译
- ✅ 支持批量翻译多种语言
- ✅ 自动保存翻译结果到 `ak_content_translations`
- ✅ 简单的质量评估
- ✅ 避重复翻译
- ✅ 错误处理和日志记录
## 快速开始
### 1. 安装依赖
```bash
pip install aiohttp asyncio
```
### 2. 配置参数
复制 `.env.example``.env` 并填入您的配置:
```bash
cp .env.example .env
```
编辑 `.env` 文件:
```env
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-supabase-anon-key
RAGEFLOW_API_KEY=your-rageflow-api-key
```
### 3. 使用脚本
#### 方法1直接修改脚本配置
编辑 `simple_translation_service.py` 中的配置:
```python
config = TranslationConfig(
supabase_url="YOUR_SUPABASE_URL",
supabase_key="YOUR_SUPABASE_KEY",
rageflow_api_key="YOUR_RAGEFLOW_KEY"
)
```
然后运行:
```bash
python simple_translation_service.py
```
#### 方法2作为模块使用
```python
import asyncio
from simple_translation_service import SimpleTranslationService, TranslationConfig
async def translate_contents():
config = TranslationConfig(
supabase_url="YOUR_SUPABASE_URL",
supabase_key="YOUR_SUPABASE_KEY",
rageflow_api_key="YOUR_RAGEFLOW_KEY"
)
async with SimpleTranslationService(config) as service:
# 翻译为英文和日文限制5条记录
results = await service.batch_translate(
target_languages=["en", "ja"],
limit=5
)
print(f"翻译完成: {results['summary']}")
# 运行
asyncio.run(translate_contents())
```
## 数据库要求
确保您的 Supabase 数据库中存在以下表:
### ak_contents 表(源内容)
```sql
CREATE TABLE ak_contents (
id UUID PRIMARY KEY,
title TEXT,
content TEXT,
category_id UUID,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
```
### ak_content_translations 表(翻译结果)
```sql
CREATE TABLE ak_content_translations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
content_id UUID REFERENCES ak_contents(id),
language VARCHAR(10) NOT NULL,
title TEXT,
content TEXT,
quality_score FLOAT DEFAULT 0.0,
translated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
translation_source VARCHAR(50) DEFAULT 'manual',
UNIQUE(content_id, language)
);
```
## API 使用方法
### 获取待翻译内容
```python
contents = await service.get_contents_to_translate(limit=10)
```
### 翻译单个内容
```python
translation = await service.translate_content_item(content, "en")
```
### 批量翻译
```python
results = await service.batch_translate(
target_languages=["en", "ja", "fr"],
limit=20
)
```
## 支持的语言
- `en`: English (英文)
- `ja`: Japanese (日文)
- `fr`: French (法文)
- `de`: German (德文)
- `es`: Spanish (西班牙文)
## 输出示例
```json
{
"total_contents": 5,
"target_languages": ["en", "ja"],
"results": {
"content-uuid-1": {
"en": {
"success": true,
"quality_score": 0.9,
"title_preview": "Translated title preview..."
},
"ja": {
"success": true,
"quality_score": 0.85,
"title_preview": "翻訳されたタイトルのプレビュー..."
}
}
},
"summary": {
"successful": 8,
"failed": 2,
"skipped": 0
}
}
```
## 注意事项
1. **API 限制**: 脚本会在每次翻译请求之间添加1秒延迟避免触发API限制
2. **避免重复**: 自动检查是否已存在翻译,避免重复翻译
3. **错误处理**: 包含完整的错误处理和日志记录
4. **质量评估**: 提供基于长度比例的简单质量评分
## 扩展功能
如果需要更多功能,可以考虑:
- 添加更多翻译提供商OpenAI、Google Translate等
- 实现更复杂的质量评估算法
- 添加人工审核工作流
- 支持增量翻译(定时任务)
- 添加翻译缓存机制
## 故障排除
### 常见错误
1. **连接错误**: 检查 Supabase URL 和 API Key 是否正确
2. **权限错误**: 确保 Supabase API Key 有读写权限
3. **翻译失败**: 检查 RageFlow API Key 和网络连接
4. **数据库错误**: 确保表结构正确且存在
### 调试模式
将日志级别设置为 DEBUG
```python
logging.basicConfig(level=logging.DEBUG)
```