菜单

服务器和 API

相关源文件

本文档详细介绍了 AFFiNE 后端服务器的实现、其 GraphQL API 和核心服务。它涵盖了服务器架构、API 设计以及为应用程序的后端功能提供动力的各种子系统。

概述

AFFiNE 服务器主要使用 NestJS 作为框架构建,并通过 GraphQL API 与客户端进行通信。该服务器为用户身份验证、工作区管理、文档处理、AI 功能和存储操作提供核心功能。

来源

服务器架构

该服务器实现为一个模块化的 NestJS 应用程序,具有明确的关注点分离。该架构遵循 NestJS 的约定,包括模块、控制器、服务和解析器。

核心组件

来源

GraphQL API 结构

服务器主要通过 GraphQL API 暴露其功能,该 API 使用 Apollo Server 和 NestJS 的 GraphQL 集成进行构建。

来源

数据库 Schema

AFFiNE 使用 PostgreSQL 作为其主要数据库,并使用 Prisma 作为 ORM。数据库模式包括用户、工作区、文档、AI 会话和其他核心实体的表。

关键数据库模型包括:

模型描述
用户用户账户、身份验证和个人设置
工作区包含文档的协作工作区
WorkspaceDoc带有元数据的用户文档
WorkspaceUserRole用户在工作区内的权限
Snapshot文档状态快照
AiSessionAI 聊天会话
AiPromptAI 提示模板
Blob二进制资产和附件

来源

Copilot AI 服务

Copilot AI 服务是一个复杂的系统,它为 AFFiNE 提供 AI 功能,包括文本生成、图像生成和其他 AI 功能。

Copilot 系统旨在处理各种 AI 功能,包括:

  1. 聊天会话:文本生成和对话式 AI
  2. 图像生成/处理:创建和修改图像
  3. 专用工作流:用于演示、头脑风暴等特定任务的模板
  4. 文档嵌入:将文档转换为向量嵌入以进行 AI 处理

来源

聊天会话处理

Copilot 系统通过复杂的架构管理 AI 聊天会话,该架构处理消息处理、令牌管理和提供商选择。

来源

AI 提供商系统

Copilot 系统通过可扩展的提供商架构支持多个 AI 提供商。

来源

GraphQL API

服务器通过 GraphQL API 与客户端进行交互。该模式定义了各种操作的查询、突变、类型和输入类型。

关键 GraphQL 类型

类型描述
Mutation定义修改数据(创建、更新、删除)的操作
查询定义检索数据而不产生副作用的操作
UserType代表系统中的用户
WorkspaceType代表一个工作区
DocType代表工作区中的文档
Copilot代表 AI Copilot 系统
CopilotContext代表 AI 操作的上下文信息
CopilotPromptType定义 AI 提示模板

API 路由

GraphQL API 提供大量操作,包括:

用户与身份验证

  • 登录/登出
  • 管理用户配置文件
  • 邮箱验证
  • 密码管理

工作区

  • 创建和管理工作区
  • 邀请成员
  • 设置权限

文档

  • 创建和更新文档
  • 发布和共享文档
  • 文档历史记录

Copilot AI

  • 聊天会话
  • AI 生成的内容
  • 图像生成和处理

来源

原生集成

AFFiNE 服务器包含用 Rust 编写的本机模块,为计算密集型任务提供高性能功能。

服务器本机模块提供:

  • AI 模型的令牌化
  • 高效的文档处理
  • 文本处理实用程序
  • 媒体处理功能

来源

开发与部署

AFFiNE 服务器可在各种环境中运行,从本地开发到生产部署。

环境配置

服务器使用环境变量进行配置,开发、测试和生产环境具有不同的设置。

关键配置区域包括:

  • 数据库连接
  • 身份验证设置
  • 外部服务 API 密钥
  • 存储配置
  • AI 提供商凭据

构建与运行

可以使用以下命令构建和运行服务器:

来源

Rust 依赖项和本机模块

服务器利用 Rust 通过本机模块实现高性能操作。Rust 组件已构建并集成到 Node.js 服务器中。

关键 Rust 包包括:

  • affine_common - 共享实用程序
  • affine_server_native - 服务器特定的本机功能
  • 文本处理库
  • 媒体处理库

来源

移动端集成

服务器 API 设计用于与移动客户端协同工作,并特别考虑了移动平台。Android 应用程序通过相同的 GraphQL API 与服务器通信。

来源

结论

AFFiNE 服务器为 AFFiNE 应用程序提供了一个强大、可扩展的后端,具有全面的 GraphQL API、AI 集成和本机性能优化。模块化架构允许轻松扩展和维护,同时提供丰富的功能,用于协作、文档管理和 AI 功能。