# second-brain **Repository Path**: zjarlin/second-brain ## Basic Information - **Project Name**: second-brain - **Description**: ssssssssssssssssssss - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-11-21 - **Last Updated**: 2026-01-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Second Brain - 现代化知识/后台管理系统 Second Brain 是一个基于 Kotlin 和 Compose Multiplatform 开发的现代化桌面应用,旨在提供强大的个人知识管理解决方案。本项目采用前后端分离架构,并集成了智能化的知识管理功能,帮助用户更好地组织和利用个人知识。 ## 项目特性 ### 1. 现代化技术栈 - 基于 Kotlin 和 Compose Multiplatform 的跨平台开发 - 前后端分离架构设计 - KSP (Kotlin Symbol Processing) 注解处理 ### 2. 核心功能 - **知识库管理** - Markdown 文档支持 - 全文检索 - **知识图谱** - 可视化知识关联 - 交互式浏览 - **智能助手** - 基于知识库的问答 - 上下文感知 ## 技术架构 ### 前端技术栈 - **UI框架**: Compose Multiplatform - **状态管理**: Kotlin Coroutines Flow - **UI组件**: Material 3 Design - **动画效果**: Compose Animation ### 后端技术栈 - **开发语言**: Kotlin - **注解处理**: KSP [//]: # (- **网络通信**: Ktor) [//]: # (- **序列化**: Kotlinx Serialization) ## 项目结构 ``` . ├── backend/ # 后端服务实现 ├── front/ # 前端桌面应用 ├── ksp-annotation/ # 注解定义 ├── ksp-processor/ # 注解处理器 ``` ## 开发环境配置 ### 系统要求 - JDK 11+ - Kotlin 1.8+ - Gradle 7.x ### 快速开始 1. 克隆项目 ```bash git clone cd second-brain ``` 2. 构建项目 ```bash ./gradlew build ``` 3. 运行应用 ```bash ./gradlew :front:run ``` ## 贡献指南 我们欢迎各种形式的贡献,包括但不限于: - 提交问题和建议 - 改进文档 - 提交代码修复 - 添加新功能 提交PR前请确保: 1. 代码符合项目规范 2. 添加必要的测试用例 3. 更新相关文档 # KSP 注解处理器框架 本项目实现了一个灵活的 Kotlin 符号处理器 (KSP) 框架,用于生成代码和路由表。 ## 功能特性 1. **DSL 生成器**:自动为带有 `@Dsl` 注解的类生成 Builder 和 DSL 函数 2. **路由表生成**:可选地为带有 `@Route` 注解的组件生成统一路由表 ## 使用方法 ### 添加依赖 ```kotlin // 在 build.gradle.kts 中 dependencies { implementation("com.github.zjarlin.second-brain:ksp-annotation:1.0.0") ksp("com.github.zjarlin.second-brain:ksp-processor:1.0.0") } ``` ### DSL 生成器 在您的数据类上添加 `@Dsl` 注解: ```kotlin @Dsl data class User( val name: String, val age: Int, val email: String? ) ``` 这将生成以下代码: ```kotlin // 在与原类相同的包中生成 class UserBuilderGen { var name: String = "" var age: Int = 0 var email: String? = null fun build(): User { return User(name, age, email) } } fun user(block: UserBuilderGen.() -> Unit): User = UserBuilderGen().apply(block).build() ``` ### 路由表生成 默认情况下,路由表生成功能是关闭的。您需要在 KSP 配置中启用它: ```kotlin // 在 build.gradle.kts 中 ksp { // 设置为 true 以启用路由表生成 arg("route.generateTable", "true") } ``` 然后在您的 Composable 函数上添加 `@Route` 注解: ```kotlin @Route( value = "dashboard", title = "仪表板", icon = "Dashboard" ) @Composable fun DashboardScreen() { // 界面实现 } ``` 这将生成一个统一的路由表: ```kotlin // 在 com.addzero.ksp.route 包中生成 object RouteTable { val routes = mapOf( Route( value = "dashboard", path = "com.example.DashboardScreen", title = "仪表板", parent = "dashboard", icon = "Dashboard", visible = true, order = 0.0, declarationQulifiedName = "com.example.DashboardScreen", homePageFlag = false, permissions = "" ) to @Composable { com.example.DashboardScreen() } // 其他路由... ) } ``` ## 配置选项 ### DSL 生成器选项 ```kotlin @Dsl( value = "customName", // 自定义DSL函数名 genCollectionDslBuilder = true, // 是否生成集合构建器 removePrefix = "My", // 自动从类名中移除前缀 removeSuffix = "Entity" // 自动从类名中移除后缀 ) ``` ### 路由选项 ```kotlin @Route( value = "dashboard", // 路由值 path = "custom/path", // 自定义路径 title = "仪表板", // 显示标题 parent = "main", // 父路由 icon = "Dashboard", // 图标 visible = true, // 是否显示 order = 1.0, // 排序顺序 permissions = "admin", // 权限要求 homePageFlag = true // 是否为首页 ) ```