bujinyuan
|
fa6f1e5c58
|
feat: 角色等级体系与权限管控实施
- 数据库:auth_roles 表新增 level 字段(1=超管, 10=管理员, 100=普通用户)
- 后端:新增 GetAllRoles/GetUserMaxLevel/SetUserRoles/FindByCodeList DAO 方法
- 后端:SetRolesRequest 替换 AssignRoleRequest,AdminUserInfo.Roles 改为 []RoleInfo
- 后端:所有管理操作(禁用/启用/角色分配/创建用户)强制层级权限校验
- 后端:PUT /users/:id/roles(批量设置角色)+ GET /roles(角色列表)
- 前端:角色管理改为 Checkbox Group 多选,高等级角色禁用
- 前端:禁用/启用按钮受角色层级约束,列表页操作按钮权限管控
- 前端:创建用户对话框角色选项根据操作者等级动态过滤
- 文档:API 文档、设计方案、集成规范、进度文档同步更新
Made-with: Cursor
|
2026-03-02 15:40:02 +08:00 |
|
bujinyuan
|
dd84e50429
|
docs: 将前后台路由严格分离规则提升为最高优先级
在 project-context.mdc 中明确:
- 前台 API 路径:/api/v1/auth/* 等
- 管理端 API 路径:/api/v1/admin/* 下
- 禁止任何混用,新增功能必须先确认归属
Made-with: Cursor
|
2026-03-02 14:35:48 +08:00 |
|
bujinyuan
|
13c6b44352
|
fix: 管理端所有认证接口统一使用 /api/v1/admin/auth/* 路由
后端:
- 新增管理端认证路由组 /api/v1/admin/auth/(JWT + admin 角色双重检查)
- 管理端登出:POST /api/v1/admin/auth/logout
- 管理端获取个人信息:GET /api/v1/admin/auth/profile
- 管理端更新个人信息:PUT /api/v1/admin/auth/profile
- 管理端修改密码:PUT /api/v1/admin/auth/password
前端:
- admin/src/api/auth.js 所有接口全部改为 /api/v1/admin/auth/*
- 登出和获取个人信息不再使用前台的 /api/v1/auth/ 路由
Made-with: Cursor
|
2026-03-02 14:33:18 +08:00 |
|
bujinyuan
|
c3e8600b24
|
fix: 前后台 Token Redis 存储隔离,修复同账号互相覆盖问题
核心变更:
- Redis key 加入 clientType 前缀:echo:auth:token:{frontend|admin}:{user_id}
- JWT Claims 新增 client_type 字段区分前台/管理端
- 新增 constants/client_type.go 定义 ClientTypeFrontend / ClientTypeAdmin
- 全链路传递 clientType:Controller → Service → TokenStore → Redis
- 中间件从 JWT Claims 提取 clientType 做 Redis 校验
- 登出只删除当前端 Token,不影响另一端
前端变更:
- 管理端 login API 改为调用 POST /api/v1/admin/auth/login(之前错误调用了前台接口)
文档更新:
- 系统设计文档、实施计划、API文档、开发规范、项目进度全部同步
Made-with: Cursor
|
2026-03-02 14:28:45 +08:00 |
|
bujinyuan
|
cfb1651480
|
docs: 新增前后端集成开发规范,更新项目规则与进度文档
- 创建 docs/conventions/frontend-backend-integration.md
完整规范:API响应格式、HTTP状态码语义、前端错误处理、后端错误处理、
前后端错误码对照表、安全约束、检查清单
- 更新 .cursor/rules/project-context.mdc 加入前后端联动规范6条
- 更新 CURRENT_STATUS.md 记录修复内容和规范引用
Made-with: Cursor
|
2026-03-02 14:12:06 +08:00 |
|
bujinyuan
|
e1348f57f2
|
fix: 统一前后端错误提示处理,修复3个问题
1. 管理端 request.js: 所有401均优先显示后端实际message,
非登录页才清除Token并跳转
2. 前台用户端 request.js: 区分登录/注册请求与已认证请求,
登录失败时只显示后端message,不清Token不跳转
3. 后端 auth_service: 登录时用户不存在统一返回"账号或密码错误"
(防止用户枚举攻击,不再返回404"用户不存在")
Made-with: Cursor
|
2026-03-02 14:05:03 +08:00 |
|
bujinyuan
|
8a818f8035
|
fix(admin): 登录失败时显示后端实际错误信息而非"登录已过期"
401 响应拦截器区分登录页和已登录页面:
- 登录页:显示后端返回的 message(如"账号或密码错误")
- 其他页面:显示"登录已过期"并跳转登录页
Made-with: Cursor
|
2026-03-02 14:00:12 +08:00 |
|
bujinyuan
|
cb08e1d621
|
fix: 超级管理员用户名改为 super_admin,统一区分
系统预置唯一超管账号:super_admin / admin123456 / super_admin@echochat.com
Made-with: Cursor
|
2026-03-02 13:49:26 +08:00 |
|
bujinyuan
|
436c494f94
|
fix: 修正超级管理员 bcrypt 密码 hash
init.sql 中的 bcrypt hash 是占位值,与注释中的密码 admin123456 不匹配。
替换为 admin123456 真正对应的 bcrypt hash,确保超管账号可正常登录。
Made-with: Cursor
|
2026-03-02 13:46:17 +08:00 |
|
bujinyuan
|
c6ffc07ca6
|
docs: 补充开发测试指南(启动命令 + 测试账号 + 可测试功能)
Made-with: Cursor
|
2026-03-02 11:52:58 +08:00 |
|
bujinyuan
|
60c49112b4
|
docs: 补充 gitignore 配置说明到进度文档
Made-with: Cursor
|
2026-03-02 11:47:40 +08:00 |
|
bujinyuan
|
4ae65d5956
|
fix: 将 .vite/ 缓存目录加入 gitignore
Vite 依赖预构建缓存(.vite/deps/)是自动生成的,不应纳入版本控制。
Made-with: Cursor
|
2026-03-02 11:46:41 +08:00 |
|
bujinyuan
|
883598d5fa
|
docs: Phase 1 完成 — 同步更新全部文档至最新进度
- system-architecture.md: 标注 Docker 部署架构实现状态
- phase1-foundation-and-auth.md: 添加 Phase 1 完成标记
- api/README.md: 添加各模块实现状态标注(Phase 1/2/3)
- api/admin/user.md: 修正角色分配权限、补充创建用户响应示例
- project-context.mdc: 更新当前进度为 Phase 1 完成
Made-with: Cursor
|
2026-03-02 11:42:45 +08:00 |
|
bujinyuan
|
4d03215fe4
|
feat: Phase 1 完成 — 基础设施 + 用户认证 + 管理端 + 端到端验证
Phase 1 (基础设施与用户认证) 全部 11 个 Task 开发完成:
后端 (Go):
- Auth 模块: 注册/登录/JWT(有状态)/Profile/密码修改
- Admin 模块: 用户列表/详情/禁用/启用/角色分配/创建用户
- 中间件: JWT认证 + RBAC角色权限 + 请求日志 + CORS + Panic恢复
- Dockerfile 多阶段构建 + Docker Compose 全栈部署
前台 (uni-app):
- 登录/注册页面 + 自定义 TabBar + 个人中心
- 请求封装 + 状态管理 (Pinia)
管理端 (Vue 3 + Element Plus):
- 登录/仪表盘/用户列表/用户详情
- Axios 封装 + 路由守卫 + Pinia 状态管理
验证:
- 全流程 API 端到端测试通过
- Playwright 页面自动化验证通过
- code-reviewer 代码审查通过
Made-with: Cursor
|
2026-03-02 11:31:24 +08:00 |
|
bujinyuan
|
e9bd4dd204
|
fix: 时间精度精确到秒 + 同步全部文档到最新状态
时间字段修正:
- init.sql: 所有 TIMESTAMP 改为 TIMESTAMP(0),精确到秒
- GORM 模型: 所有时间字段添加 type:timestamp(0) tag
- 已有数据库表通过 ALTER TABLE 修正列类型
文档同步(架构设计 + 实施步骤):
- system-architecture.md:
- auth 模块描述更新为"有状态 JWT Token 管理(Redis 存储)"
- 开发环境端口 8080 → 8085
- phase1-foundation-and-auth.md:
- Go 版本 1.22+ → 1.23+
- 常量命名更新为驼峰风格(UserStatusActive / RoleUser 等)
- Task 4 完整重写:增加 token_store.go、TokenValidator 接口、有状态 JWT
- Task 5 端口号 8080 → 8085,测试命令增加登出失效验证
- 依赖版本选择原则说明
Made-with: Cursor
|
2026-02-28 17:04:47 +08:00 |
|
bujinyuan
|
b607434c57
|
fix(auth): 有状态 JWT + 统一响应格式,严格遵循设计方案
1. 有状态 JWT(Token 存 Redis):
- 新增 token_store.go: Token 的 Redis 存取管理
- echo:auth:token:{user_id} → Access Token (TTL = access_expire_min)
- echo:auth:refresh:{user_id} → Refresh Token (TTL = refresh_expire_day)
- 登录/注册时自动将 Token 存入 Redis(覆盖旧 Token,实现单设备登录)
- JWT 中间件增加 Redis 有效性校验(TokenValidator 接口解耦)
- 登出时从 Redis 删除 Token,使其立即失效
- 刷新 Token 时校验 Redis 中的 Refresh Token
2. 统一成功响应为 "success" + 200:
- 注册接口改用 ResponseOK(原 ResponseCreated/201)
- 所有成功响应统一为 {"code": 0, "message": "success"}
3. API 文档同步更新:
- frontend/auth.md: 登出说明改为 Redis 方案、注册响应统一
- README.md: 移除 "created" 示例
已验证:登出后 Token 立即失效 ✓ 重新登录后新 Token 有效 ✓
Made-with: Cursor
|
2026-02-28 16:57:46 +08:00 |
|
bujinyuan
|
5a65716d10
|
docs(api): 同步 API 文档与实际实现一致
README.md:
- 开发环境端口 8080 → 8085
- 统一响应格式添加 trace_id 字段
- 成功消息 "ok" → "success",创建 "created"
frontend/auth.md(全面更新):
- 注册响应:201 状态码 + message="created" + expires_in=7200
- 所有响应示例:添加 trace_id 和 time 字段
- user 对象:添加 gender 字段
- 退出登录:更新为无状态 JWT 说明(非 Redis)
- 刷新 Token:添加 user 字段到响应
- profile:添加 phone + created_at 字段
- 错误码:统一使用 HTTP 状态码说明表
代码同步:
- dto.UserInfo: 添加 Phone + CreatedAt 字段
- auth_service.buildUserInfo: 填充新字段
Made-with: Cursor
|
2026-02-28 16:48:17 +08:00 |
|
bujinyuan
|
d975adaf2a
|
feat(auth): 完整认证系统 — 注册/登录/JWT/路由(Task 4 + Task 5)
Task 4 — 认证服务层:
- pkg/utils/password.go: bcrypt 密码加密与校验
- pkg/utils/jwt.go: Access/Refresh Token 生成与解析(jwt/v5@v5.2.1,兼容 Go 1.23)
- app/dto/auth_dto.go: 认证相关请求/响应 DTO(含参数校验 binding tag)
- app/auth/service/auth_service.go: 核心业务逻辑(注册、登录、管理员登录、Token 刷新、个人信息、改密码)
- pkg/middleware/auth.go: JWT 认证中间件 + 角色权限检查中间件
Task 5 — Controller 与路由注册:
- app/auth/controller/auth_controller.go: 前台认证接口(7 个 API)
- app/auth/controller/admin_auth_controller.go: 后台管理认证接口
- app/auth/router.go: auth 模块路由定义(模块自包含)
- router/router.go: 主路由汇总入口(仅做调度,不含具体路由定义)
- cmd/server/main.go: 路由注册迁移到 router.Setup()
已验证全部接口:注册 ✓ 登录 ✓ 获取 profile ✓ 错误密码 ✓ 未认证拒绝 ✓ 非管理员拒绝 ✓
Made-with: Cursor
|
2026-02-28 16:42:28 +08:00 |
|
bujinyuan
|
4d3d486902
|
refactor(middleware): 精简请求日志 — 采用社区标准分层策略
- 移除 Request Body 记录(交由 Controller 层以结构化参数形式记录)
- 移除正常响应 Body 的 DEBUG 记录(减少日志量)
- 保留 HTTP 元信息:method/path/handler/status/latency/ip/query
- 保留错误响应(4xx/5xx)的 Response Body 记录
- 导出 IsSensitivePath 供 Controller 层调用
- 重写架构文档 8.6 节:分层日志架构表、字段说明、分级策略
- 更新 phase1 实施计划中间件描述
Made-with: Cursor
|
2026-02-28 16:10:07 +08:00 |
|
bujinyuan
|
a6ef49a3e0
|
feat(middleware): 请求日志新增 handler 字段定位实际处理函数
- 通过 c.HandlerName() 获取处理请求的 handler 函数名
- 解决 caller 始终指向中间件文件无法定位业务代码的问题
- 同步更新架构文档日志示例,补充 caller/handler 说明
Made-with: Cursor
|
2026-02-28 15:56:32 +08:00 |
|
bujinyuan
|
99c2f4f86a
|
docs: 同步更新请求日志中间件文档(请求参数 + 响应数据记录策略)
- system-architecture.md 8.6: 完整记录策略表、状态码分级、日志输出示例
- phase1 实施计划 Task 2: 更新 logger 中间件描述
Made-with: Cursor
|
2026-02-28 15:51:27 +08:00 |
|
bujinyuan
|
8a023dfd87
|
feat(middleware): 请求日志增强 — 记录请求参数 + 响应数据
- Query 参数:INFO 级别始终记录(所有环境生效)
- Request Body:INFO 级别始终记录(所有请求方式)
- 文件上传自动跳过,仅标记 [file upload]
- 敏感路径(登录/注册/改密码)自动脱敏 password 字段
- Body 超过 4KB 自动截断
- Response Body:DEBUG 级别记录正常响应,4xx/5xx 错误在 INFO 也记录
- 响应 Body 最大记录 2KB
- 状态码分级:5xx→ERROR / 4xx→WARN / 慢请求→WARN / 正常→INFO
Made-with: Cursor
|
2026-02-28 15:49:19 +08:00 |
|
bujinyuan
|
2d9bc10c6d
|
docs: 新增路由架构设计(模块自包含 + 主路由汇总)
- system-architecture.md: 3.2.1 路由架构(目录结构、调用关系、命名规范)
- system-architecture.md: 5.1 更新微服务预留规则(模块自包含路由)
- phase1 实施计划: Task 5 更新文件清单和步骤说明
Made-with: Cursor
|
2026-02-28 15:31:46 +08:00 |
|
bujinyuan
|
028cca8695
|
docs(config): 配置文件添加完整中文注释
Made-with: Cursor
|
2026-02-28 15:23:52 +08:00 |
|
bujinyuan
|
323232d875
|
docs: 同步更新日志系统文档(文件轮转 + 分级存储)
- system-architecture.md: 更新环境日志策略表,新增文件输出和轮转策略说明
- phase1 实施计划: 更新 LogConfig 结构体定义,补充 LogFileConfig
Made-with: Cursor
|
2026-02-28 15:18:20 +08:00 |
|
bujinyuan
|
63c6079667
|
feat(logs): 日志系统升级 — 文件轮转 + 分级存储
- 引入 lumberjack 实现日志文件自动轮转(按大小切割、保留数量、过期清理)
- app.log: 全量日志(JSON 格式),便于后期接入 ELK/Loki
- error.log: 仅 WARN 及以上级别,便于快速定位问题
- 控制台输出保持不变(彩色可读文本)
- 配置新增 log.file 节,支持 enable/dir/max_size/max_backups/max_age/compress
Made-with: Cursor
|
2026-02-28 15:15:00 +08:00 |
|
bujinyuan
|
327cb6308e
|
fix(infra): Redis 镜像更换为 redis:7,移除过时的 version 字段
Made-with: Cursor
|
2026-02-28 10:47:14 +08:00 |
|
bujinyuan
|
8a6576a2f7
|
feat(auth): 用户/角色模型与数据访问层
- constants: 用户状态、性别、角色代码常量定义
- model: User/Role/UserRole GORM 模型
- dao: UserDAO (CRUD + 账号查询) + RoleDAO (角色分配/查询/检查)
- provider: Auth 模块 Wire Provider Set
Made-with: Cursor
|
2026-02-28 10:42:34 +08:00 |
|
bujinyuan
|
c8ffbedf75
|
feat(backend): Go 服务骨架(配置、日志、数据库、中间件、Wire)
- config: Viper YAML 配置 + 环境变量覆盖
- logs: zap 结构化日志 + trace_id 链路追踪 + 敏感信息脱敏
- db: PostgreSQL (GORM) + Redis (go-redis) 连接管理
- middleware: Trace/Logger/CORS/Recovery 四层中间件
- provider: Wire 编译时依赖注入
- main.go: 优雅启动/关闭 HTTP 服务
Made-with: Cursor
|
2026-02-28 10:41:20 +08:00 |
|
bujinyuan
|
d81c5743f5
|
infra: Docker Compose 开发环境(PostgreSQL + Redis)
- docker-compose.dev.yml: PostgreSQL 17 + Redis 7 服务编排
- init.sql: auth 模块表结构 + 默认角色 + 超级管理员
- redis.conf: 开发环境 Redis 配置
- dev-setup.sh: 一键启动开发环境脚本
- .gitignore: 项目全局忽略规则
Made-with: Cursor
|
2026-02-28 10:36:38 +08:00 |
|
bujinyuan
|
37d206d556
|
docs: 添加 AGENTS.md 并更新 Phase1 实施计划
Made-with: Cursor
|
2026-02-28 10:33:34 +08:00 |
|
bujinyuan
|
7dc8a27c89
|
docs: 记录 RBAC 权限扩展规划
- 设计文档:在角色表后添加细粒度权限点扩展规划(预留表结构、权限点示例、中间件扩展方式)
- 架构文档:auth 模块说明标注当前粗粒度 + 预留扩展
当前 MVP 使用 3 角色(user/admin/super_admin),后期按需引入权限点机制。
Made-with: Cursor
|
2026-02-28 10:14:06 +08:00 |
|
bujinyuan
|
e6c969e232
|
docs: 数据库时间字段从 TIMESTAMPTZ 改为 TIMESTAMP
统一使用 TIMESTAMP(不带时区),直接存储 yyyy-MM-dd HH:mm:ss 格式,
无需时区转换,与 API 层时间格式完全一致。
Made-with: Cursor
|
2026-02-28 10:06:16 +08:00 |
|
bujinyuan
|
ee6a07ca64
|
docs: 日志时间格式去掉毫秒,统一到秒
日志示例中的时间从 yyyy-MM-dd HH:mm:ss.SSS 修正为 yyyy-MM-dd HH:mm:ss
Made-with: Cursor
|
2026-02-28 10:03:19 +08:00 |
|
bujinyuan
|
1e53df7539
|
docs: 文档一致性检查修复
- 架构文档日志格式示例时间改为亚洲格式 yyyy-MM-dd HH:mm:ss.SSS
- 实施计划日志格式示例同步修正
- 修复 Task 2 中 Step 编号重复(两个 Step 9 → Step 9/10/11)
Made-with: Cursor
|
2026-02-28 09:59:41 +08:00 |
|
bujinyuan
|
7dcd89c7fc
|
docs: API 文档按端+模块二级目录重组
- 前台用户端 API 迁移到 frontend/ 目录(auth/contact/im/meeting/notify)
- 后台管理端 admin.md 拆分为 admin/ 目录下 4 个文档(auth/user/meeting/system)
- WebSocket 协议保留在根目录(跨端通用)
- 更新 README 导航为两级结构,补充目录结构说明
- 更新所有文档间的交叉引用路径
Made-with: Cursor
|
2026-02-28 09:52:52 +08:00 |
|
bujinyuan
|
44fa5a3830
|
docs: 统一时间格式为亚洲友好的日期时间字符串
所有文档中的时间字段统一为 yyyy-MM-dd HH:mm:ss 格式(Asia/Shanghai):
- 移除 ISO 8601 格式(2026-02-27T10:00:00Z)
- 移除 Unix 时间戳(1740700000)
- 响应字段从 timestamp(int64) 改为 time(string)
- API README 新增「时间格式规范」章节
- 涉及 10 个文档文件
Made-with: Cursor
|
2026-02-28 09:47:42 +08:00 |
|
bujinyuan
|
8c4b40b407
|
docs: 补充全局代码规范、Wire 依赖注入和注释规范到实施计划
- 新增全局规范章节(Go/前端代码注释规范、日志规范、Wire 规范)
- Task 2 添加 Wire 初始化步骤和 Provider 文件
- Task 3 添加 Auth 模块 Wire Provider 创建步骤
- Task 4 添加 Service 层 Wire Provider 更新步骤
- Task 5 添加 Controller Provider 文件
Made-with: Cursor
|
2026-02-27 16:41:46 +08:00 |
|
bujinyuan
|
8bed227060
|
docs: 补充完善日志系统与链路追踪设计
- 架构文档新增第八节:日志系统与链路追踪设计
- Trace ID 全链路追踪(HTTP/WebSocket/跨服务)
- 日志级别规范(DEBUG/INFO/WARN/ERROR/FATAL)
- 结构化日志格式(开发文本/生产JSON)
- 函数级日志规范(入口/出口模式)
- WebSocket 日志追踪
- Go ↔ mediasoup Node 跨服务链路关联
- 敏感信息脱敏规则
- 前端错误上报机制
- 实施计划 Task 2 补充日志系统详细实现步骤
Made-with: Cursor
|
2026-02-27 16:36:57 +08:00 |
|
bujinyuan
|
8361275e70
|
docs: PostgreSQL 版本从 16 升级为 17
所有文档统一更新 PostgreSQL 版本号为 17,
17 版本已发布超过一年,足够稳定且性能更优。
Made-with: Cursor
|
2026-02-27 16:31:36 +08:00 |
|
bujinyuan
|
4458f40025
|
docs: 完善项目文档体系
- 数据库 SQL 所有字段添加 COMMENT 注释,枚举字段详细标注各值含义
- 新增 docs/architecture/ 系统架构文档(分层架构、数据流、演进路径)
- API 文档按模块拆分为 8 个独立文档(auth/contact/im/meeting/notify/admin/websocket)
- 补充 README.md 项目说明(技术栈、架构、快速开始、功能规划、文档导航)
Made-with: Cursor
|
2026-02-27 16:27:07 +08:00 |
|
bujinyuan
|
bed50841dc
|
feat:boke参考
|
2026-02-27 15:56:51 +08:00 |
|
bujinyuan
|
9dcac4a633
|
docs: 第一阶段实施计划(基础设施 + 用户体系)
包含 11 个 Task,从 Docker 环境搭建到 Go 服务骨架、
Auth 模块(Model/DAO/Service/Controller)、uniapp 前端骨架、
登录注册页面、TabBar 框架、Vue3 管理端搭建、用户管理模块。
Made-with: Cursor
|
2026-02-27 15:47:46 +08:00 |
|
bujinyuan
|
d8a10d7e98
|
docs: EchoChat 音视频会议直播系统整体设计方案
包含系统架构、项目结构、数据库设计、通信协议、API 设计、
前端页面结构、关键技术方案和开发分期规划。
Made-with: Cursor
|
2026-02-27 15:44:38 +08:00 |
|
bujinyuan
|
3070acda40
|
feat:大型音视频会议直播系统--项目代码初始化
|
2026-02-27 14:39:03 +08:00 |
|
卜锦元
|
b999bfb63e
|
Initial commit
|
2026-02-27 14:35:21 +08:00 |
|