| # 进度 (Progress) | |
| ## 已完成的工作 | |
| 1. **项目初始化**: 根据 `sp_website_solution.md` 和 `supabase_solution.md` 进行了项目结构调整。 | |
| 2. **前端集成**: | |
| * 创建了 `static/` 目录。 | |
| * 更新了 `static/index.html`,添加了用户注册和登录表单,并修正了静态文件引用路径。 | |
| * 创建了 `static/style.css`。 | |
| * 更新了 `static/app.js`,添加了用户认证状态管理、注册/登录/退出方法,以及在认证后获取代理数据的方法。在成功登录后,将用户认证凭证(API Key)存储在本地存储中。同时,添加了获取用户电子邮件和修改密码的逻辑。 | |
| * 解决了 `static/login.html` 和 `static/reset-password.html` 页面中所有 `autocomplete` 属性相关的 DOM 警告。 | |
| * 修改了 `static/reset-password.html` 的前端逻辑,使其不再依赖 `reset_token`,而是通过邮箱和验证码重置密码。 | |
| * 在 `static/js/auth.js` 中添加了 `sendResetVerificationCode` 和 `resetPasswordWithCode` 方法,并更新了 `authMounted` 逻辑。 | |
| 3. **后端集成**: | |
| * 更新了 `requirements.txt`,添加了 `supabase` 和 `python-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.html` 和 `login.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_code` 和 `verify_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 申请、获取用户电子邮件、修改密码、忘记密码以及管理员的用户和图片管理功能。认证逻辑已分离到独立的登录页面。项目现在可以在本地通过 `conda` 和 `uvicorn` 命令运行,并准备好与 Supabase 数据库进行实际的数据交互。 | |
| ## 已知问题 | |
| * `static/app.js` 中的 `fetchProxies` 方法目前是注释掉的,需要手动启用并根据 Supabase 实际数据结构进行调整。 | |
| * Supabase 数据库的 `sp_proxies` 表和 `sp_user_api_keys` 表尚未创建,需要手动在 Supabase 控制台完成。 | |
| * 环境变量 `SUPABASE_URL` 和 `SUPABASE_ANON_KEY` 需要在本地 `.env` 文件或部署环境中配置。 | |
| * `SUPABASE_SERVICE_ROLE_KEY` 需要在 `.env` 文件中配置,以便后端能够修改用户密码。 | |
| * Supabase 的邮件认证可能需要额外配置,否则用户注册后需要手动确认邮件。 | |