forked from wts/wts
38 lines
2.5 KiB
Markdown
38 lines
2.5 KiB
Markdown
# 报修系统设计细节计划书
|
||
## 概述
|
||
中山学院网络维护科是一个独立的学生组织,负责校园学生宿舍网络的维护与修理工作。本系统提供学生通过网络进行报修的渠道。
|
||
|
||
系统依托于微信服务号(公众号)来提供服务,使用微信提供的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
|