Files
akmon/NEW_CONFIG_INTEGRATION_GUIDE.md
2026-01-20 08:04:15 +08:00

178 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 新配置系统集成指南
## 数据库结构
### 主表+翻译表设计
```sql
-- 主配置表
ak_global_config (
id UUID PRIMARY KEY,
config_key VARCHAR(100) UNIQUE,
config_type VARCHAR(50),
config_category VARCHAR(50),
default_value TEXT,
is_translatable BOOLEAN,
is_active BOOLEAN,
sort_order INTEGER
)
-- 翻译表
ak_global_config_translations (
id UUID PRIMARY KEY,
config_id UUID REFERENCES ak_global_config(id),
language_code VARCHAR(10),
translated_value TEXT NOT NULL,
is_active BOOLEAN
)
-- 语言表(保留现有)
ak_languages (
id UUID PRIMARY KEY,
code VARCHAR(10) UNIQUE,
name VARCHAR(100),
native_name VARCHAR(100),
is_active BOOLEAN
)
```
## 前端集成
### 1. 数据获取方式(优先级顺序)
#### 方式1使用优化函数推荐
```typescript
const result = await supa.rpc('get_configs_by_language', {
p_language_code: 'zh'
})
```
#### 方式2使用多语言视图
```typescript
const result = await supa
.from('vw_global_config_multilingual')
.select('config_key, config_value, config_type, config_category')
.eq('language_code', 'zh')
.eq('is_active', true)
```
#### 方式3主表+翻译表联查
```typescript
const result = await supa
.from('ak_global_config')
.select(`
config_key,
config_type,
config_category,
default_value,
is_translatable,
ak_global_config_translations!left(
language_code,
translated_value
)
`)
.eq('is_active', true)
```
### 2. 语言代码映射
```typescript
const getStandardLanguageCode = (langCode: string): string => {
switch (langCode) {
case 'en':
case 'en-US':
return 'en'
case 'zh-TW':
return 'tw'
case 'ja':
case 'ja-JP':
return 'ja'
case 'zh-CN':
case 'zh':
default:
return 'zh'
}
}
```
### 3. 配置使用
#### 公司基本信息
- `company_name` - 公司名称(多语言)
- `company_slogan` - 公司标语(多语言)
- `company_address` - 公司地址(多语言)
- `company_phone` - 联系电话(无多语言)
- `company_email` - 邮箱(无多语言)
- `company_icp` - ICP备案无多语言
- `company_logo_url` - LOGO链接无多语言
#### 社交媒体链接
- `social_wechat_url` - 微信链接
- `social_weibo_url` - 微博链接
- `social_qq_url` - QQ链接
- `social_linkedin_url` - LinkedIn链接
- `social_twitter_url` - Twitter链接
#### 热门搜索关键词
- `hot_search_1` - 关键词1多语言
- `hot_search_2` - 关键词2多语言
- `hot_search_3` - 关键词3多语言
- `hot_search_4` - 关键词4多语言
- `hot_search_5` - 关键词5多语言
## 部署步骤
1. **数据库初始化**
```sql
-- 执行 improved_global_config_with_translation.sql
```
2. **清理旧表**(可选)
```sql
-- 执行 force_cleanup_new_tables.sql
```
3. **前端更新**
- 新的数据获取逻辑已集成到 `comindex.uvue`
- 支持自动降级到不同查询方式
- 包含完整的错误处理和默认配置
## 优势
### 数据库层面
- ✅ 结构清晰:主表+翻译表分离
- ✅ 性能优化:索引和视图支持
- ✅ 扩展性强:易于添加新语言和配置项
- ✅ 数据完整性:外键约束和触发器
### 前端层面
- ✅ 智能降级:多种查询方式自动切换
- ✅ 语言支持:完整的多语言代码映射
- ✅ 错误处理:完善的错误处理和默认配置
- ✅ 调试支持:开发环境调试面板
### 维护层面
- ✅ 易于管理:分类和排序支持
- ✅ 灵活配置:可翻译字段标识
- ✅ 版本控制:创建和更新时间记录
- ✅ 数据安全RLS和权限控制
## 调试功能
### 开发环境调试面板
- 显示当前配置状态
- 测试多语言切换
- 验证数据库查询
- 配置值实时查看
### 控制台日志
- 详细的加载过程日志
- 错误信息和回退逻辑
- 配置更新状态追踪
## 注意事项
1. **语言代码一致性**:确保前端和数据库使用相同的语言代码格式
2. **默认配置**:始终提供默认配置作为最后的回退方案
3. **性能考虑**:语言切换时重新加载配置,避免缓存问题
4. **错误处理**:每个查询都有完整的错误处理机制