Files
knowai/README.md
tobegold574 a0c907beed feat(api): 添加热门卡片与榜单接口及实现
- 新增热门帖子、热门作者、榜单接口及实现
- 新增api-documentation,更好的ai协作
- 修复types没有导出的问题

BREAKING CHANGES: 1.0.0->1.1.0(latest)
2025-11-18 22:29:40 +08:00

5.2 KiB
Raw Blame History

KnowAI Core

概述

KnowAI Core 是前端核心库提供业务逻辑、数据处理和认证功能严格遵循分层架构原则专注于核心功能实现不包含UI交互逻辑。

架构设计

分层架构

  • Core层:提供核心业务逻辑、数据处理和状态管理

事件驱动设计

为了实现层间解耦,认证模块采用事件驱动架构:

  • Core层定义事件类型和事件触发机制
  • 上层应用注册事件监听器处理UI交互逻辑
  • 避免Core层直接依赖UI层或路由系统

核心模块

API 模块

API模块负责处理所有与后端通信相关的逻辑提供统一的HTTP请求接口和模块化的API服务

核心功能

  • 请求工厂使用工厂模式创建API实例统一配置请求参数
  • 拦截器系统:支持请求/响应拦截器,实现统一的错误处理、日志记录和认证
  • 模块化API服务按功能域划分API服务如用户API、帖子API等
  • 响应标准化统一处理API响应格式提供一致的错误处理机制
  • 内容发现:提供热门帖子、帖子榜单和热门作者功能,支持多种排序和统计周期

新增功能

帖子相关
  • 热门帖子:通过getHotPosts()获取指定时间内的热门帖子
  • 帖子榜单:通过getPostRanking()获取不同周期(日/周/月)的帖子排行榜,支持按浏览量、点赞数、评论数排序
用户相关
  • 热门作者:通过getHotAuthors()获取指定时间内的热门作者
  • 作者榜单:通过getAuthorRanking()获取不同周期(日/周/月)的作者排行榜,支持按发帖量、浏览量、点赞数排序

架构特点

  • 基于axios构建支持请求/响应转换
  • 自动处理认证令牌附加
  • 统一的错误处理和重试机制
  • 支持请求取消和超时控制

Auth 模块

Auth模块提供完整的认证功能管理用户身份验证和授权状态

核心功能

  • 令牌管理:管理访问令牌和刷新令牌,实现自动令牌刷新
  • 认证状态管理:维护用户登录状态,提供状态查询接口
  • 事件驱动通知:通过事件系统通知认证状态变化,如登录、登出、令牌过期等
  • 权限控制:提供基于角色的权限检查功能

架构特点

  • 事件驱动的状态通知机制实现与UI层的解耦
  • 自动处理令牌过期和刷新流程
  • 支持多种认证方式令牌、OAuth等
  • 安全的令牌存储机制

Utils 模块

Utils模块提供常用的工具函数支持数据处理和业务逻辑实现

核心功能

  • 数据处理工具:提供数据转换、过滤、排序等常用数据处理函数
  • 字符串处理工具:提供字符串格式化、验证、转换等工具函数
  • 日期处理工具:提供日期格式化、计算、比较等日期相关函数
  • 验证工具:提供表单验证、数据格式验证等验证函数

架构特点

  • 纯函数设计,无副作用,易于测试
  • 函数式编程风格,支持链式调用
  • 完整的TypeScript类型支持
  • 模块化设计,按需导入

Types 模块

Types模块提供TypeScript类型定义确保整个应用的类型安全

核心功能

  • API相关类型定义请求参数、响应数据等API相关类型
  • 业务实体类型:定义业务领域中的实体类型,如用户、内容等
  • 通用类型定义:提供通用的工具类型和类型别名
  • 事件类型定义:定义事件系统中使用的事件类型

架构特点

  • 严格的类型定义,提供编译时类型检查
  • 支持泛型和高级类型特性
  • 类型文档完善,提高开发体验
  • 与业务逻辑紧密关联,确保类型一致性

目录结构

knowai-core/
├── api/           # API模块
├── auth/          # 认证模块
├── utils/         # 工具函数模块
├── types/         # 类型定义模块
├── test/          # 测试文件
├── index.ts       # 主入口文件
├── package.json   # 项目配置
├── tsconfig.json  # TypeScript配置
└── vitest.config.ts # 测试配置

设计原则

  1. 关注点分离业务逻辑与UI逻辑分离Core层专注于核心功能实现
  2. 事件驱动:通过事件系统实现层间解耦,降低模块间耦合度
  3. 类型安全充分利用TypeScript类型系统提供编译时类型检查
  4. 模块化:按功能域组织,按需导入,提高代码复用性
  5. 可测试性:纯函数和依赖注入提高可测试性,确保代码质量

更新记录

2025-11-10

  • 完成tsc eslint vitest测试构建1.0.0镜像并推送

2025-11-11

  • 因服务器性能原因去除CI pipeline
  • 重新整理所有逻辑模块架构完成对应README撰写

2025-11-12

  • 实现帖子相关新功能:热门帖子、帖子榜单
  • 实现用户相关新功能:热门作者、作者榜单
  • 更新README文档添加新功能说明

2025-11-18

  • 添加热门帖子、榜单、热门作者接口
  • 完成api-documentation.md文档详细描述所有接口的功能、参数、响应格式等
  • 修复类型未导出问题