diff --git a/CLAUDE.md b/CLAUDE.md
index ed8f95f..e78617c 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -124,8 +124,8 @@ docker restart youyidian-3d-material
### MinIO/S3 存储配置
**MinIO 服务器 (192.168.58.20:9000):**
-- 访问密钥:`GXPAccessKey2025`
-- 秘密密钥:`GXPSecretKey2025SecureMinIO`
+- 访问密钥:由服务器环境变量 `S3_ACCESS_KEY_ID` 提供
+- 秘密密钥:由服务器环境变量 `S3_SECRET_ACCESS_KEY` 提供
- 存储桶:`gongxiangpan`
- 文件路径:`由壹点AI/`
diff --git a/app/admin/api-keys/page.tsx b/app/admin/api-keys/page.tsx
index 8aeeb01..9c9d24c 100644
--- a/app/admin/api-keys/page.tsx
+++ b/app/admin/api-keys/page.tsx
@@ -163,7 +163,7 @@ export default function ApiKeysPage() {
{apiKeys.map((key) => (
| {key.name} |
- {key.key.substring(0, 16)}... |
+ {key.key} |
{key.isActive ? '启用' : '禁用'}
diff --git a/app/admin/page.tsx b/app/admin/page.tsx
index 236d1be..2799be1 100644
--- a/app/admin/page.tsx
+++ b/app/admin/page.tsx
@@ -157,18 +157,15 @@ export default function AdminPage() {
}, [])
const fetchDepartments = useCallback(async () => {
- try {
- // 阶段三:获取包含层级关系的部门数据
- const response = await fetch('/api/departments?includeHierarchy=true')
- if (response.ok) {
- const data = await response.json()
- setDepartments(data)
- // 默认所有部门收起
- setCollapsedDepartments(new Set(data.map((d: Department) => d.id)))
- }
- } catch (error) {
- console.error('Error fetching departments:', error)
+ // 阶段三:获取包含层级关系的部门数据
+ const response = await fetch('/api/departments?includeHierarchy=true')
+ if (!response.ok) {
+ throw new Error('部门数据加载失败')
}
+ const data = await response.json()
+ setDepartments(data)
+ // 默认所有部门收起
+ setCollapsedDepartments(new Set(data.map((d: Department) => d.id)))
}, [])
const fetchData = useCallback(async () => {
@@ -185,25 +182,23 @@ export default function AdminPage() {
? `/api/materials?page=1&pageSize=${materialsPageSize}&deleted=true`
: `/api/materials?page=1&pageSize=${materialsPageSize}`
const response = await fetch(url)
- if (response.ok) {
- const data = await response.json()
- const materialsData = data.materials || data
- setMaterials(materialsData)
- setDisplayedMaterialsCount(materialsData.length)
- setCurrentMaterialsPage(1)
- setHasMoreMaterials(materialsData.length >= materialsPageSize)
- // 保存总数(用于显示)
- if (data.totalCount !== undefined) {
- setTotalMaterialsCount(data.totalCount)
- }
+ if (!response.ok) throw new Error('素材数据加载失败')
+ const data = await response.json()
+ const materialsData = data.materials || data
+ setMaterials(materialsData)
+ setDisplayedMaterialsCount(materialsData.length)
+ setCurrentMaterialsPage(1)
+ setHasMoreMaterials(materialsData.length >= materialsPageSize)
+ // 保存总数(用于显示)
+ if (data.totalCount !== undefined) {
+ setTotalMaterialsCount(data.totalCount)
}
} else if (activeTab === 'users') {
const response = await fetch('/api/admin/users')
- if (response.ok) {
- const data = await response.json()
- setUsers(data)
- }
- fetchDepartments()
+ if (!response.ok) throw new Error('用户数据加载失败')
+ const data = await response.json()
+ setUsers(data)
+ await fetchDepartments()
} else if (activeTab === 'categories') {
const [categoriesRes, scenesRes, platformsRes, productCategoriesRes] = await Promise.all([
fetch('/api/categories'),
@@ -211,19 +206,23 @@ export default function AdminPage() {
fetch('/api/platforms'),
fetch('/api/product-categories')
])
- if (categoriesRes.ok) setCategories(await categoriesRes.json())
- if (scenesRes.ok) setScenes(await scenesRes.json())
- if (platformsRes.ok) setPlatforms(await platformsRes.json())
- if (productCategoriesRes.ok) setProductCategories(await productCategoriesRes.json())
+ if (!categoriesRes.ok || !scenesRes.ok || !platformsRes.ok || !productCategoriesRes.ok) {
+ throw new Error('分类数据加载失败')
+ }
+ setCategories(await categoriesRes.json())
+ setScenes(await scenesRes.json())
+ setPlatforms(await platformsRes.json())
+ setProductCategories(await productCategoriesRes.json())
} else if (activeTab === 'departments' || activeTab === 'permissions') {
- fetchDepartments()
+ await fetchDepartments()
}
} catch (error) {
console.error('Error fetching data:', error)
+ showToast(error instanceof Error ? error.message : '数据加载失败', 'error')
} finally {
setLoading(false)
}
- }, [activeTab, canManageSystemTabs, fetchDepartments, showRecycleBin])
+ }, [activeTab, canManageSystemTabs, fetchDepartments, showRecycleBin, showToast])
// 权限检查
useEffect(() => {
@@ -370,7 +369,7 @@ export default function AdminPage() {
{/* Tabs */}
-
+
|