{"openapi":"3.0.3","info":{"title":"pregnancy-tracker pk-server API","description":"Next.js App Router 实现的 REST API。统一响应 `{ code, message, data }`（成功 code=0）。 鉴权：多数接口需 `Authorization: Bearer <JWT>`；管理端接口需管理员 JWT。","version":"1.0.0"},"servers":[{"url":"https://tracker.elfecho.top","description":"导出时指定的服务地址"},{"url":"/","description":"当前站点（浏览器同源，Try it out 默认）"}],"tags":[{"name":"AccountEmail"},{"name":"Admin"},{"name":"Checkup"},{"name":"Diary"},{"name":"Family"},{"name":"Health"},{"name":"Internal"},{"name":"Maternal"},{"name":"Milestone"},{"name":"PregnancyStatus"},{"name":"Storage"},{"name":"User"},{"name":"Voice"},{"name":"Wechat"},{"name":"WechatAuth"},{"name":"WeeklyReport"},{"name":"Weight"}],"paths":{"/api/v1/health":{"get":{"tags":["Health"],"summary":"健康检查","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/checkup/expectant-guide":{"get":{"tags":["Checkup"],"summary":"准妈妈须知（公共）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/user/register":{"post":{"tags":["User"],"summary":"用户注册（返回 accessToken）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/auth/wechat/bind":{"post":{"tags":["WechatAuth"],"summary":"微信小程序：code 恢复已绑定账号（公开）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/auth/wechat/attach":{"post":{"tags":["WechatAuth"],"summary":"微信小程序：绑定当前微信 openid","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/auth/wechat/detach":{"post":{"tags":["WechatAuth"],"summary":"微信小程序：取消微信绑定","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/admin/login":{"post":{"tags":["Admin"],"summary":"管理员登录（返回 admin JWT）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/user/profile":{"get":{"tags":["User"],"summary":"当前用户资料","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"put":{"tags":["User"],"summary":"更新用户资料","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/user/pregnancy-info":{"get":{"tags":["User"],"summary":"孕期概览（孕周等）","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/storage/qiniu/upload-token":{"get":{"tags":["Storage"],"summary":"七牛直传上传凭证（头像等）","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/account/email/status":{"get":{"tags":["AccountEmail"],"summary":"邮箱绑定状态","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/account/email/send-bind":{"post":{"tags":["AccountEmail"],"summary":"发送绑定验证邮件","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/account/email/verify":{"post":{"tags":["AccountEmail"],"summary":"验证码或链接确认绑定","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/account/email/verify-by-token":{"post":{"tags":["AccountEmail"],"summary":"邮件链接验证（公开，绑定/恢复）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/account/email/exchange-handoff":{"post":{"tags":["AccountEmail"],"summary":"H5 验证后 handoff 同步小程序会话（公开）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/wechat/mp-config":{"get":{"tags":["Wechat"],"summary":"H5 打开小程序所需配置（公开）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/account/email/unbind":{"post":{"tags":["AccountEmail"],"summary":"解绑邮箱","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/account/email/recover/send":{"post":{"tags":["AccountEmail"],"summary":"发送账号恢复邮件（公开）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/account/email/recover/verify":{"post":{"tags":["AccountEmail"],"summary":"验证码或链接恢复账号（公开）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/families/current":{"get":{"tags":["Family"],"summary":"当前家庭与成员","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/families/members":{"get":{"tags":["Family"],"summary":"家庭成员列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/families/members/{id}":{"delete":{"tags":["Family"],"summary":"孕妈移除家庭成员","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/families/bootstrap":{"post":{"tags":["Family"],"summary":"创建家庭并引导","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/families/join":{"post":{"tags":["Family"],"summary":"加入家庭","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/checkup":{"get":{"tags":["Checkup"],"summary":"产检记录分页列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"post":{"tags":["Checkup"],"summary":"新建产检记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/checkup/{id}":{"get":{"tags":["Checkup"],"summary":"产检详情","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"put":{"tags":["Checkup"],"summary":"更新产检记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"delete":{"tags":["Checkup"],"summary":"删除产检记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/checkup/schedule/progress":{"get":{"tags":["Checkup"],"summary":"产检时间表阶段进度列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/checkup/schedule/progress/{phaseId}":{"patch":{"tags":["Checkup"],"summary":"更新产检时间表阶段进度","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/checkup/schedule/progress/{phaseId}/report":{"patch":{"tags":["Checkup"],"summary":"回写产检单图片","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/diary":{"get":{"tags":["Diary"],"summary":"日记列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"post":{"tags":["Diary"],"summary":"新建日记","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/diary/{id}":{"get":{"tags":["Diary"],"summary":"日记详情","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"put":{"tags":["Diary"],"summary":"更新日记","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"delete":{"tags":["Diary"],"summary":"删除日记","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/weight":{"get":{"tags":["Weight"],"summary":"体重记录列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"post":{"tags":["Weight"],"summary":"新建体重记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/weight/stats":{"get":{"tags":["Weight"],"summary":"体重统计","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/weight/{id}":{"put":{"tags":["Weight"],"summary":"更新体重记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"delete":{"tags":["Weight"],"summary":"删除体重记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/milestone":{"get":{"tags":["Milestone"],"summary":"里程碑列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"post":{"tags":["Milestone"],"summary":"新建里程碑","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/milestone/{id}":{"get":{"tags":["Milestone"],"summary":"里程碑详情","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"put":{"tags":["Milestone"],"summary":"更新里程碑","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"delete":{"tags":["Milestone"],"summary":"删除里程碑","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/profile/detail":{"get":{"tags":["Maternal"],"summary":"家庭孕妇档案详情","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/profile/upsert":{"post":{"tags":["Maternal"],"summary":"创建/更新孕妇档案","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/vitals/create":{"post":{"tags":["Maternal"],"summary":"新增体征记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/vitals/list":{"get":{"tags":["Maternal"],"summary":"体征记录列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/vitals/latest":{"get":{"tags":["Maternal"],"summary":"最新体征","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/vitals/trend":{"get":{"tags":["Maternal"],"summary":"体征趋势","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/vitals/{id}":{"delete":{"tags":["Maternal"],"summary":"删除或清除体征项","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/fetal-movement/session/start":{"post":{"tags":["Maternal"],"summary":"开始胎动自数会话","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/fetal-movement/session/{id}/tap":{"post":{"tags":["Maternal"],"summary":"胎动自数点击","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/fetal-movement/session/{id}/finish":{"post":{"tags":["Maternal"],"summary":"结束胎动自数会话","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/fetal-movement/today":{"get":{"tags":["Maternal"],"summary":"今日胎动自数","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/fetal-movement/list":{"get":{"tags":["Maternal"],"summary":"胎动自数历史列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/contractions/start":{"post":{"tags":["Maternal"],"summary":"开始宫缩记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/contractions/{id}/finish":{"post":{"tags":["Maternal"],"summary":"结束宫缩记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/contractions/list":{"get":{"tags":["Maternal"],"summary":"宫缩历史列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/contractions/session/active":{"get":{"tags":["Maternal"],"summary":"进行中宫缩","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/contractions/stats":{"get":{"tags":["Maternal"],"summary":"宫缩记录统计","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/contractions/trend":{"get":{"tags":["Maternal"],"summary":"宫缩记录趋势","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/status/latest":{"get":{"tags":["PregnancyStatus"],"summary":"最新语音分析状态","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/status/day":{"get":{"tags":["PregnancyStatus"],"summary":"某日状态记录","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/status/calendar":{"get":{"tags":["PregnancyStatus"],"summary":"状态日历","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/pregnancy/status/history":{"get":{"tags":["PregnancyStatus"],"summary":"状态历史","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/record/audio/upload":{"post":{"tags":["Voice"],"summary":"语音文件上传（multipart）","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}},"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"音频文件"}}}}}}}},"/api/v1/record/audio/list":{"get":{"tags":["Voice"],"summary":"语音记录列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/record/audio/detail":{"get":{"tags":["Voice"],"summary":"语音记录详情","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/record/audio/transcribe":{"post":{"tags":["Voice"],"summary":"触发转写","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/record/audio/parse":{"post":{"tags":["Voice"],"summary":"结构化解析","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/record/audio/analyze":{"post":{"tags":["Voice"],"summary":"完整分析流水线","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/weekly-report/list":{"get":{"tags":["WeeklyReport"],"summary":"孕期周报列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/weekly-report/latest-unread":{"get":{"tags":["WeeklyReport"],"summary":"最新未弹窗周报","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/weekly-report/{id}":{"get":{"tags":["WeeklyReport"],"summary":"周报详情","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/weekly-report/{id}/read":{"post":{"tags":["WeeklyReport"],"summary":"标记周报已读","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/weekly-report/{id}/popup-shown":{"post":{"tags":["WeeklyReport"],"summary":"标记周报弹窗已展示","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/weekly-report/dev/trigger-last-week":{"post":{"tags":["WeeklyReport"],"summary":"开发：一键生成本周周报（周一至当前，仅 development）","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/internal/cron/weekly-report/generate":{"post":{"tags":["Internal"],"summary":"定时生成周报（CRON_SECRET）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/internal/cron/weekly-report/publish":{"post":{"tags":["Internal"],"summary":"定时发布周报（CRON_SECRET）","security":[],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/admin/me":{"get":{"tags":["Admin"],"summary":"当前管理员信息","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/admin/users":{"get":{"tags":["Admin"],"summary":"小程序用户列表","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"post":{"tags":["Admin"],"summary":"创建小程序用户","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/admin/users/{id}":{"get":{"tags":["Admin"],"summary":"小程序用户详情","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}},"patch":{"tags":["Admin"],"summary":"更新小程序用户","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}},"/api/v1/admin/users/delete":{"post":{"tags":["Admin"],"summary":"批量删除小程序用户","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"成功时 JSON 含 code=0 与 data（详见各接口实现）"},"401":{"description":"认证失败（公共接口除外）"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Authorization: Bearer 后接 accessToken（小程序用户或管理员 JWT）"}},"schemas":{"ApiResponse":{"type":"object","required":["code","message","data"],"properties":{"code":{"type":"integer","description":"0 成功；非 0 为业务错误码"},"message":{"type":"string"},"data":{"description":"成功时为业务数据；失败时多为 null"}}}}}}