178 lines
4.2 KiB
Markdown
178 lines
4.2 KiB
Markdown
# 新配置系统集成指南
|
||
|
||
## 数据库结构
|
||
|
||
### 主表+翻译表设计
|
||
```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. **错误处理**:每个查询都有完整的错误处理机制
|