训练站点项目功能开发记录

摘要

本文档是TrainingHome训练站点项目的功能开发完成状态记录,包含当前项目架构说明、已完成的功能完善项、存在的核心问题、前后端完善建议、落地路线与环境配置说明,当前本地服务已成功启动运行。

架构概览

  • 前端为单页应用,构建产物静态资源存放于dist目录;使用SQL.js在浏览器端维护SQLite表user_progress,并将快照持久化到浏览器localStorage。
  • 登录流程通过本地服务代理到内部鉴权接口,登录完成后前端将用户信息写入localStorage的training-system-user字段。
  • 后端server.js为轻量静态服务与登录代理,不包含服务端数据库或用户态存储。

关键要点

已完成完善项

  1. 后端安全与配置增强
    • 新增端口、登录代理目标、允许来源等环境变量配置
    • 增加基础安全响应头、CORS支持与OPTIONS预检处理
    • /api/login接口添加IP级别简单限流,规则为每IP每分钟120次请求
  2. 登录会话优化
    • 代理解析登录返回的token后,设置HttpOnly、SameSite=Lax的会话Cookietraining_user,存储用户id与token,用于后续服务端会话识别
  3. Supabase集成准备
    • 新增Supabase集成技能文档,提供环境变量配置模板,为后续集成Supabase的数据库、向量、存储、鉴权能力做好准备

当前存在的主要问题

  • 数据仅持久化在浏览器localStorage,不支持多用户并发、数据隔离,清理缓存或更换设备会导致数据丢失
  • 端到端鉴权能力较弱,前端存储token,缺少服务端角色权限控制与资源授权校验
  • 服务端未落地多用户协作相关数据模型,无任务实体、项目、分配、评论等核心数据结构
  • 仅登录代理有基础限流,整体缺少服务端日志、审计、全局限速策略
  • 安全合规存在不足:为兼容前端构建放宽了CSP规则,缺少CSRF防护与输入校验,Cookie未绑定会话存储

完善建议

前端完善方向

  • 改造登录流程,核心用户态由服务端会话维护,前端仅保留短期访问令牌,减少localStorage存储的敏感内容;所有任务数据统一通过服务端API获取提交
  • 补充核心任务视图与多人协作功能,新增我的任务、团队任务、看板视图、搜索筛选、评论、@提及、附件上传、变更日志等功能
  • 添加统一错误边界与用户提示,支持前端错误事件上报服务端

后端完善方向

  • 迁移数据到服务端数据库(推荐Supabase Postgres),建立用户、项目、任务、分配、评论、附件、审计日志等核心数据表,提供分页过滤排序API
  • 搭建服务端鉴权权限体系,通过服务端会话或JWT实现角色与项目级权限控制,所有API增加统一授权校验
  • 支持附件存储与任务语义检索,使用Supabase Storage管理附件,为任务内容生成向量索引支持语义搜索
  • 强化安全与可观察性,增加访问日志、操作审计、全局限流、输入校验,优化CSP规则并添加CSRF防护

落地路线

  1. 第一步:实现后端任务核心数据最小API与会话鉴权,前端切换为API调用
  2. 第二步:将user_progress与任务进度迁移到服务端持久层,移除前端SQL.js本地持久化
  3. 第三步:添加角色权限、审计、附件上传功能,接入向量检索能力
  4. 第四步:强化安全策略与可观察性,优化性能与用户体验

配置与验证

环境变量

支持配置的环境变量包括:PORTLOGIN_HOSTLOGIN_PORTALLOWED_ORIGINENABLE_COOKIE,以及Supabase相关配置SUPABASE_URLSUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEYSUPABASE_DB_URLSUPABASE_PROJECT_ID

当前验证状态

  • 本地服务已运行,地址:http://localhost:3002/
  • 登录代理已启用限流与安全响应头,成功登录后会设置training_user会话Cookie