bindbox-game/.trae/documents/活动创建“下一步”无响应的排查与改造方案.md
邹方成 2a89a1ab9d
Some checks failed
Build docker and publish / linux (1.24.5) (push) Failing after 39s
feat(admin): 更新前端资源文件及修复相关功能
refactor(service): 修改banner和guild删除逻辑为软删除
fix(service): 修复删除操作使用软删除而非物理删除

build: 添加SQLite测试仓库实现
docs: 新增奖励管理字段拆分和批量抽奖UI改造文档

ci: 更新CI忽略文件
style: 清理无用资源文件
2025-11-19 01:35:55 +08:00

31 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 现状确认
- 后端接口已对接:`POST /api/admin/activities``internal/router/router.go:78`),控制器 `CreateActivity``internal/api/admin/activities_admin.go:41`)。
- 管理端前端已调用:`createActivity()` 指向 `admin/activities``web/admin/src/api/adminActivities.ts:13`)。
- 向导有两种:
- 独立向导页 `wizard/index.vue``下一步`仅切换步骤(`next()`),提交动作分别由页面内的`提交`按钮触发(`submitActivity/submitIssue/submitRewards`)。
- 管理页弹窗向导 `manage/index.vue``下一步`会调用创建接口然后推进步骤(`nextWizard()`)。
## 可能原因
- 使用了独立向导页,点击`下一步`未触发API预期行为需用`提交`按钮)。
- 请求未通过权限:后端要求超级管理员(`ctx.SessionUserInfo().IsSuper == 1``internal/api/admin/activities_admin.go:56-59`)。
- 请求参数不合法:`name`必填、`activity_category_id`不可为0同文件 15-18, 51-54
- 环境未配置或认证头缺失:`VITE_API_URL` 未指向后端 `/api` 前缀,或 `Authorization` 未带登录后的纯 Token不加 `Bearer`)。
## 排查步骤
1) 打开浏览器 Network在点击`下一步``提交`后确认是否发起 `POST {VITE_API_URL}/api/admin/activities`;查看响应码与返回体。
2) 确认当前页面是弹窗向导还是独立向导:
- 若是独立向导,请使用每步的`提交`按钮;`下一步`只换页不提交。
3) 验证权限与参数:
- 登录账号需 `is_super=1`;否则返回 400 `禁止操作`
- `name``activity_category_id`需填充;分类可通过 `GET /api/admin/activity_categories` 获取。
4) 检查前端环境:
- `VITE_API_URL` 应指向后端根(例如 `http://localhost:8000`),请求工具会拼接 `admin/...``/api/admin/...`
- `Authorization` 头为登录获得的 Token 字符串(无 `Bearer` 前缀)。
## 改造建议(可选)
- 为独立向导页 `wizard/index.vue` 增强交互:在 `next()` 中根据 `active` 自动调用对应的 `submitActivity/submitIssue`,使“下一步”即提交。
- 在按钮文案上提示“提交并进入下一步”,并在未填必填项时给出校验提示(阻止推进)。
## 验收标准
- 在管理端,创建活动流程点击`提交`或(改造后)点击`下一步`能成功发起请求并进入下一步;错误时有明确提示。
- 非超级管理员或参数缺失时,前端能正确显示后端返回的错误信息。