# open-notebook_backend **Repository Path**: friedRiceEgg/open-notebook_backend ## Basic Information - **Project Name**: open-notebook_backend - **Description**: open-notebook_backend - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: new-master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-01 - **Last Updated**: 2026-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Open Notebook Java Backend 这是Open Notebook项目的Java后端实现,用于替代原有的Python FastAPI后端。 ## 技术栈 - **Java 17** - **Spring Boot 3.2.0** - **SurrealDB** (数据库保持与原项目一致) - **Lombok** (简化代码) ## 项目结构 ``` java-backend/ ├── src/main/java/com/opennotebook/ │ ├── OpenNotebookApplication.java # 主应用入口 │ ├── ai/ # AI模型管理 │ │ └── ModelManager.java │ ├── config/ # 配置类 │ │ ├── AppConfig.java │ │ ├── AuthConfig.java │ │ ├── CorsConfig.java │ │ ├── GlobalExceptionHandler.java │ │ ├── PasswordAuthFilter.java │ │ ├── RepositoryConfig.java │ │ ├── SecurityConfig.java │ │ └── SurrealDbConfig.java │ ├── controller/ # API控制器 │ │ ├── AuthController.java │ │ ├── ChatController.java │ │ ├── ConfigController.java │ │ ├── CredentialController.java │ │ ├── ModelController.java │ │ ├── NoteController.java │ │ ├── NotebookController.java │ │ ├── RootController.java │ │ ├── SearchController.java │ │ ├── SourceController.java │ │ └── TransformationController.java │ ├── database/ # 数据库层 │ │ ├── MigrationManager.java │ │ ├── SurrealDbConnection.java │ │ └── SurrealDbRepository.java │ ├── domain/ # 领域模型 │ │ ├── model/ │ │ │ ├── Asset.java │ │ │ ├── Credential.java │ │ │ ├── DefaultModels.java │ │ │ ├── DefaultPrompts.java │ │ │ ├── Model.java │ │ │ ├── Note.java │ │ │ ├── Notebook.java │ │ │ ├── Source.java │ │ │ ├── SourceInsight.java │ │ │ └── Transformation.java │ │ ├── ObjectModel.java │ │ └── RecordModel.java │ ├── dto/ # 数据传输对象 │ │ ├── ApiResponse.java │ │ ├── ErrorResponse.java │ │ ├── NoteResponse.java │ │ ├── NotebookCreate.java │ │ ├── NotebookDeletePreview.java │ │ ├── NotebookDeleteResponse.java │ │ ├── NotebookResponse.java │ │ ├── NotebookUpdate.java │ │ └── SourceResponse.java │ ├── exception/ # 异常类 │ │ ├── AuthenticationException.java │ │ ├── ConfigurationException.java │ │ ├── DatabaseOperationException.java │ │ ├── ExternalServiceException.java │ │ ├── FileOperationException.java │ │ ├── InvalidInputException.java │ │ ├── NetworkException.java │ │ ├── NoTranscriptFoundException.java │ │ ├── NotFoundException.java │ │ ├── OpenNotebookException.java │ │ ├── RateLimitException.java │ │ └── UnsupportedTypeException.java │ └── util/ # 工具类 │ ├── EncryptionUtil.java │ ├── TextChunker.java │ └── TextUtils.java └── src/main/resources/ └── application.yml # 应用配置 ``` ## API端点 ### 认证 - `GET /api/auth/status` - 获取认证状态 ### 笔记本 - `GET /api/notebooks` - 获取所有笔记本 - `POST /api/notebooks` - 创建笔记本 - `GET /api/notebooks/{id}` - 获取单个笔记本 - `PUT /api/notebooks/{id}` - 更新笔记本 - `DELETE /api/notebooks/{id}` - 删除笔记本 - `GET /api/notebooks/{id}/delete-preview` - 获取删除预览 - `POST /api/notebooks/{notebookId}/sources/{sourceId}` - 添加来源到笔记本 - `DELETE /api/notebooks/{notebookId}/sources/{sourceId}` - 从笔记本移除来源 ### 来源 - `GET /api/sources` - 获取所有来源 - `GET /api/sources/{id}` - 获取单个来源 - `DELETE /api/sources/{id}` - 删除来源 - `GET /api/sources/{id}/insights` - 获取来源洞察 - `POST /api/sources/{id}/insights` - 添加洞察 ### 笔记 - `GET /api/notes` - 获取所有笔记 - `POST /api/notes` - 创建笔记 - `GET /api/notes/{id}` - 获取单个笔记 - `PUT /api/notes/{id}` - 更新笔记 - `DELETE /api/notes/{id}` - 删除笔记 ### 模型 - `GET /api/models` - 获取所有模型 - `POST /api/models` - 创建模型 - `GET /api/models/{id}` - 获取单个模型 - `PUT /api/models/{id}` - 更新模型 - `DELETE /api/models/{id}` - 删除模型 - `GET /api/models/defaults` - 获取默认模型配置 - `PUT /api/models/defaults` - 更新默认模型配置 ### 凭证 - `GET /api/credentials` - 获取所有凭证 - `POST /api/credentials` - 创建凭证 - `GET /api/credentials/{id}` - 获取单个凭证 - `PUT /api/credentials/{id}` - 更新凭证 - `DELETE /api/credentials/{id}` - 删除凭证 ### 转换 - `GET /api/transformations` - 获取所有转换 - `POST /api/transformations` - 创建转换 - `GET /api/transformations/{id}` - 获取单个转换 - `PUT /api/transformations/{id}` - 更新转换 - `DELETE /api/transformations/{id}` - 删除转换 ### 聊天 - `GET /api/chat/sessions` - 获取聊天会话 - `POST /api/chat/sessions` - 创建聊天会话 - `GET /api/chat/sessions/{id}` - 获取单个会话 - `PUT /api/chat/sessions/{id}` - 更新会话 - `DELETE /api/chat/sessions/{id}` - 删除会话 - `POST /api/chat/execute` - 执行聊天 - `POST /api/chat/context` - 构建上下文 ### 搜索 - `POST /api/search` - 搜索知识库 ### 配置 - `GET /api/config` - 获取配置信息 ## 配置 在 `application.yml` 中配置以下环境变量: ```yaml surrealdb: url: ${SURREAL_URL:ws://localhost:8000/rpc} namespace: ${SURREAL_NAMESPACE:open_notebook} database: ${SURREAL_DATABASE:open_notebook} username: ${SURREAL_USER:root} password: ${SURREAL_PASSWORD:root} auth: password: ${OPEN_NOTEBOOK_PASSWORD:} encryption-key: ${OPEN_NOTEBOOK_ENCRYPTION_KEY:} ``` ## 运行 ### 使用Maven ```bash cd java-backend mvn spring-boot:run ``` ### 构建JAR ```bash cd java-backend mvn clean package java -jar target/open-notebook-backend-1.8.0.jar ``` ## 与Python版本的对应关系 | Python模块 | Java模块 | |-----------|---------| | open_notebook/exceptions.py | exception/ | | open_notebook/database/repository.py | database/SurrealDbRepository.java | | open_notebook/domain/base.py | domain/ObjectModel.java, RecordModel.java | | open_notebook/domain/notebook.py | domain/model/Notebook.java, Source.java, Note.java | | open_notebook/domain/transformation.py | domain/model/Transformation.java | | open_notebook/domain/credential.py | domain/model/Credential.java | | open_notebook/ai/models.py | domain/model/Model.java, ai/ModelManager.java | | api/routers/*.py | controller/*.java | | api/main.py | OpenNotebookApplication.java | ## 注意事项 1. 数据库保持使用SurrealDB,与原Python版本一致 2. API接口路径和响应格式与原Python版本保持一致 3. AI模型调用部分需要根据实际使用的Java AI库进行适配 4. 向量搜索功能需要额外配置embedding服务