mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-27 01:36:30 +02:00
144 lines
4.8 KiB
Markdown
144 lines
4.8 KiB
Markdown
|
|
# SurfSense: Sơ đồ chi tiết các Luồng Ẩn (Triển khai Sâu)
|
||
|
|
|
||
|
|
Dựa trên việc kiểm tra sâu cấu trúc database (`db.py`) và kiến trúc API, đây là các Luồng Vi mô (Micro Flows) diễn ra bên dưới bề nổi bổ sung thêm cho 4 luồng cơ bản ban đầu. Đây là các Flow cấu thành sức mạnh hệ sinh thái nền tảng của SurfSense.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. Luồng Đồng bộ Thời gian thực & Local-first (RociCorp Zero)
|
||
|
|
Giao diện của SurfSense đạt được tốc độ phản hồi tính bằng mili-giây (Instant UI) nhờ vào công nghệ Local-first từ Zero.
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
sequenceDiagram
|
||
|
|
participant User as Nguoi Dung
|
||
|
|
participant NextJS as NextJS Client (Z-Store)
|
||
|
|
participant Zero as Zero Cache Server
|
||
|
|
participant Postgres as PostgreSQL DB
|
||
|
|
|
||
|
|
%% Trang thai offline hoac low-latency
|
||
|
|
User->>NextJS: Tao Search Space moi
|
||
|
|
activate NextJS
|
||
|
|
NextJS->>NextJS: Ghi vao IndexedDB (Local)
|
||
|
|
NextJS-->>User: [UI] Cap nhat ngay lap tuc (0 latency)
|
||
|
|
|
||
|
|
%% Dong bo background
|
||
|
|
NextJS->>Zero: Day Mutator (Sync)
|
||
|
|
deactivate NextJS
|
||
|
|
|
||
|
|
activate Zero
|
||
|
|
Zero->>Postgres: Luu thay đoi vao DB trung tam
|
||
|
|
Postgres-->>Zero: Xac nhan luu thanh cong
|
||
|
|
|
||
|
|
%% Nguoi dung khac trong cung Search Space
|
||
|
|
Zero->>NextJS: Ban Replication Subscriptions (Socket)
|
||
|
|
deactivate Zero
|
||
|
|
activate NextJS
|
||
|
|
NextJS->>NextJS: Cap nhat Z-Store cho User B
|
||
|
|
deactivate NextJS
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. Luồng Uỷ quyền và Nuốt Dữ liệu từ App Thứ 3 (Third-Party Connectors)
|
||
|
|
Quy trình nhập liệu từ các nền tảng SaaS (Notion, Google Drive, Jira...) sử dụng Composio và Custom Extractors.
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
sequenceDiagram
|
||
|
|
participant User as Nguoi Dung
|
||
|
|
participant Web as Web UI
|
||
|
|
participant Backend as FastAPI
|
||
|
|
participant Auth as Composio OAuth
|
||
|
|
participant 3rdParty as Notion/Drive/Jira
|
||
|
|
participant Celery as ETL Celery Workers
|
||
|
|
|
||
|
|
User->>Web: Bam ket noi "Notion"
|
||
|
|
Web->>Backend: Yeu cau Authorization URL
|
||
|
|
Backend->>Auth: Tao Phien ung dung (Session)
|
||
|
|
Auth-->>User: Chuyen huong sang trang OAuth cua Notion
|
||
|
|
|
||
|
|
User->>3rdParty: Dong y cap quyen đoc
|
||
|
|
3rdParty-->>Backend: Callback Redirect voi Auth Code
|
||
|
|
activate Backend
|
||
|
|
Backend->>Auth: Đoi Code lay Access Token
|
||
|
|
Auth-->>Backend: Tra ve Token
|
||
|
|
Backend->>Backend: Luu vao Search Space DB
|
||
|
|
deactivate Backend
|
||
|
|
|
||
|
|
%% Kich hoat Ingestion
|
||
|
|
Backend->>Celery: Giao nhiem vu Crawl API (Task)
|
||
|
|
activate Celery
|
||
|
|
Celery->>3rdParty: Pull hang loat Docs / Tickets
|
||
|
|
3rdParty-->>Celery: Tra ve JSON data
|
||
|
|
Celery->>Celery: Convert JSON -> Markdown -> Chunks
|
||
|
|
Celery->>Celery: Luu VectorDB
|
||
|
|
Celery-->>Web: Notification: "Dong bo Notion hoan tat"
|
||
|
|
deactivate Celery
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7. Luồng Giao tiếp Cộng tác & Bình luận (Collaboration / Chat Comments)
|
||
|
|
Mỗi Search Space trong SurfSense là một "Phòng làm việc chung". Các đoạn Chat AI có thể được bình luận, chia sẻ.
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
sequenceDiagram
|
||
|
|
participant UserA as Nguoi Dung A
|
||
|
|
participant Zero as Zero (Realtime)
|
||
|
|
participant DB as Postgres (Chat_Comments)
|
||
|
|
participant UserB as Nguoi Dung B
|
||
|
|
|
||
|
|
UserA->>UserA: Mo đoan chat cua Assistant
|
||
|
|
UserA->>Zero: Them Comment "@UserB cậu xem đoan nay"
|
||
|
|
activate Zero
|
||
|
|
Zero->>DB: Luu Comment vao NewChatMessage
|
||
|
|
|
||
|
|
%% Tinh nang cap nhat tu đong cho UserB
|
||
|
|
DB-->>Zero: State Changed
|
||
|
|
Zero-->>UserB: Trigger Sync (Realtime) tang IndexedDB
|
||
|
|
deactivate Zero
|
||
|
|
|
||
|
|
activate UserB
|
||
|
|
UserB->>UserB: Thay notification Mention tren UI
|
||
|
|
UserB->>Zero: Reply lai Comment
|
||
|
|
deactivate UserB
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 8. Luồng Phát sinh Nội dung Đa phương tiện từ RAG (Podcast / Video)
|
||
|
|
Trình độ tổng hợp kiến thức của SurfSense không dừng ở đoạn text, mà còn mở rộng ra Audio, Podcasts, Video Presentation dựa trên DB Models.
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
sequenceDiagram
|
||
|
|
participant User as Nguoi Dung
|
||
|
|
participant Web as Web UI
|
||
|
|
participant API as FastAPI
|
||
|
|
participant Celery as Celery Tasks
|
||
|
|
participant GenAI as Audio/Video Gen AI
|
||
|
|
participant DB as Postgres
|
||
|
|
|
||
|
|
User->>Web: "Tao Podcast ve chu đe bao cao thang nay"
|
||
|
|
activate Web
|
||
|
|
Web->>API: POST /api/generate-podcast
|
||
|
|
deactivate Web
|
||
|
|
|
||
|
|
activate API
|
||
|
|
API->>DB: Tao ban ghi PodcastStatus = PENDING
|
||
|
|
API->>Celery: Send task `generate_podcast`
|
||
|
|
API-->>Web: Tra ve Job ID
|
||
|
|
deactivate API
|
||
|
|
|
||
|
|
activate Celery
|
||
|
|
Celery->>DB: Update PodcastStatus = GENERATING
|
||
|
|
Celery->>GenAI: Truyen RAG content & Yeu cau sinh giong noi
|
||
|
|
activate GenAI
|
||
|
|
GenAI-->>Celery: Tra ve Stream/File URL (Media)
|
||
|
|
deactivate GenAI
|
||
|
|
|
||
|
|
Celery->>DB: Update PodcastStatus = READY & Luu Media Path
|
||
|
|
deactivate Celery
|
||
|
|
|
||
|
|
%% Cap nhat UI qua Zero
|
||
|
|
DB-->>Zero: State Mutation
|
||
|
|
Zero-->>Web: Giao dien hien thi Audio Player
|
||
|
|
```
|