{"openapi":"3.1.0","info":{"title":"企业 AI 知识库","description":"企业 AI 知识库小程序后端","version":"1.0.0"},"paths":{"/api/auth/wx-login":{"post":{"tags":["认证"],"summary":"微信小程序登录","operationId":"wx_login_api_auth_wx_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WxLoginIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WxLoginOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/me":{"get":{"tags":["认证"],"summary":"当前登录身份","operationId":"me_api_auth_me_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Me Api Auth Me Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/profile":{"patch":{"tags":["认证"],"summary":"更新我的头像与昵称","operationId":"update_profile_api_auth_profile_patch","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Profile Api Auth Profile Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/avatar":{"post":{"tags":["认证"],"summary":"上传我的头像","operationId":"upload_avatar_api_auth_avatar_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_avatar_api_auth_avatar_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Avatar Api Auth Avatar Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/avatar/{name}":{"get":{"tags":["认证"],"summary":"读取头像图片","description":"⚠️ 这条**故意不加鉴权**。\n\n小程序的 `<image src>` 不支持自定义请求头，带不了 Authorization，\n加了鉴权头像就永远显示不出来。\n安全性靠路径里的随机串保证（`{user_id}_{随机8位}.{ext}`，猜不到），\n而且头像本身也不是敏感数据 —— 这个取舍是有意的，不要\"顺手\"加上鉴权。","operationId":"get_avatar_api_auth_avatar__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/refresh":{"post":{"tags":["认证"],"summary":"刷新访问令牌","operationId":"refresh_api_auth_refresh_post","parameters":[{"name":"refresh_token","in":"query","required":true,"schema":{"type":"string","title":"Refresh Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Refresh Api Auth Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout_all":{"post":{"tags":["认证"],"summary":"登出我自己的全部会话","operationId":"logout_all_api_auth_logout_all_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Logout All Api Auth Logout All Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/auth/logout":{"post":{"tags":["认证"],"summary":"登出当前会话","operationId":"logout_api_auth_logout_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Logout Api Auth Logout Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company":{"post":{"tags":["企业与成员"],"summary":"创建企业（创建者自动成为企业主账号）","operationId":"create_company_api_company_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCompanyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Company Api Company Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/{company_id}/name":{"put":{"tags":["企业与成员"],"summary":"修改企业名称（企业主账号）","description":"改企业名。\n\n典型场景：测试期随手起的名字（\"测试公司1\"）**不能带到正式环境** ——\n员工在小程序首页、邀请文案、AI 回答的署名里都会看到这个名字。\n\n只允许**企业主账号**改（管理员也不行 —— 这是企业身份，不是权限管理）。","operationId":"rename_company_api_company__company_id__name_put","parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"integer","title":"Company Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rename Company Api Company  Company Id  Name Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/my":{"get":{"tags":["企业与成员"],"summary":"我加入的企业列表","operationId":"my_companies_api_company_my_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response My Companies Api Company My Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/roles":{"get":{"tags":["企业与成员"],"summary":"可选角色清单","operationId":"roles_api_company_roles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Roles Api Company Roles Get"}}}}}}},"/api/company/{company_id}/invite":{"post":{"tags":["企业与成员"],"summary":"生成邀请码（企业主/管理员）","operationId":"create_invite_api_company__company_id__invite_post","parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"integer","title":"Company Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Invite Api Company  Company Id  Invite Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/invite/{token}/qrcode":{"get":{"tags":["企业与成员"],"summary":"邀请用的小程序码","description":"生成邀请专用的小程序码 —— 同事**扫码直接进小程序并自动填好邀请码**。\n\n⚠️ 这条**故意不加鉴权**：小程序的 `<image src>` 带不了 Authorization 头，\n加了鉴权二维码就永远显示不出来。\n\n不加鉴权也安全：路径里的 `token` 就是邀请码本身（16 字节随机），\n而邀请码本来就是要发给别人的东西 —— 能拿到它就等于已经被邀请了。\n\n失败时返回 404 而不是 500：小程序还没发布 / 微信接口抖动都可能失败，\n前端据此降级成\"只显示邀请码文字\"，不该让整个邀请流程卡住。","operationId":"invite_qrcode_api_company_invite__token__qrcode_get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/join":{"post":{"tags":["企业与成员"],"summary":"用邀请码加入企业","operationId":"join_api_company_join_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JoinIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Join Api Company Join Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/members":{"get":{"tags":["企业与成员"],"summary":"成员列表","operationId":"list_members_api_company_members_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Members Api Company Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/members/{member_id}/status":{"get":{"tags":["企业与成员"],"summary":"查询成员状态","operationId":"member_status_api_company_members__member_id__status_get","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Member Status Api Company Members  Member Id  Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/members/{member_id}/remark":{"put":{"tags":["企业与成员"],"summary":"给成员设置备注名（管理员）","description":"管理员给员工起一个便于辨认的备注名，会优先于用户自己设的微信昵称显示。\n\n注意：这里改的是**本企业内**的显示名，不会影响用户在其他企业的显示，\n也不会改动用户自己的微信昵称。","operationId":"set_member_remark_api_company_members__member_id__remark_put","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemarkIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Member Remark Api Company Members  Member Id  Remark Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/members/{member_id}/remove":{"post":{"tags":["企业与成员"],"summary":"移除成员（立即失效）","operationId":"remove_member_api_company_members__member_id__remove_post","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RemoveIn"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Remove Member Api Company Members  Member Id  Remove Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/members/batch_remove":{"post":{"tags":["企业与成员"],"summary":"批量移除成员","operationId":"batch_remove_api_company_members_batch_remove_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRemoveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Batch Remove Api Company Members Batch Remove Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/members/{member_id}/restore":{"post":{"tags":["企业与成员"],"summary":"恢复成员","operationId":"restore_member_api_company_members__member_id__restore_post","parameters":[{"name":"member_id","in":"path","required":true,"schema":{"type":"integer","title":"Member Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Restore Member Api Company Members  Member Id  Restore Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/operation_logs":{"get":{"tags":["企业与成员"],"summary":"操作日志","operationId":"operation_logs_api_company_operation_logs_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Operation Logs Api Company Operation Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/company/stats":{"get":{"tags":["企业与成员"],"summary":"使用统计（占位，后续接真实数据）","operationId":"stats_api_company_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Stats Api Company Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triggers/match":{"post":{"tags":["触发词精准回答"],"summary":"用问题匹配标准答案（员工端，命中即直接返回，不调 AI）","operationId":"match_trigger_api_triggers_match_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MatchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Match Trigger Api Triggers Match Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triggers":{"get":{"tags":["触发词精准回答"],"summary":"触发词列表","operationId":"list_triggers_api_triggers_get","parameters":[{"name":"keyword","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Keyword"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"enabled","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Triggers Api Triggers Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["触发词精准回答"],"summary":"新增单条触发词","operationId":"create_trigger_api_triggers_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Trigger Api Triggers Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triggers/{trigger_id}":{"put":{"tags":["触发词精准回答"],"summary":"修改触发词","operationId":"update_trigger_api_triggers__trigger_id__put","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"integer","title":"Trigger Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TriggerIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Trigger Api Triggers  Trigger Id  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["触发词精准回答"],"summary":"删除触发词","operationId":"delete_trigger_api_triggers__trigger_id__delete","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"integer","title":"Trigger Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Trigger Api Triggers  Trigger Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triggers/{trigger_id}/toggle":{"post":{"tags":["触发词精准回答"],"summary":"启用 / 停用","operationId":"toggle_trigger_api_triggers__trigger_id__toggle_post","parameters":[{"name":"trigger_id","in":"path","required":true,"schema":{"type":"integer","title":"Trigger Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ToggleIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Toggle Trigger Api Triggers  Trigger Id  Toggle Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triggers/import":{"post":{"tags":["触发词精准回答"],"summary":"导入 WPS/Excel 知识表","operationId":"import_triggers_api_triggers_import_post","parameters":[{"name":"mode","in":"query","required":false,"schema":{"type":"string","pattern":"^(upsert|insert_only)$","default":"upsert","title":"Mode"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_triggers_api_triggers_import_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Import Triggers Api Triggers Import Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/triggers/template":{"get":{"tags":["触发词精准回答"],"summary":"下载导入模板","operationId":"download_template_api_triggers_template_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/image/{company_id}/{doc_id}/{name}":{"get":{"tags":["知识库"],"summary":"读取文档里的图片","description":"把文档里提取出来的图片吐给前端 —— 员工问「线包」时要能看到那张图。\n\n⚠️ **这条故意不加鉴权。**\n小程序的 `<image src>` 不支持自定义请求头，带不了 Authorization，\n加了鉴权图片就永远显示不出来。\n\n安全性靠两点：\n  1. 文件名带 8 位随机串（见 index_document 里生成 key 的地方），\n     光靠猜文档 id 遍历不到别人的资料\n  2. 这里做严格的路径校验，挡住 `..` 之类的穿越尝试\n\n这个取舍是有意的，**不要\"顺手\"给它加上鉴权** —— 加了图就挂了。","operationId":"get_document_image_api_knowledge_image__company_id___doc_id___name__get","parameters":[{"name":"company_id","in":"path","required":true,"schema":{"type":"integer","title":"Company Id"}},{"name":"doc_id","in":"path","required":true,"schema":{"type":"integer","title":"Doc Id"}},{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents/{document_id}/download":{"get":{"tags":["知识库"],"summary":"下载文档原文件","description":"下载文档原文件 —— 员工看到来源后想翻原表时用。\n\n**这条是有鉴权的**（和图片接口不同）：\n`wx.downloadFile` **支持自定义请求头**，小程序端会把 Authorization 带上，\n所以这里可以正常校验权限，不像 `<image src>` 那样被迫放开。\n\n⚠️ 微信打开 Excel **不能定位到指定行** —— `wx.openDocument` 没这个能力。\n所以前端要把「工作表 + 第几行」**显示在按钮旁边**，让员工自己滚过去。","operationId":"download_document_api_knowledge_documents__document_id__download_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents":{"post":{"tags":["知识库"],"summary":"上传文档（员工需审核，管理员直接入库）","description":"上传文档。\n\n**权限设计（关键）**：\n  · 管理员 / 企业主账号上传 → **直接建索引入库**（他有这个职权）\n  · 普通员工上传           → 只存文件，状态置 PENDING_REVIEW，**不建索引**\n                            等管理员审核通过后才入库\n\n为什么员工上传不立刻索引：**审核没通过的资料绝不能进向量库**，\n否则员工随手传个草稿、过期文件、甚至错误资料，AI 就能拿去回答，\n而\"审核\"就成了摆设。所以把\"入库\"这一步挪到 approve 时做。","operationId":"upload_document_api_knowledge_documents_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_document_api_knowledge_documents_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Document Api Knowledge Documents Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["知识库"],"summary":"文档列表","description":"文档列表。\n\n· 管理员/企业主 → 看本公司全部\n· 普通员工      → **只能看自己上传的**（能跟踪审核进度，但看不到别人的档案）\n\n`status=PENDING_REVIEW` 用来拉「待我审核」列表。","operationId":"list_documents_api_knowledge_documents_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"mine","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Mine"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Documents Api Knowledge Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents/{document_id}/review":{"post":{"tags":["知识库"],"summary":"审核员工上传的资料（管理员）","description":"管理员审核员工上传的资料。\n\n· **通过** → 这时才真正解析、切块、向量化入库\n· **驳回** → 状态置 REJECTED，`note` 里必须写清楚原因，员工才知道怎么改\n\n员工上传时文件已经存好了（只是没索引），所以通过时不用重新上传。","operationId":"review_document_api_knowledge_documents__document_id__review_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Review Document Api Knowledge Documents  Document Id  Review Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents/{document_id}/chunks":{"get":{"tags":["知识库"],"summary":"查看某个文档切出的知识块","operationId":"list_chunks_api_knowledge_documents__document_id__chunks_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Chunks Api Knowledge Documents  Document Id  Chunks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents/{document_id}/reindex":{"post":{"tags":["知识库"],"summary":"重新建立索引","operationId":"reindex_document_api_knowledge_documents__document_id__reindex_post","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Reindex Document Api Knowledge Documents  Document Id  Reindex Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/documents/{document_id}":{"delete":{"tags":["知识库"],"summary":"删除文档及其知识块","description":"删除文档。\n\n权限：管理员可删本公司任何文档；**普通员工只能撤回自己还没被审核的那一份**\n（传错了想重传，总不能让他去找管理员）。已入库的资料员工删不掉 ——\n那是全公司共用的知识，得管理员来处理。","operationId":"delete_document_api_knowledge_documents__document_id__delete","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"integer","title":"Document Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Document Api Knowledge Documents  Document Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/search":{"post":{"tags":["知识库"],"summary":"RAG 检索（只返回命中的知识块，不调 AI）","operationId":"search_api_knowledge_search_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Api Knowledge Search Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/knowledge/stats":{"get":{"tags":["知识库"],"summary":"知识库概况","operationId":"knowledge_stats_api_knowledge_stats_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Knowledge Stats Api Knowledge Stats Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/chat":{"post":{"tags":["AI 问答"],"summary":"提问（触发词优先 → RAG → AI）","operationId":"chat_api_ai_chat_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Chat Api Ai Chat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/conversations":{"get":{"tags":["AI 问答"],"summary":"会话列表（员工看自己，管理员可看全员）","description":"提问记录列表。\n\n**可见范围**：\n  · 普通员工        → 只能看自己的\n  · 管理员/企业主    → `scope=all` 时能看本企业全部（看谁问过什么、答得怎么样）\n                     `scope=mine`（默认）仍然只看自己的\n\n默认给 mine 是有意的：管理员平时也是普通用户，默认翻自己的更顺手，\n想看全员时主动切一下就行。","operationId":"list_conversations_api_ai_conversations_get","parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","default":"mine","title":"Scope"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"size","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Size"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Conversations Api Ai Conversations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/conversations/batch-delete":{"post":{"tags":["AI 问答"],"summary":"批量删除会话（管理员）","description":"一次删多条。**只有管理员/企业主能用。**\n\n为什么员工连自己的都不能删：提问记录是**审计材料** ——\n万一出了纠纷（\"我问过这个问题，AI 答错了\"），记录没了就查无对证。\n员工可以随便问，但删不删由管理员定。","operationId":"batch_delete_conversations_api_ai_conversations_batch_delete_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchDeleteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Batch Delete Conversations Api Ai Conversations Batch Delete Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/conversations/{conversation_id}":{"get":{"tags":["AI 问答"],"summary":"会话详情与消息","operationId":"get_conversation_api_ai_conversations__conversation_id__get","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"integer","title":"Conversation Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Conversation Api Ai Conversations  Conversation Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["AI 问答"],"summary":"删除会话","description":"删一条会话。**只有管理员/企业主能用**（原因见批量删除那条的注释）。\n\n管理员可以删本企业的任意一条 —— 他能在\"全员记录\"里看到，自然也该能清理。","operationId":"delete_conversation_api_ai_conversations__conversation_id__delete","parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"integer","title":"Conversation Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Conversation Api Ai Conversations  Conversation Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/memories":{"get":{"tags":["AI 问答"],"summary":"我的长期记忆","operationId":"list_memories_api_ai_memories_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Memories Api Ai Memories Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["AI 问答"],"summary":"写入一条长期记忆","operationId":"put_memory_api_ai_memories_post","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemoryIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Put Memory Api Ai Memories Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/memories/{key}":{"delete":{"tags":["AI 问答"],"summary":"删除一条长期记忆","operationId":"del_memory_api_ai_memories__key__delete","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Del Memory Api Ai Memories  Key  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/models":{"get":{"tags":["AI 问答"],"summary":"可选模型列表（管理员）","operationId":"list_models_api_ai_models_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Models Api Ai Models Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ai/config":{"get":{"tags":["AI 问答"],"summary":"当前 AI 与检索配置（管理员）","operationId":"ai_config_api_ai_config_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ai Config Api Ai Config Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["系统"],"summary":"健康检查与上线自检","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/":{"get":{"tags":["系统"],"summary":"根路径","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Root  Get"}}}}}}}},"components":{"schemas":{"BatchDeleteIn":{"properties":{"ids":{"items":{"type":"integer"},"type":"array","maxItems":500,"minItems":1,"title":"Ids"}},"type":"object","required":["ids"],"title":"BatchDeleteIn"},"BatchRemoveIn":{"properties":{"member_ids":{"items":{"type":"integer"},"type":"array","title":"Member Ids"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","required":["member_ids"],"title":"BatchRemoveIn"},"Body_import_triggers_api_triggers_import_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":".xlsx / .xlsm 表格"}},"type":"object","required":["file"],"title":"Body_import_triggers_api_triggers_import_post"},"Body_upload_avatar_api_auth_avatar_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_avatar_api_auth_avatar_post"},"Body_upload_document_api_knowledge_documents_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File","description":"Word / PDF / Excel / PPT / TXT / Markdown"}},"type":"object","required":["file"],"title":"Body_upload_document_api_knowledge_documents_post"},"ChatIn":{"properties":{"question":{"type":"string","maxLength":2000,"minLength":1,"title":"Question"},"conversation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Conversation Id"},"top_k":{"type":"integer","title":"Top K","description":"0 表示用配置里的 RAG_TOP_K","default":0},"use_ai":{"type":"boolean","title":"Use Ai","description":"false 时只做检索、不调 AI","default":true}},"type":"object","required":["question"],"title":"ChatIn"},"CreateCompanyIn":{"properties":{"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"CreateCompanyIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InviteIn":{"properties":{"role":{"type":"string","title":"Role","default":"工厂员工"},"expires_in":{"type":"integer","title":"Expires In","description":"秒","default":604800},"max_uses":{"type":"integer","title":"Max Uses","default":1}},"type":"object","title":"InviteIn"},"JoinIn":{"properties":{"invite_token":{"type":"string","title":"Invite Token"}},"type":"object","required":["invite_token"],"title":"JoinIn"},"MatchIn":{"properties":{"question":{"type":"string","minLength":1,"title":"Question"},"top":{"type":"integer","title":"Top","default":5},"min_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Score"}},"type":"object","required":["question"],"title":"MatchIn"},"MemoryIn":{"properties":{"key":{"type":"string","maxLength":64,"minLength":1,"title":"Key"},"value":{"type":"string","minLength":1,"title":"Value"}},"type":"object","required":["key","value"],"title":"MemoryIn"},"ProfileIn":{"properties":{"nick_name":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Nick Name"},"avatar_url":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"Avatar Url"}},"type":"object","title":"ProfileIn","description":"更新自己的头像 / 昵称。\n\n⚠️ 微信 2022-10 之后**不允许静默获取**用户头像昵称（getUserProfile 已废弃），\n只能由用户主动提供：\n  · 头像：<button open-type=\"chooseAvatar\">，拿到临时文件路径后上传\n  · 昵称：<input type=\"nickname\">\n所以小程序里要**首次登录后引导用户设置一次**，否则员工列表里只有\"用户 N\"。"},"RemarkIn":{"properties":{"remark":{"type":"string","maxLength":64,"title":"Remark","default":""}},"type":"object","title":"RemarkIn"},"RemoveIn":{"properties":{"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"}},"type":"object","title":"RemoveIn"},"RenameIn":{"properties":{"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"RenameIn"},"ReviewIn":{"properties":{"action":{"type":"string","pattern":"^(approve|reject)$","title":"Action"},"note":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Note"}},"type":"object","required":["action"],"title":"ReviewIn"},"SearchIn":{"properties":{"question":{"type":"string","minLength":1,"title":"Question"},"top_k":{"type":"integer","title":"Top K","default":8},"document_ids":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Document Ids"}},"type":"object","required":["question"],"title":"SearchIn"},"ToggleIn":{"properties":{"is_enabled":{"type":"boolean","title":"Is Enabled"}},"type":"object","required":["is_enabled"],"title":"ToggleIn"},"TriggerIn":{"properties":{"trigger_word":{"type":"string","maxLength":128,"minLength":1,"title":"Trigger Word"},"answer":{"type":"string","minLength":1,"title":"Answer"},"synonyms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Synonyms"},"keywords":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Keywords"},"question":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Question"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"product":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"priority":{"type":"integer","title":"Priority","default":0},"is_enabled":{"type":"boolean","title":"Is Enabled","default":true}},"type":"object","required":["trigger_word","answer"],"title":"TriggerIn"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WxLoginIn":{"properties":{"code":{"type":"string","title":"Code","description":"wx.login 拿到的 code"},"company_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Company Id","description":"不传则返回该用户名下企业列表"},"device_info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Info"}},"type":"object","required":["code"],"title":"WxLoginIn"},"WxLoginOut":{"properties":{"need_choose_company":{"type":"boolean","title":"Need Choose Company"},"companies":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Companies","default":[]},"access_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Token"},"expires_in":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expires In"},"refresh_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"},"user":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"User"},"member":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Member"}},"type":"object","required":["need_choose_company"],"title":"WxLoginOut"}}}}