# 项目初始化说明(init.md) ## 1. 项目背景 智能语音识别并总结系统。AI 转录能力通过外部接口调用,不在本项目内实现。 ## 2. 技术栈 - 后端:Java 17 / Spring Boot 3 / Spring Security / MyBatis-Plus - 认证与登录框架:Spring Security + JWT(无状态,适配前后端分离与 RBAC 权限模型) - 登录要求:图形验证码 - Token 规则:按用户与设备区分 Token;建议以设备码换取 Token(设备码与用户绑定) - 验证码策略:登录接口必须先校验图形验证码;验证码有效期 2 分钟;同一会话最多尝试 5 次,超限需重新获取;验证码与会话或设备码绑定;验证码错误返回统一提示且不暴露是否命中用户。 - Token 失效与刷新策略:Access Token 与 Refresh Token 有效期通过系统参数配置;Refresh Token 与用户+设备码绑定且可单设备吊销;每次刷新旋转 Refresh Token,旧 Token 立即失效;登出或设备解绑时立即吊销该设备所有 Token。 - OAuth2.0 预留:认证与授权模块接口保持可扩展,预留 OAuth2.0 升级路径(Token 结构、授权端点与客户端管理兼容扩展)。 - 数据库:PostgreSQL 15+(支持向量扩展,建议 `pgvector`) - 缓存:Redis(必须) - 前端:React 18 / Vite / React Router / Zustand / Ant Design - 构建:Maven ## 3. 系统模块(一期) - 用户管理(User) - 权限管理(Role / Permission) - 设备管理(Device) - 租户管理:当前不启用,保留扩展能力(数据模型与接口预留 `tenant_id`) ## 4. 系统架构 - 后端:管理端与业务端共用同一服务与 API 命名空间(单体),预留后续多租户与服务拆分扩展点 - 前端:管理端与业务端共用同一应用(单体),预留后续拆分 - AI 转录:统一抽象为外部 HTTP API(仅调用,不实现) ## 5. 数据库说明 - 以 `design/db_schema.md` 为核心参考 - 原文档为 MySQL 设计,需映射为 PostgreSQL 类型 - 多租户采用 `tenant_id` 逻辑隔离,当前仅预留字段与索引 - 预留向量字段与索引策略,用于后续知识库模块 ## 6. 基础约定 - 统一时区:UTC+8 - 统一时间字段:`created_at`, `updated_at` - 软删除:`is_deleted` - 状态字段:`status`(1 启用 / 0 禁用) ## 7. 目录结构(后端) - `backend/` Spring Boot 主服务 - `backend/src/main/java/...` ## 8. 目录结构(前端) - `frontend/` 单体应用(管理端与业务端共存,按路由与权限区分) ## 9. 迭代范围 - 仅实现用户、权限、设备基础 CRUD - 租户仅预留模型与扩展点,不提供管理功能 - AI 转录接口仅预留调用层,不包含实现 - 知识库模块后续再接入