feat(storage): integrate Alibaba Cloud OSS for file persistence - Add OSSAdapter and LocalAdapter with StorageFactory pattern - Integrate PKB module with OSS upload - Rename difyDocumentId to storageKey - Create 4 OSS buckets and development specification

This commit is contained in:
2026-01-22 22:02:20 +08:00
parent 483c62fb6f
commit 9c96f75c52
309 changed files with 4583 additions and 172 deletions

View File

@@ -304,3 +304,6 @@ Level 3: 兜底Prompt缓存也失效

View File

@@ -490,3 +490,6 @@ const pageSize = Number(query.pageSize) || 20;

View File

@@ -224,3 +224,6 @@ ADMIN-运营管理端/

View File

@@ -323,3 +323,6 @@ INST-机构管理端/

View File

@@ -890,3 +890,6 @@ export interface SlashCommand {

View File

@@ -195,3 +195,6 @@ export type AgentStage = 'topic' | 'design' | 'review' | 'data' | 'writing';

View File

@@ -1300,6 +1300,9 @@ interface FulltextScreeningResult {

View File

@@ -414,6 +414,9 @@ GET /api/v1/asl/fulltext-screening/tasks/:taskId/export

View File

@@ -516,6 +516,9 @@ Failed to open file '\\tmp\\extraction_service\\temp_10000_test.pdf'

View File

@@ -582,6 +582,9 @@ df['creatinine'] = pd.to_numeric(df['creatinine'], errors='coerce')

View File

@@ -997,6 +997,9 @@ export const aiController = new AIController();

View File

@@ -1331,6 +1331,9 @@ npm install react-markdown

View File

@@ -239,6 +239,9 @@ FMA___基线 | FMA___1个月 | FMA___2个月

View File

@@ -397,6 +397,9 @@ formula = "FMA总分0-100 / 100"

View File

@@ -231,6 +231,9 @@ async handleFillnaMice(request, reply) {

View File

@@ -203,6 +203,9 @@ method: 'mean' | 'median' | 'mode' | 'constant' | 'ffill' | 'bfill'

View File

@@ -654,6 +654,9 @@ import { logger } from '../../../../common/logging/index.js';

View File

@@ -457,6 +457,9 @@ import { ChatContainer } from '@/shared/components/Chat';

View File

@@ -367,6 +367,9 @@ const initialMessages = defaultMessages.length > 0 ? defaultMessages : [{

View File

@@ -655,6 +655,9 @@ http://localhost:5173/data-cleaning/tool-c

View File

@@ -443,6 +443,9 @@ Docs: docs/03-业务模块/DC-数据清洗整理/06-开发记录/DC模块重建

View File

@@ -316,6 +316,9 @@ ConflictDetectionService // 冲突检测(字段级对比)

View File

@@ -480,6 +480,9 @@ Tool B后端代码**100%复用**了平台通用能力层,无任何重复开发

View File

@@ -257,6 +257,9 @@ $ node scripts/check-dc-tables.mjs

View File

@@ -490,6 +490,9 @@ ${fields.map((f, i) => `${i + 1}. ${f.name}${f.desc}`).join('\n')}

View File

@@ -695,6 +695,9 @@ private async processMessageAsync(xmlData: any) {

View File

@@ -1089,6 +1089,9 @@ async function testIntegration() {

View File

@@ -230,6 +230,9 @@ Content-Type: application/json

View File

@@ -650,6 +650,9 @@ REDCap API: exportRecords success { recordCount: 1 }

View File

@@ -656,6 +656,9 @@ backend/src/modules/iit-manager/

View File

@@ -806,6 +806,9 @@ CREATE TABLE iit_schema.wechat_tokens (

View File

@@ -563,6 +563,9 @@ Day 3 的开发工作虽然遇到了多个技术问题,但最终成功完成

View File

@@ -330,6 +330,9 @@ AI: "出生日期2017-01-04

View File

@@ -274,6 +274,9 @@ Day 4: REDCap EMWebhook推送← 作为增强,而非核心

View File

@@ -688,6 +688,9 @@ const answer = `根据研究方案[1]和CRF表格[2],纳入标准包括:

View File

@@ -449,3 +449,6 @@ export const calculateAvailableQuota = async (tenantId: string) => {

View File

@@ -322,3 +322,6 @@ https://platform.example.com/t/pharma-abc/login

View File

@@ -372,3 +372,6 @@ const newResults = resultsData.map((docResult: any) => ({

View File

@@ -778,6 +778,9 @@ docker exec redcap-apache php /tmp/create-redcap-password.php

View File

@@ -160,6 +160,9 @@ AIclinicalresearch/redcap-docker-dev/