Files
AIclinicalresearch/docs/00-系统总体设计/03-数据库架构说明.md
HaHafeng 1b53ab9d52 feat(aia): Complete AIA V2.0 with universal streaming capabilities
Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
2026-01-14 19:15:01 +08:00

11 KiB
Raw Blame History

<EFBFBD>唳旿摨𤘪沲<EFBFBD><EFBFBD><EFBFBD>?

*<EFBFBD>𥕦遣<EFBFBD><EFBFBD>嚗? 2025-11-06
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?<><E79E89><EFBFBD>唳旿摨㯄<E691A8>蝵脫䲮撘誩<E69298><E8AAA9><EFBFBD>


<EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><E79E89>

<EFBFBD>?<3F><EFBFBD><E586BD>芸楛<E88AB8><EFBFBD><E7A589><EFBFBD>ostgreSQL<51>唳旿摨橒<E691A8>

*<EFBFBD>喲睸鈭见<EFBFBD>嚗?

  1. <EFBFBD>?PostgreSQL<51><EFBFBD><EFBFBD>Docker<65>函蔡<E587BD><E894A1><EFBFBD>docker-compose.yml嚗?
  2. <EFBFBD>?餈蹱糓<E8B9B1>券★<E588B8><EFBFBD><E6A183><EFBFBD><E7A589>唳旿摨橒<E691A8>銝齿糓Dify<66>?
  3. <EFBFBD>?Dify<66>㕑䌊撌勗<E6928C><E58B97>函𡠺蝡讠<E89DA1><E8AEA0>唳旿摨橒<E691A8><E6A992>灼dify/docker/`<60><EFBFBD>銝页<E98A9D>
  4. <EFBFBD>?<3F><EFBFBD><E585B6><EFBFBD><EFBFBD><E996AC><EFBFBD><EFBFBD><EFBFBD>ostgreSQL嚗㷉ocker隡朞䌊<E69C9E><EFBFBD>撱?

<EFBFBD>閦 Docker<65>函蔡霂行<E99C82>

docker-compose.yml<6D>滨蔭

# 雿滨蔭嚗鋫Iclinicalresearch/docker-compose.yml

services:
  # PostgreSQL <20>唳旿摨?
  postgres:
    image: postgres:15-alpine        # 雿輻鍂摰䀹䲮PostgreSQL<51>𨅯<EFBFBD>
    container_name: ai-clinical-postgres
    environment:
      POSTGRES_DB: ai_clinical_research    # <20>唳旿摨枏<E691A8>
      POSTGRES_USER: postgres              # <20><EFBFBD><E586BD>?
      POSTGRES_PASSWORD: postgres123       # 撖<><E69296>
    ports:
      - "5432:5432"                        # 蝡臬藁<E887AC><EFBFBD>
    volumes:
      - postgres_data:/var/lib/postgresql/data  # <20>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>?
    networks:
      - ai-clinical-network
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5

  # Redis 蝻枏<E89DBB>
  redis:
    image: redis:7-alpine
    container_name: ai-clinical-redis
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    networks:
      - ai-clinical-network

volumes:
  postgres_data:    # PostgreSQL<51>唳旿<E594B3><EFBFBD><E79880>唳旿<E594B3><E697BF><EFBFBD><EFBFBD><EFBFBD><E7A18B><EFBFBD>
  redis_data:       # Redis<69>唳旿<E594B3>?

<EFBFBD><EFBFBD> <20>臬𢆡瘚<F0A286A1><E7989A>

<EFBFBD><EFBFBD>桀鍳<EFBFBD><EFBFBD><EFBFBD>穿<EFBFBD><EFBFBD><EFBFBD>桀鍳<EFBFBD>?bat嚗?

[甇仿炊2/7] <20>臬𢆡PostgreSQL<51>朙edis摰孵膥
docker-compose up -d

餈嗘葵<E59798>賭誘隡𡄯<E99AA1>
1. <20>芸𢆡銝贝蝸PostgreSQL 15<31>𨅯<EFBFBD><EFBFBD><E59A97><EFBFBD>𨀣𧋦<F0A880A3>唳瓷<E594B3><EFBFBD>
2. <20>𥕦遣PostgreSQL摰孵膥
3. <20>𥕦遣Redis摰孵膥
4. <20>𥕦遣<F0A595A6>唳旿<E594B3><EFBFBD>postgres_data嚗厩鍂鈭擧<E988AD><EFBFBD><E98A8B>摮睃<E691AE>
5. <20>臬𢆡摰孵膥撟嗅銁<E59785>𤾸蝱餈鞱<E9A488>

*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ostgreSQL嚗?

  • <EFBFBD>?Docker隡朞䌊<E69C9E><EFBFBD>撱箏<E692B1>蝞∠<E89D9E>
  • <EFBFBD>?<3F>唳旿摮睃<E691AE><E79D83>求ocker<65>唳旿<E594B3>瑚葉嚗䔶<E59A97>隡帋腺憭?
  • <EFBFBD>?<3F>臭誑<E887AD><EFBFBD>localhost:5432餈墧𦻖

<EFBFBD><EFBFBD>儭?<3F>唳旿摨栞<E691A8><E6A09E>乩縑<E4B9A9>?

餈墧𦻖<EFBFBD>滨蔭

<EFBFBD>唳旿摨栞<EFBFBD><EFBFBD><EFBFBD>蝚虫葡嚗㇄ATABASE_URL嚗㚁<EFBFBD>

postgresql://postgres:postgres123@localhost:5432/ai_clinical_research

*<EFBFBD><EFBFBD>圾嚗?

  • *<EFBFBD>讛悅嚗? postgresql://
  • <EFBFBD><EFBFBD><EFBFBD><EFBFBD> postgres
  • *<EFBFBD><EFBFBD>嚗? postgres123
  • *銝餅㦤嚗? localhost嚗㇄ocker<65><EFBFBD><E683A9>唳𧋦<E594B3><EFBFBD>
  • *蝡臬藁嚗? 5432
  • *<EFBFBD>唳旿摨枏<EFBFBD>嚗? ai_clinical_research

<EFBFBD>𡒊垢<EFBFBD>滨蔭嚗Ê̄ackend/.env嚗?

# <20>唳旿摨栞<E691A8><E6A09E>?
DATABASE_URL=postgresql://postgres:postgres123@localhost:5432/ai_clinical_research

# 餈嗘葵餈墧𦻖<E5A2A7><F0A6BB96><EFBFBD>刻䌊撌梁<E6928C>PostgreSQL嚗䔶<E59A97><E494B6>浴ify<66><79><EFBFBD>

<EFBFBD><EFBFBD> 銝支葵<E694AF><EFBFBD><E7A589><EFBFBD><EFBFBD><EFBFBD>蝟餌<E89D9F>

蝟餌<EFBFBD>撖寞<EFBFBD>

憿寧𤌍 <EFBFBD><EFBFBD><EFBFBD>唳旿摨? Dify<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
雿滨蔭 AIclinicalresearch/docker-compose.yml dify/docker/docker-compose.yml
*摰孵膥<EFBFBD>? ai-clinical-postgres dify-db<EFBFBD><EFBFBD>瘚页<EFBFBD>
蝡臬藁 5432 <EFBFBD><EFBFBD><EFBFBD>畔5433`<60><EFBFBD><E7A2B6>湧蠧
<EFBFBD>唳旿摨枏<EFBFBD> ai_clinical_research dify
*<EFBFBD><EFBFBD>? 摮睃<EFBFBD><EFBFBD>券★<EFBFBD><EFBFBD>銝𡁜𦛚<EFBFBD>唳旿 摮睃<EFBFBD>Dify<EFBFBD><EFBFBD><EFBFBD>?
霈輸䔮<EFBFBD><EFBFBD> <EFBFBD>湔𦻖Prisma霈輸䔮 <EFBFBD><EFBFBD>Dify API霈輸䔮

<EFBFBD><EFBFBD><EFBFBD>?

<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
<0A>?                 AIclinicalresearch憿寧𤌍                   <20>?
<0A>?                                                          <20>?
<0A>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?     <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?               <20>?
<0A>? <20>?  Backend    <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? PostgreSQL  <20>?               <20>?
<0A>? <20>? (Node.js)   <20>?SQL  <20>?  (Docker)   <20>?               <20>?
<0A>? <20>?             <20>?     <20>?             <20>?               <20>?
<0A>? <20>?  Prisma     <20>?     <20>?Port: 5432   <20>?               <20>?
<0A>? <20><EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?     <20><EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?               <20>?
<0A>?        <20>?                                               <20>?
<0A>?        <20>?HTTP API                                       <20>?
<0A>?        <20>?                                               <20>?
<0A>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?                                      <20>?
<0A>? <20>?   Dify      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>> Dify<66>芸楛<E88AB8><E6A59B>ostgreSQL           <20>?
<0A>? <20>?  (Docker)   <20>?       (摰<><E691B0><EFBFBD><EFBFBD>)                      <20>?
<0A>? <20><EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?                                      <20>?
<0A>?                                                          <20>?
<0A><EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?

<EFBFBD><EFBFBD> 敶枏<E695B6><E69E8F>唳旿摨栞”蝏𤘪<E89D8F>

<EFBFBD><EFBFBD>PostgreSQL銝剔<EFBFBD>銵?

-- <20><EFBFBD>嚗颹ackend/prisma/schema.prisma

-- <20><EFBFBD><E79285>
users                   -- <20><EFBFBD>銵?

-- 憿寧𤌍璅<E79285>
projects                -- 憿寧𤌍銵?

-- AI<41><EFBFBD><E79285>
conversations           -- 撖寡<E69296>銵?
messages                -- 瘨<><E798A8>銵?
general_conversations   -- <20>𡁶鍂撖寡<E69296>銵?
general_messages        -- <20>𡁶鍂瘨<E98D82><E798A8>銵?

-- <20><EFBFBD>摨𤘪芋<F0A498AA>?
knowledge_bases         -- <20><EFBFBD>摨栞”
documents               -- <20><>﹝銵?

-- <20><EFBFBD><E5ADB5><EFBFBD><EFBFBD><EFBFBD>Phase 3嚗?
batch_tasks             -- <20><EFBFBD><E5ADB5><EFBFBD><EFBFBD>∟”
batch_results           -- <20><EFBFBD><E5ADB5><EFBFBD><EFBFBD><EFBFBD>𡏭”
task_templates          -- 隞餃𦛚璅⊥踎銵?

-- 蝔蹂辣摰⊥䰻璅<E79285>
review_tasks            -- 蝔蹂辣摰⊥䰻隞餃𦛚銵?

-- 餈鞱𨯫蝞∠<E89D9E><E79285>
admin_logs              -- 蝞∠<E89D9E><E288A0>䀹𠯫敹𡑒”

*<EFBFBD>餉恣嚗?6撘㰘”嚗<E2809D><E59A97><EFBFBD>典銁<E585B8>刻䌊撌梁<E6928C>PostgreSQL銝准<E98A9D>?


<EFBFBD>圲 撣貊鍂<E8B28A><EFBFBD>

<EFBFBD><EFBFBD>Docker摰孵膥<EFBFBD><EFBFBD>?

# <20><EFBFBD><E4BAA6><EFBFBD><EFBFBD>匧捆<E58CA7>?
docker ps

# 摨磰砲<E7A3B0><EFBFBD><E8B39C><EFBFBD>
# ai-clinical-postgres    (PostgreSQL)
# ai-clinical-redis       (Redis)

餈墧𦻖<EFBFBD>訐ostgreSQL

<EFBFBD><EFBFBD>1嚗帋蝙<EFBFBD>求ocker<EFBFBD>賭誘

# 餈𥕦<E9A488>PostgreSQL摰孵膥
docker exec -it ai-clinical-postgres psql -U postgres -d ai_clinical_research

# <20><EFBFBD><E59785>臭誑<E887AD><EFBFBD>SQL嚗?
\dt          # <20><EFBFBD><E4BAA6><EFBFBD><EFBFBD>㕑”
\d users     # <20><EFBFBD>users銵函<E98AB5><E587BD>?
SELECT * FROM users LIMIT 10;

*<EFBFBD><EFBFBD>2嚗帋蝙<EFBFBD>冽㺭<EFBFBD><EFBFBD><EFBFBD>蝡?

  • DBeaver / pgAdmin / DataGrip / Navicat
  • 餈墧𦻖靽⊥<EFBFBD>嚗?
    • Host: localhost
    • Port: 5432
    • Database: ai_clinical_research
    • User: postgres
    • Password: postgres123

<EFBFBD>𨀣迫<EFBFBD><EFBFBD><EFBFBD>冽㺭<EFBFBD><EFBFBD>

# <20>𨀣迫嚗<E8BFAB><E59A97>銝滚<E98A9D><E6BB9A>斗㺭<E69697><EFBFBD>
docker-compose down

# <20>臬𢆡
docker-compose up -d

# <20>滚鍳
docker-compose restart postgres

<EFBFBD><EFBFBD><EFBFBD>唳旿摨𤘪𠯫敹?

# <20><EFBFBD>PostgreSQL<51><EFBFBD>
docker logs ai-clinical-postgres

# 摰墧𧒄<E5A2A7><EFBFBD><E4BAA6><EFBFBD>
docker logs -f ai-clinical-postgres

<EFBFBD>𠒣 <20>唳旿<E594B3><E697BF><EFBFBD><EFBFBD>?

<EFBFBD>唳旿摮睃<EFBFBD>雿滨蔭

<EFBFBD>唳旿<EFBFBD><EFBFBD>Volume嚗㚁<EFBFBD>

postgres_data:/var/lib/postgresql/data

*摰鮋<EFBFBD>摮睃<EFBFBD>雿滨蔭嚗?

  • Windows: C:\ProgramData\Docker\volumes\aiclinicalresearch_postgres_data\_data
  • Mac/Linux: /var/lib/docker/volumes/aiclinicalresearch_postgres_data/_data

*<EFBFBD><EFBFBD>嚗?

  • <EFBFBD>?<3F>喃蝙<E59683>𣳇膄摰孵膥嚗Ǒdocker-compose down`嚗㚁<E59A97><E39A81>唳旿銝滢<E98A9D>
  • <EFBFBD>?<3F>唳旿摮睃<E691AE><E79D83>求ocker<65>唳旿<E594B3>瑚葉嚗峕<E59A97><EFBFBD><E98A8B>靽嘥<E99DBD>
  • <EFBFBD>𩤃<EFBFBD> <20><EFBFBD><E88AA3><EFBFBD>docker-compose down -v<EFBFBD><EFBFBD><EFBFBD>斗㺭<EFBFBD>桀㭘嚗㗇<EFBFBD>隡𡁏<EFBFBD>蝛箸㺭<EFBFBD>?

<EFBFBD><EFBFBD>唳旿摨?

# 憭<>遢嚗<E981A2><EFBFBD>搴QL嚗?
docker exec ai-clinical-postgres pg_dump -U postgres ai_clinical_research > backup.sql

# <20><EFBFBD><EFBFBD><EFBFBD>兄QL嚗?
docker exec -i ai-clinical-postgres psql -U postgres ai_clinical_research < backup.sql

<EFBFBD><20>芣䔉嚗锭chema<6D>𠉛氖霈<E99C88>

敶枏<EFBFBD><EFBFBD><EFBFBD>?

-- <20><><EFBFBD>㕑”<E39591>賢銁public schema
public.users
public.projects
public.conversations
public.knowledge_bases
public.documents
public.review_tasks
...

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗𠄎chema<EFBFBD>𠉛氖嚗?

-- 撟喳蝱撅<E89DB1>chema
CREATE SCHEMA platform_schema;
platform_schema.users
platform_schema.roles
platform_schema.permissions

-- 銝𡁜𦛚璅<E79285>Schema
CREATE SCHEMA aia_schema;        -- AI<41><EFBFBD><E7AE84><EFBFBD>
aia_schema.projects
aia_schema.conversations
aia_schema.messages

CREATE SCHEMA pkb_schema;        -- 銝芯犖<E88AAF><EFBFBD>摨?
pkb_schema.knowledge_bases
pkb_schema.documents

CREATE SCHEMA asl_schema;        -- AI<41><EFBFBD><E7AE84><EFBFBD>asl_schema.projects
asl_schema.literature_items
asl_schema.screening_results

CREATE SCHEMA review_schema;     -- 蝔蹂辣摰⊥䰻
review_schema.review_tasks
review_schema.review_journals

*摰墧鴌霈<EFBFBD>嚗?

  • *<EFBFBD>嗆挾銝<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗? <20><EFBFBD><E9A489>𠉛氖嚗䔶蝙<E494B6>刻”<E588BB><EFBFBD><EFBFBD>嚗Ǒaia_projects, asl_projects`嚗?
  • <EFBFBD>嗆挾鈭䕘<EFBFBD>敺格<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𧒄嚗㚁<EFBFBD> <20><EFBFBD><E68B8D>𠉛氖嚗<E6B096><E59A97>撱箇<E692B1><EFBFBD><E79487>Schema

<EFBFBD><EFBFBD> Dify<66>唳旿摨橒<E691A8><E6A992><EFBFBD>蝟餌<E89D9F>嚗?

Dify<EFBFBD><EFBFBD><EFBFBD>蝵?

dify/docker/docker-compose.yml
  <20><EFBFBD><E98EBF><EFBFBD> dify-db (PostgreSQL)
  <20><EFBFBD><E98EBF><EFBFBD> dify-redis
  <20><EFBFBD><E98EBF><EFBFBD> dify-web
  <20><EFBFBD><E98EBF><EFBFBD> dify-api
  <20><EFBFBD><E5A999><EFBFBD> ...

<EFBFBD>喲睸<EFBFBD><EFBFBD>

  • <EFBFBD>?Dify<66>㕑䌊撌勗<E6928C><E58B97>函𡠺蝡讠<E89DA1>docker-compose.yml
  • <EFBFBD>?Dify<66><79>ostgreSQL<51>舐𡠺蝡讠<E89DA1>摰孵膥
  • <EFBFBD>?<3F><EFBFBD>憿寧𤌍銝滨凒<E6BBA8>亥挪<E4BAA5>唏ify<66><79><EFBFBD><EFBFBD>
  • <EFBFBD>?<3F><EFBFBD>Dify API嚗𠃍TTP REST嚗㕑<E59A97><E39591>求ify<66><EFBFBD>

<EFBFBD><EFBFBD>憿寧𤌍憒<EFBFBD><EFBFBD>雿輻鍂Dify

// 銝齿糓<E9BDBF>湔𦻖霈輸䔮Dify<66>唳旿摨橒<E691A8><E6A992>峕糓<E5B395><EFBFBD>API

// <20>𥕦遣<F0A595A6><EFBFBD>摨?
const response = await fetch('http://localhost/v1/datasets', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${DIFY_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: '<27>𤑳<EFBFBD><F0A491B3><EFBFBD>摨?
  })
});

// 銝𠹺<E98A9D><F0A0B9BA><EFBFBD>const formData = new FormData();
formData.append('file', file);
await fetch(`http://localhost/v1/datasets/${datasetId}/document/create-by-file`, {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${DIFY_API_KEY}`
  },
  body: formData
});

*<EFBFBD><EFBFBD><EFBFBD>唳旿摨㮖葉摮睃<EFBFBD>嚗?

-- knowledge_bases銵?
{
  id: 'uuid',
  name: '<27>𤑳<EFBFBD><F0A491B3><EFBFBD>摨?,
  dify_dataset_id: 'xxx'  -- <20><EFBFBD>Dify<66><79>ataset_id
}

<EFBFBD><20><EFBFBD>

<EFBFBD><EFBFBD><EFBFBD><EFBFBD>

  1. <EFBFBD>?**<2A><EFBFBD><E586BD>芸楛<E88AB8><E6A59B>ostgreSQL<51>唳旿摨?*

    • <EFBFBD><EFBFBD>Docker<EFBFBD>函蔡嚗Ǒdocker-compose.yml`嚗?
    • 摰孵膥<EFBFBD><EFBFBD>ai-clinical-postgres
    • <EFBFBD>唳旿摨枏<EFBFBD>嚗䫤ai_clinical_research`
  2. <EFBFBD>?<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ostgreSQL

    • docker-compose up -d隡朞䌊<EFBFBD><EFBFBD>撱?
    • <EFBFBD>唳旿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>典銁Docker<EFBFBD>唳旿<EFBFBD>瑚葉
  3. <EFBFBD>?Dify<EFBFBD><EFBFBD><EFBFBD>函𡠺蝡讠<EFBFBD>蝟餌<EFBFBD>

    • <EFBFBD>㕑䌊撌梁<EFBFBD>PostgreSQL<EFBFBD>唳旿摨?
    • <EFBFBD><EFBFBD><EFBFBD>Dify API霈輸䔮嚗䔶<E59A97><E494B6>湔𦻖霈輸䔮<E8BCB8>唳旿摨?
  4. <EFBFBD>?*敶枏<EFBFBD>16撘㰘”<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ostgreSQL銝?

    • <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>笆霂腈<EFBFBD><EFBFBD>䰻霂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鸌憭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>阮隞嗅恣<EFBFBD><EFBFBD>
    • <EFBFBD><EFBFBD><EFBFBD>灼public` schema嚗<61>𧊋<EFBFBD>仿<EFBFBD><EFBFBD><E996AC>蝳鳴<E89DB3>

銝箔<EFBFBD><EFBFBD><EFBFBD>銝滩扇敺堒<EFBFBD><EFBFBD>ostgreSQL嚗?

<EFBFBD>牐蛹<EFBFBD>冽覔<EFBFBD>祆瓷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>

  • <EFBFBD>?Docker<65>芸𢆡銝贝蝸<E8B49D>𨅯<EFBFBD>
  • <EFBFBD>?Docker<65>芸𢆡<E88AB8>𥕦遣摰孵膥
  • <EFBFBD>?銝<><E98A9D>桀鍳<E6A180><EFBFBD><E588BB>祈䌊<E7A588>典鍳<E585B8>?
  • <EFBFBD>?<3F>典蘨<E585B8><E898A8><EFBFBD><E996AC>銵䈣銝<E488A3><E98A9D>桀鍳<E6A180>?bat`

餈坔停<EFBFBD>浴ocker<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𨥈<EFBFBD>


*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>甇乩<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>捆嚗?

  1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>憭齿㺭<EFBFBD><EFBFBD>嚗?
  2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD>訕chema<EFBFBD>𠉛氖<EFBFBD><EFBFBD>嚗?
  3. <EFBFBD><EFBFBD>餈墧𦻖<EFBFBD>唳旿摨栞<EFBFBD>銵峕<EFBFBD><EFBFBD>冽䰻霂<EFBFBD>
  4. Prisma憒<EFBFBD><EFBFBD>蝞∠<EFBFBD><EFBFBD>唳旿摨栞<EFBFBD>蝘鳴<EFBFBD>