Files
wts/back/doc/blueprint.md
2026-02-26 19:22:38 +08:00

38 lines
2.5 KiB
Markdown
Raw Permalink 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.

# 报修系统设计细节计划书
## 概述
中山学院网络维护科是一个独立的学生组织,负责校园学生宿舍网络的维护与修理工作。本系统提供学生通过网络进行报修的渠道。
系统依托于微信服务号(公众号)来提供服务使用微信提供的OAuth2.0协议来认证用户每个用户的唯一标识符是用户的微信OpenID。
## 认证
系统使用JWT来管理会话
如果还没有有效的JWT用户首先需要访问`/api/v3p/wx/auth`来获取一个(通常由前端引导)该API会自动引导用户走完微信的流程并将用户重定向到在配置文件里设置的前端页面。
JWT会以Cookie的形式一并发送。前端应该立即将它存储到`LocalStorage`并通过请求头而不是Cookie传递后续的JWT内容。
大部分API都要求前端传递一个有效的JWT在配置文件中可以设置调试模式跳过JWT认证也可以使用`wtstool`生成一个调试用的JWT。
另外用户也可以通过服务号聊天界面操作该系统由于通过这种方式微信传递过来的用户OpenID是可信的所以不走上面所叙述的流程。
## 注册与账户
获取JWT不代表用户是系统的的一个用户系统会为未注册微信签发特殊的JWT除了注册API该JWT无法访问其它需要授权的API。
用户通过访问`/api/v3/register`,将自己的信息`POST`到服务器;服务器会校验用户的合法性,即将用户所输入的姓名和学号与数据库中预先存储的学生信息比对,如果成功即可成功注册。
用户信息包含了住址,签约的运营商和账号等信息,网维成员根据这些信息上门为用户维修。用户可以通过`POST /api/v3/change_profile`修改这些信息。通过`GET /api/v3/view_profile`查看这些信息。
## 工单的管理
用户通过`POST /api/v3/new_ticket`来提交工单,需要包含的信息例如问题发生的时间,问题的类型等,通过`GET /api/v3/get_ticket`可以获取自己的报修记录。可以查看工单的解决状态等信息。
通过`/api/v3/cancel_ticket`可以取消自己的一个报修。
网络维护科的成员通过`/api/v3/filter_tickets`查看用户提交的工单,并可以方便地筛选条件。
工单状态的更新修改例如已解决已取消等通过为工单增加一条关联的trace来实现。API为`/api/v3/new_repair_trace`
<<<<<<< HEAD
=======
通过`/api/v3/get_traces`可以查询一个工单的所有trace
>>>>>>> 448b3d34a7e5c2b1e071fdd4c8c881f3c9cccf70