## 智慧豆工具设计文档 时间:2024年 6 月 25 日 是时候给智慧豆做个工具了。 这里是 Judy 玉洁同学做的需求设计:[智慧豆需求设计](https://ixx707y5ij.feishu.cn/docx/FImLdNkrWoDgtax2O3vc7C6Pnif?from=from_copylink) ### 1. 一些想法: 我们每个月记录智慧豆,应该不用那么精细化,只是为了方便以后查询用,同学也不会“豆豆必较”。 按照现在的理解,每条记录记一个总数,然后附加一个说明,应该就 可以满足现有的需求。 例如: ^ 记录 ^ 姓名 ^ 豆豆数 ^ 原因 ^ 时间 ^ | 1 | 秀秀 | 120 | 金刚村村长 | 202405 | | 2 | 秀秀 | 7 | 福田区7天日行一善 | 202405 | | 3 | haitao | 80 | data analyze | 202406 | | 4 | ... | ... | ... | ... | 有两个方案可以考虑,是不同的方向。 1. 尽量把字段设置的细一点,例如有许多的 job\_id,每个不同的板块、不同的角色,会形成不同的 Job\_id 。每个 Job\_id 都有标注的智慧豆数。每次登记智慧豆,都要有对应的 job\_id,如果是新增的工作内容,就由管理员添加 Job\_id. 好处是各种细节统计查询很方便,坏处是有点复杂。 2. 每次只用记录基本的信息,就是姓名+豆豆数,然后做一个简单的说明就好。这种方式的好处就是简单,不足是,以后细节统计查询不方便。 或者两者可以组合,对于那些固定的任务角色,我们可以设置 Job_id, 那些比较复杂的逻辑,我们就直接登记一个姓名/豆豆数/人工说明 就好。 我想的是,可以分成两个角色: 1. 申请智慧豆。相当于录入的过程,提供工具,由各个板块自己提交申请。 2. 审核智慧豆。爱豆组看见的是各个板块提交上来的智慧豆申请,然后核实后就点击动过。有问题就做补充。 类似,公司里,每个员工出差回来要提交报销单,自己填写花了多少钱,每一项花费的明细等,提交后,财务做审批,审批通过了,就把报销款打给员工。 咱们可以在每个板块培养一个专门申报智慧豆的同学,通过工具填写申请,提交。爱豆组进行审核,有问题,需要告诉他如何重新提交等等。 还有自动扣智慧豆和自动增加智慧豆的功能设计。 ### 2. 现有的智慧豆如何录入? 已经存在的智慧豆,如果录入到系统? 大体思路: 1. 之前的不用录入那么细致,暂时只用按月录入就好。把一个月的信息,按照一条记录录入。 2. 如果以后有具体需求,也有时间和人力,可以把之前的细节的录入进去。因此问题也不大。 3. 之后的数据,都按照新要求录入。 {{ :jsb:zhihuidou.png|}} ### 3. 设计想法: 有几个工具需要设计: 1. 智慧豆申请(录入工具) 2. 智慧豆审核 3. 智慧豆查询 涉及到权限管理, 1. 所有人默认只能查询自己的智慧豆 1. 爱豆组同学有审核权限,有增加 Job\_id 的权限 1. 板块数据服务同学有申请权限 1. 管理员Admin,有所有权限,分配用户。 1. 数据分析团队,有查询权限。 前期设计和开发,可能不用用户权限,安全性方面,不用过多考虑。实现基本功能,功能没问题了,大家都觉得挺好用的,再把用户权限,用户管理加上。 智慧豆查询部分,有多种需求: 1. 个人查询自己的智慧豆情况 1. 数据分析组,根据各种组合条件查询智慧豆, 1. 按照月汇总 1. 本月智慧豆排序 1. 按照>100 智慧豆的过滤 1. …… 1. 每次查询可以下载,或者生成 pdf 文件。优先级不高 1. 还有别的查询需求吗? 智慧豆审核方面,有写细节: 1. 可以修改每一条记录 1. 可以退回申请 1. 可以通过申请 1. 可以添加某个 job\_id 1. 可以删除某个申请 1. 所有操作,需要有后台记录。 ### 4 chatGPT 根据文档的设计: {{:jsb:pasted:20240626-160907.png}} {{:jsb:pasted:20240626-160924.png}} {{:jsb:pasted:20240626-160942.png}} ```sql CREATE TABLE Users ( user_id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password_hash VARCHAR(255) NOT NULL, name VARCHAR(50) NOT NULL, role VARCHAR(20) NOT NULL, bean_total INT DEFAULT 0, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); INSERT INTO Users (username, password_hash, name, role, bean_total) VALUES ('admin', '$5$j0XLA1mfecbiZlcX$wVFoj7F1fbbxoSWOfwnxZkVcTW/.yUj5WZzhyt/SmK0', 'Admin User', 'admin', 0); ``` ```sql CREATE TABLE Jobs ( job_id INT AUTO_INCREMENT PRIMARY KEY, job_name VARCHAR(50) NOT NULL, default_bean INT NOT NULL, description TEXT, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` ```sql CREATE TABLE WisdomBeanRecords ( record_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, bean_num INT NOT NULL, description TEXT, status VARCHAR(20) NOT NULL, job_id INT, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES Users(user_id), FOREIGN KEY (job_id) REFERENCES Jobs(job_id) ); ``` ```sql CREATE TABLE AutoBeanAdjustments ( adjustment_id INT AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, bean_num INT NOT NULL, reason TEXT, create_time DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES Users(user_id) ); ```