feat: 实现 API 接口对接功能 (删除作品、作品搜索、修改密码)

按照 TDD 规范完成三个核心功能的接口对接:

## 新增功能

### 1. 删除作品功能 (app/generationRecord.tsx)
- 新增 use-template-generation-actions.ts hook
- 支持单个删除和批量删除作品
- 删除确认对话框
- 删除成功后自动刷新列表
- 完整的错误处理和加载状态

### 2. 作品搜索功能 (app/searchWorksResults.tsx)
- 新增 use-works-search.ts hook
- 替换模拟数据为真实 SDK 接口
- 支持关键词搜索和分类筛选
- 支持分页加载
- 完整的加载、错误、空结果状态处理

### 3. 修改密码功能 (app/changePassword.tsx)
- 新增 use-change-password.ts hook
- 使用 Better Auth 的 changePassword API
- 客户端表单验证(密码长度、确认密码匹配等)
- 成功后自动返回并提示

## 技术实现
- 严格遵循 TDD 规范(先写测试,后写实现)
- 新增 3 个 hooks 和对应的单元测试
- 更新中英文翻译文件
- 更新 jest.setup.js 添加必要的 mock

## 文档
- 新增 api_integration_report.md - API 对接分析报告
- 新增 api_integration_development_plan.md - 开发计划和完成汇总

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
imeepos
2026-01-23 19:15:24 +08:00
parent 4c01d8e9e7
commit e1340fa101
19 changed files with 2273 additions and 299 deletions

View File

@@ -1,6 +1,10 @@
{
"common": {
"noData": "No Data"
"noData": "No Data",
"error": "Error",
"success": "Success",
"confirm": "Confirm",
"cancel": "Cancel"
},
"my": {
"editProfile": "Edit Profile",
@@ -28,7 +32,10 @@
"newPasswordSame": "New password cannot be the same as current password",
"confirmPasswordRequired": "Please confirm new password",
"confirmPasswordMismatch": "New passwords do not match",
"submit": "Confirm Changes"
"submit": "Confirm Changes",
"submitting": "Changing...",
"success": "Password changed successfully",
"apiError": "Failed to change password, please check if current password is correct"
},
"editProfile": {
"namePlaceholder": "Enter nickname",
@@ -116,7 +123,11 @@
"aiVideo": "AI Video",
"originalImage": "Original Image",
"reEdit": "Re-edit",
"regenerate": "Regenerate"
"regenerate": "Regenerate",
"deleteSuccess": "Deleted successfully",
"deleteError": "Delete failed",
"deleteConfirm": "Confirm to delete this record?",
"deleting": "Deleting..."
},
"search": {
"history": "Search History",
@@ -126,7 +137,10 @@
"refresh": "Refresh",
"searchWorks": "Search Generated Works",
"searchWorksPlaceholder": "Enter keywords to search generated works",
"noTags": "No recommended tags"
"noTags": "No recommended tags",
"loading": "Loading...",
"noResults": "No results found",
"errorOccurred": "Search error, please try again later"
},
"templateDetail": {
"title": "Template Details",

View File

@@ -1,6 +1,10 @@
{
"common": {
"noData": "暂无数据"
"noData": "暂无数据",
"error": "错误",
"success": "成功",
"confirm": "确认",
"cancel": "取消"
},
"my": {
"editProfile": "编辑资料",
@@ -28,7 +32,10 @@
"newPasswordSame": "新密码不能与当前密码相同",
"confirmPasswordRequired": "请确认新密码",
"confirmPasswordMismatch": "两次输入的新密码不一致",
"submit": "确认修改"
"submit": "确认修改",
"submitting": "修改中...",
"success": "密码修改成功",
"apiError": "密码修改失败,请检查旧密码是否正确"
},
"editProfile": {
"namePlaceholder": "请输入昵称",
@@ -116,7 +123,11 @@
"aiVideo": "AI 视频",
"originalImage": "原图",
"reEdit": "重新编辑",
"regenerate": "再次生成"
"regenerate": "再次生成",
"deleteSuccess": "删除成功",
"deleteError": "删除失败",
"deleteConfirm": "确认删除该记录?",
"deleting": "删除中..."
},
"search": {
"history": "搜索历史",
@@ -126,7 +137,10 @@
"refresh": "换一换",
"searchWorks": "搜索生成的作品",
"searchWorksPlaceholder": "请输入关键词搜索生成的作品",
"noTags": "暂无推荐标签"
"noTags": "暂无推荐标签",
"loading": "加载中...",
"noResults": "未找到相关作品",
"errorOccurred": "搜索出错,请稍后重试"
},
"templateDetail": {
"title": "模板详情",