A8多套打包+M4归档+R5多图:存量功能备份
A8 多套交付包(packaging_task.py): - 修复交付包只打第1条混乱note的bug,按ImageCandidate.strategy分A/B/C组 - 每组生独立note_0N夹(6图+文案.txt),同seq留最新去重,老数据兼容 - task74端到端验:3套各6图,独立agent7项交叉验证全过 M4 归档(tasks.py/exports.py/前端): - list_tasks加date_from/date_to/product_id筛选+product_name批量填(防N+1) - 新增exports.py:产品JSON导出+标杆CSV导出(UTF-8 BOM) - 前端HistoryFilters日期/产品筛选+产品列+打回原因红banner - response.py加raise_param_error;独立agent验A1/A2/A9通过 R5 产品多图(product_images.py/020迁移/前端): - product_images表+5端点(上传/列/改场景/设主图/删图) - 生图按ROLE_SCENE_PREFERENCE选对应场景图,回落primary - 前端ProductImageManager多图画廊 R6 账号config拆页(settings/): - 配置页按角色拆/settings(运营+组长+admin)+/config(仅admin) - Key只显末4位不显余额(守红线) 核销表对齐真实代码状态:D1改稿框/M7裂变/E12评图分纠偏为已完成(曾漏回写) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,30 +1,26 @@
|
||||
'use client';
|
||||
/**
|
||||
* 屏1 配置台(管理员 /config)
|
||||
* 产品库 / 标杆笔记 / 违禁词 / API Key 录入
|
||||
* 🔴 红线:key 只录不显余额(不做 Token 用量展示)
|
||||
* 系统管理 /config(仅管理员)
|
||||
* 标杆笔记 / 违禁词库 —— 平台级配置,写操作后端锁 admin
|
||||
* 拆分自原 /config(B方案):运营日常用的 API Key/产品档案已移到 /settings「工作配置」
|
||||
*/
|
||||
import { useState } from 'react';
|
||||
import { ProductsTab } from '@/components/config/ProductsTab';
|
||||
import { BenchmarksTab } from '@/components/config/BenchmarksTab';
|
||||
import { BannedWordsTab } from '@/components/config/BannedWordsTab';
|
||||
import { ApiKeysTab } from '@/components/config/ApiKeysTab';
|
||||
|
||||
type TabKey = 'products' | 'benchmarks' | 'banned_words' | 'api_keys';
|
||||
type TabKey = 'benchmarks' | 'banned_words';
|
||||
|
||||
const TABS: { key: TabKey; label: string }[] = [
|
||||
{ key: 'products', label: '产品档案' },
|
||||
{ key: 'benchmarks', label: '标杆笔记' },
|
||||
{ key: 'banned_words', label: '违禁词库' },
|
||||
{ key: 'api_keys', label: 'API Key' },
|
||||
];
|
||||
|
||||
export default function ConfigPage() {
|
||||
const [activeTab, setActiveTab] = useState<TabKey>('products');
|
||||
const [activeTab, setActiveTab] = useState<TabKey>('benchmarks');
|
||||
|
||||
return (
|
||||
<div className="p-6 max-w-5xl">
|
||||
<h2 className="text-xl font-bold text-text-primary mb-6">配置台</h2>
|
||||
<h2 className="text-xl font-bold text-text-primary mb-6">系统管理</h2>
|
||||
|
||||
{/* Tab 导航 */}
|
||||
<div className="flex gap-1 border-b border-border-default mb-6" role="tablist">
|
||||
@@ -48,10 +44,8 @@ export default function ConfigPage() {
|
||||
|
||||
{/* Tab 内容 */}
|
||||
<div id={`panel-${activeTab}`} role="tabpanel">
|
||||
{activeTab === 'products' && <ProductsTab />}
|
||||
{activeTab === 'benchmarks' && <BenchmarksTab />}
|
||||
{activeTab === 'banned_words' && <BannedWordsTab />}
|
||||
{activeTab === 'api_keys' && <ApiKeysTab />}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user