spwebsite / memory-bank /progress.md
geqintan's picture
update
8d7d15e

进度 (Progress)

已完成的工作

  1. 项目初始化: 根据 sp_website_solution.mdsupabase_solution.md 进行了项目结构调整。
  2. 前端集成:
    • 创建了 static/ 目录。
    • 更新了 static/index.html,添加了用户注册和登录表单,并修正了静态文件引用路径。
    • 创建了 static/style.css
    • 更新了 static/app.js,添加了用户认证状态管理、注册/登录/退出方法,以及在认证后获取代理数据的方法。在成功登录后,将用户认证凭证(API Key)存储在本地存储中。同时,添加了获取用户电子邮件和修改密码的逻辑。
    • 解决了 static/login.htmlstatic/reset-password.html 页面中所有 autocomplete 属性相关的 DOM 警告。
    • 修改了 static/reset-password.html 的前端逻辑,使其不再依赖 reset_token,而是通过邮箱和验证码重置密码。
    • static/js/auth.js 中添加了 sendResetVerificationCoderesetPasswordWithCode 方法,并更新了 authMounted 逻辑。
  3. 后端集成:
    • 更新了 requirements.txt,添加了 supabasepython-dotenv 依赖。
    • 修改了 app.py,使其能够提供静态文件服务,集成了 python-dotenv 来加载环境变量,集成了 Supabase 客户端初始化,添加了 /api/auth/signup/api/auth/login API 端点,用于用户注册和登录,添加了 /api/user/generate-api-key 端点用于生成 API Key,添加了 /api/user/api-keys 端点用于获取 API Key 列表,添加了 /api/user/me 端点用于获取当前登录用户的电子邮件,添加了 /api/auth/change-password 端点用于用户修改密码,并修改了 /api/proxies 示例 API 端点使其需要用户认证,并将表名修改为 sp_proxies
    • 恢复了 app.py 中的 signup 端点,使其使用 supabase.auth.sign_up 进行用户注册,而不是管理员创建用户。
    • 创建了 static/login.html,用于独立的登录/注册页面。
    • 修改了 static/index.html,移除了认证表单,并添加了指向 /login 的链接。
    • 修改了 static/app.js,调整了 Vue.js 逻辑,使其在 index.htmllogin.html 中都能正确工作,并添加了重定向逻辑。
    • 修改了 app.py,添加了 /login 路由,用于返回 static/login.html
    • routes/auth.py 中实现了 /api/auth/send-reset-password-code/api/auth/reset-password-with-code 两个新接口。
    • core/models.py 中定义了 ResetPasswordWithCodeRequest 模型。
    • 修复了 routes/auth.py 中重复的 signup 路由定义。
    • 修改了 core/utils.py 中的 store_verification_codeverify_stored_code 函数,使其支持 prefix 参数,解决了后端报错。
  4. 管理员功能:
    • 实现了管理员图片上传功能(/api/admin/upload-image)。
    • 实现了管理员用户列表的查看、搜索、更新和删除功能(/api/admin/users)。
    • 前端 static/index.html 中添加了 v-if="isAdmin" 控制的“后台管理”链接,并将其移动到“设置”和“关于”之间。
    • 删除了 static/index.html 中重复的“设置”链接和语言选项。
  5. 文档更新: 更新了 README.md,反映了项目的新功能、技术栈和正确的本地运行指南。
  6. Memory Bank 更新: 更新了所有核心 Memory Bank 文件以反映项目最新状态。
  7. Supabase 解决方案文件更新: 更新了 ../solutions/supabase_solution.md
  8. .env 文件生成: 生成了包含 Supabase 凭证占位符的 .env 文件。

剩余的工作

  1. Supabase 数据库设置: 在 Supabase 控制台中创建 airsltd 项目,并设计 sp_proxies 表和 sp_user_api_keys 表(表名前缀为 sp_)。
  2. 前端数据展示: 在 static/app.js 中实现 fetchProxies 方法,使其能够调用后端 /api/proxies 端点并显示从 Supabase 获取的数据。
  3. 功能扩展: 根据实际需求,进一步开发前端界面和后端 API,实现更多功能。
  4. Supabase 认证配置: 在 Supabase 控制台中启用邮件认证,并根据需要配置其他认证提供商。
  5. 测试: 测试用户注册、登录、API Key 生成、代理数据获取、密码修改和忘记密码功能。
  6. 管理员用户设置: 确保管理员用户在 Supabase 数据库中的 is_admin 字段设置为 True,以便前端正确显示“后台管理”链接。

当前状态

项目已完成前后端一体框架的搭建,前端和后端的基本集成已完成,并实现了用户注册、登录、API Key 申请、获取用户电子邮件、修改密码、忘记密码以及管理员的用户和图片管理功能。认证逻辑已分离到独立的登录页面。项目现在可以在本地通过 condauvicorn 命令运行,并准备好与 Supabase 数据库进行实际的数据交互。

已知问题

  • static/app.js 中的 fetchProxies 方法目前是注释掉的,需要手动启用并根据 Supabase 实际数据结构进行调整。
  • Supabase 数据库的 sp_proxies 表和 sp_user_api_keys 表尚未创建,需要手动在 Supabase 控制台完成。
  • 环境变量 SUPABASE_URLSUPABASE_ANON_KEY 需要在本地 .env 文件或部署环境中配置。
  • SUPABASE_SERVICE_ROLE_KEY 需要在 .env 文件中配置,以便后端能够修改用户密码。
  • Supabase 的邮件认证可能需要额外配置,否则用户注册后需要手动确认邮件。