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