训练站点项目功能开发记录
摘要
本文档是TrainingHome训练站点项目的功能开发完成状态记录,包含当前项目架构说明、已完成的功能完善项、存在的核心问题、前后端完善建议、落地路线与环境配置说明,当前本地服务已成功启动运行。
架构概览
- 前端为单页应用,构建产物静态资源存放于
dist目录;使用SQL.js在浏览器端维护SQLite表user_progress,并将快照持久化到浏览器localStorage。 - 登录流程通过本地服务代理到内部鉴权接口,登录完成后前端将用户信息写入localStorage的
training-system-user字段。 - 后端
server.js为轻量静态服务与登录代理,不包含服务端数据库或用户态存储。
关键要点
已完成完善项
- 后端安全与配置增强
- 新增端口、登录代理目标、允许来源等环境变量配置
- 增加基础安全响应头、CORS支持与OPTIONS预检处理
- 为
/api/login接口添加IP级别简单限流,规则为每IP每分钟120次请求
- 登录会话优化
- 代理解析登录返回的token后,设置HttpOnly、SameSite=Lax的会话Cookie
training_user,存储用户id与token,用于后续服务端会话识别
- 代理解析登录返回的token后,设置HttpOnly、SameSite=Lax的会话Cookie
- Supabase集成准备
- 新增Supabase集成技能文档,提供环境变量配置模板,为后续集成Supabase的数据库、向量、存储、鉴权能力做好准备
当前存在的主要问题
- 数据仅持久化在浏览器localStorage,不支持多用户并发、数据隔离,清理缓存或更换设备会导致数据丢失
- 端到端鉴权能力较弱,前端存储token,缺少服务端角色权限控制与资源授权校验
- 服务端未落地多用户协作相关数据模型,无任务实体、项目、分配、评论等核心数据结构
- 仅登录代理有基础限流,整体缺少服务端日志、审计、全局限速策略
- 安全合规存在不足:为兼容前端构建放宽了CSP规则,缺少CSRF防护与输入校验,Cookie未绑定会话存储
完善建议
前端完善方向
- 改造登录流程,核心用户态由服务端会话维护,前端仅保留短期访问令牌,减少localStorage存储的敏感内容;所有任务数据统一通过服务端API获取提交
- 补充核心任务视图与多人协作功能,新增我的任务、团队任务、看板视图、搜索筛选、评论、@提及、附件上传、变更日志等功能
- 添加统一错误边界与用户提示,支持前端错误事件上报服务端
后端完善方向
- 迁移数据到服务端数据库(推荐Supabase Postgres),建立用户、项目、任务、分配、评论、附件、审计日志等核心数据表,提供分页过滤排序API
- 搭建服务端鉴权权限体系,通过服务端会话或JWT实现角色与项目级权限控制,所有API增加统一授权校验
- 支持附件存储与任务语义检索,使用Supabase Storage管理附件,为任务内容生成向量索引支持语义搜索
- 强化安全与可观察性,增加访问日志、操作审计、全局限流、输入校验,优化CSP规则并添加CSRF防护
落地路线
- 第一步:实现后端任务核心数据最小API与会话鉴权,前端切换为API调用
- 第二步:将
user_progress与任务进度迁移到服务端持久层,移除前端SQL.js本地持久化 - 第三步:添加角色权限、审计、附件上传功能,接入向量检索能力
- 第四步:强化安全策略与可观察性,优化性能与用户体验
配置与验证
环境变量
支持配置的环境变量包括:PORT、LOGIN_HOST、LOGIN_PORT、ALLOWED_ORIGIN、ENABLE_COOKIE,以及Supabase相关配置SUPABASE_URL、SUPABASE_ANON_KEY、SUPABASE_SERVICE_ROLE_KEY、SUPABASE_DB_URL、SUPABASE_PROJECT_ID。
当前验证状态
- 本地服务已运行,地址:
http://localhost:3002/ - 登录代理已启用限流与安全响应头,成功登录后会设置
training_user会话Cookie