## 现状确认 - 后端接口已对接:`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`,使“下一步”即提交。 - 在按钮文案上提示“提交并进入下一步”,并在未填必填项时给出校验提示(阻止推进)。 ## 验收标准 - 在管理端,创建活动流程点击`提交`或(改造后)点击`下一步`能成功发起请求并进入下一步;错误时有明确提示。 - 非超级管理员或参数缺失时,前端能正确显示后端返回的错误信息。