feat: 增强SaaS后端功能与安全性

refactor: 重构数据库连接使用PostgreSQL替代SQLite
feat(auth): 增加JWT验证的audience和issuer检查
feat(crypto): 添加AES-256-GCM字段加密支持
feat(api): 集成utoipa实现OpenAPI文档
fix(admin): 修复配置项表单验证逻辑
style: 统一代码格式与类型定义
docs: 更新技术栈文档说明PostgreSQL
This commit is contained in:
iven
2026-03-31 00:12:53 +08:00
parent 4d8d560d1f
commit 44256a511c
177 changed files with 9731 additions and 948 deletions

View File

@@ -102,8 +102,8 @@ export function ConfigMigrationWizard({ onDone }: { onDone: () => void }) {
if (direction === 'local-to-saas' && localModels.length > 0) {
// Push local models as config items
for (const model of localModels) {
const exists = saasConfigs.some((c) => c.key_path === `models.${model.id}`);
if (exists && !selectedKeys.has(model.id)) continue;
const existingItem = saasConfigs.find((c) => c.key_path === `models.${model.id}`);
if (existingItem && !selectedKeys.has(model.id)) continue;
const body = {
category: 'model',
@@ -114,8 +114,8 @@ export function ConfigMigrationWizard({ onDone }: { onDone: () => void }) {
description: `从桌面端同步: ${model.name}`,
};
if (exists) {
await saasClient.request<unknown>('PUT', `/api/v1/config/items/${exists}`, body);
if (existingItem) {
await saasClient.request<unknown>('PUT', `/api/v1/config/items/${existingItem.id}`, body);
} else {
await saasClient.request<unknown>('POST', '/api/v1/config/items', body);
}