Files
ttstd-infinite-canvas/web/FRONTEND_FEATURE_TOGGLE.md

197 lines
7.7 KiB
Markdown
Raw 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.
# 前端功能开关维护页面修改说明
## 修改内容
### 1. 类型定义更新
**文件**: `web/src/stores/use-user-store.ts`
在 `FeatureAvailability` 类型中添加了 `frontendModelsEnabled` 字段:
```typescript
export type FeatureAvailability = {
shortDramaEnabled: boolean;
taskCenterEnabled: boolean;
creditsEnabled: boolean;
customChannelsEnabled: boolean;
frontendModelsEnabled: boolean; // 新增
desktopLocalChannelsEnabled: boolean;
configured?: boolean;
updatedBy?: string;
updatedAt?: string;
};
```
默认值设置为 `true`:
```typescript
export const defaultFeatureAvailability: FeatureAvailability = {
shortDramaEnabled: true,
taskCenterEnabled: true,
creditsEnabled: true,
customChannelsEnabled: true,
frontendModelsEnabled: true, // 新增
desktopLocalChannelsEnabled: false,
};
```
### 2. 管理界面更新
**文件**: `web/src/pages/admin/components/feature-availability-panel.tsx`
#### 添加图标导入
```typescript
import { Sparkles } from "lucide-react";
```
#### 扩展 FeatureKey 类型
```typescript
type FeatureKey = "shortDramaEnabled" | "taskCenterEnabled" | "creditsEnabled" | "customChannelsEnabled" | "frontendModelsEnabled";
```
#### 添加功能配置项
在 `featureRows` 数组中添加了新的配置项:
```typescript
{
key: "frontendModelsEnabled",
title: "前台模型目录",
menu: "/admin/models",
description: "开启时使用前台模型虚拟渠道(需配置路由),关闭时使用脱敏的系统渠道模型。管理员的模型配置入口始终保留。",
icon: <Sparkles className="size-4" />
}
```
#### 更新保存函数
在 `save` 函数中添加了对新字段的支持:
```typescript
const result = await updateAdminFeatureAvailability({
shortDramaEnabled: next.shortDramaEnabled,
taskCenterEnabled: next.taskCenterEnabled,
creditsEnabled: next.creditsEnabled,
customChannelsEnabled: next.customChannelsEnabled,
frontendModelsEnabled: next.frontendModelsEnabled, // 新增
});
```
#### 添加切换确认逻辑
在 `toggle` 函数中添加了关闭前台模型时的二次确认:
```typescript
// 前台模型关闭需要二次确认
if (key === "frontendModelsEnabled" && !enabled) {
modal.confirm({
title: "切换到系统渠道模型?",
content: "关闭后,用户将使用脱敏的系统渠道模型目录,任务创建时将禁止 logicalModelId。管理员的前台模型配置入口保持可见。",
okText: "确认切换",
cancelText: "取消",
okButtonProps: { danger: true },
onOk: () => save(key, false),
});
return;
}
```
## 用户界面效果
### 功能开关面板
在"功能开放"页面(`/admin/features`)中,会显示一个新的开关项:
- **图标**: ✨ (Sparkles)
- **标题**: 前台模型目录
- **菜单路径**: /admin/models
- **描述**: 开启时使用前台模型虚拟渠道(需配置路由),关闭时使用脱敏的系统渠道模型。管理员的模型配置入口始终保留。
- **默认状态**: 开启(true)
### 交互流程
1. **开启前台模型**
- 点击开关即可开启
- 用户侧将使用前台模型虚拟渠道
- 任务创建必须提供 `logicalModelId`
2. **关闭前台模型**
- 点击开关会弹出确认对话框
- 确认后切换到系统渠道模型模式
- 用户侧将使用脱敏的系统渠道模型目录
- 任务创建禁止 `logicalModelId`
3. **管理员权限**
- 无论开关状态如何,管理员的 `/admin/models` 入口始终保留
- 管理员可以随时查看和配置前台模型
## 视觉设计
```
┌─────────────────────────────────────────────────────────────────┐
│ 用户功能开放 5/5 已开放 │
├─────────────────────────────────────────────────────────────────┤
│ 🎬 短剧创作 /projects [ON] │
│ 关闭后隐藏短剧入口... │
├─────────────────────────────────────────────────────────────────┤
│ ☑️ 任务 /tasks [ON] │
│ 关闭后仅隐藏并拦截任务中心页面... │
├─────────────────────────────────────────────────────────────────┤
│ 💰 积分中心 /wallet [ON] │
│ 关闭后隐藏用户积分入口... │
├─────────────────────────────────────────────────────────────────┤
│ 📡 自定义渠道 /settings?section... [ON] │
│ 关闭后隐藏用户自定义渠道入口... │
├─────────────────────────────────────────────────────────────────┤
│ ✨ 前台模型目录 /admin/models [ON] │
│ 开启时使用前台模型虚拟渠道(需配置路由), │
│ 关闭时使用脱敏的系统渠道模型... │
└─────────────────────────────────────────────────────────────────┘
```
## 后端 API 适配
后端 API 已经支持 `frontendModelsEnabled` 字段:
- `GET /api/admin/feature-availability` - 读取配置(包含新字段)
- `PUT /api/admin/feature-availability` - 更新配置(接受新字段)
## 测试建议
1. **开关切换测试**
- 测试开启/关闭前台模型开关
- 验证二次确认对话框是否正常显示
- 验证保存后状态是否正确更新
2. **权限测试**
- 验证只有管理员可以访问此页面
- 验证非管理员无法修改此配置
3. **联动测试**
- 开启前台模型后,验证用户侧模型选择器是否使用前台模型
- 关闭前台模型后,验证用户侧模型选择器是否使用系统渠道模型
- 验证管理员的 `/admin/models` 入口在两种模式下都可访问
4. **数据持久化测试**
- 修改配置后刷新页面,验证配置是否保存
- 验证配置在用户登录时正确加载
## 注意事项
1. **后端同步**: 前端修改依赖后端 API 支持,确保后端已部署相关更新
2. **缓存清理**: 修改后建议清理浏览器缓存以确保类型更新生效
3. **用户影响**: 切换模型模式会影响所有用户的模型选择界面,建议在低峰时段操作
4. **回滚方案**: 如遇问题,可以通过管理界面快速切换回原模式
## 文件清单
### 修改的文件
- `web/src/stores/use-user-store.ts` - 添加类型定义和默认值
- `web/src/pages/admin/components/feature-availability-panel.tsx` - 添加UI和交互逻辑
### 依赖的后端文件
- `internal/service/feature_availability.go` - 后端功能开关服务
---
**修改日期**: 2026-08-22
**影响范围**: 管理员功能开关页面
**用户影响**: 无,仅管理员可见