feat(storage): 统一二进制对象存储与公开错误
新增 Aliyun OSS 与 S3 协议、通道内重试和按优先级跨通道切换,保留 server-main 兼容与环境 OSS 内存通道。 将请求及结果中的 Base64、Data URI、Buffer、multipart 和内联二进制统一对象化,生产路径不再写入本机静态目录,历史本地资源仅保留只读兼容。 引入 PublicErrorV1 并统一 API、异步查询、兼容协议和失败回调的安全错误输出,同时补充迁移、管理端、指标、OpenAPI 与本地模拟验收。 验证:go test ./... -count=1;go vet ./...;pnpm lint;pnpm test;pnpm build;pnpm openapi;tests/ci/migrations-test.sh。
This commit is contained in:
@@ -111,6 +111,7 @@ import {
|
||||
updateClientCustomizationSettings,
|
||||
updateFileStorageChannel,
|
||||
updateFileStorageSettings,
|
||||
testFileStorageChannel,
|
||||
updateGatewayUser,
|
||||
updatePlatform,
|
||||
updatePlatformDynamicPriority,
|
||||
@@ -1182,6 +1183,22 @@ export function App() {
|
||||
}
|
||||
}
|
||||
|
||||
async function verifyFileStorageChannel(channelId: string) {
|
||||
setCoreState('loading');
|
||||
setCoreMessage('');
|
||||
try {
|
||||
const result = await testFileStorageChannel(token, channelId);
|
||||
const refreshed = await listFileStorageChannels(token);
|
||||
setFileStorageChannels(refreshed.items);
|
||||
setCoreState('ready');
|
||||
setCoreMessage(`对象存储连接测试通过,Put / Head / Delete 均成功,耗时 ${result.durationMs}ms。`);
|
||||
} catch (err) {
|
||||
setCoreState('error');
|
||||
setCoreMessage(err instanceof Error ? err.message : '对象存储连接测试失败');
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
|
||||
async function saveClientCustomizationSettings(input: ClientCustomizationSettingsUpdateRequest) {
|
||||
setCoreState('loading');
|
||||
setCoreMessage('');
|
||||
@@ -1614,6 +1631,7 @@ export function App() {
|
||||
onSaveAccessRule={saveAccessRule}
|
||||
onSaveFileStorageChannel={saveFileStorageChannel}
|
||||
onSaveFileStorageSettings={saveFileStorageSettings}
|
||||
onTestFileStorageChannel={verifyFileStorageChannel}
|
||||
onSaveClientCustomizationSettings={saveClientCustomizationSettings}
|
||||
onConnectSecurityEvents={connectSecurityEvents}
|
||||
onDisconnectSecurityEvents={disconnectSecurityEvents}
|
||||
|
||||
Reference in New Issue
Block a user