hi,我是熵减,见字如面。

用ChatGPT,可以尝试做很多的事情。

今天我们就来让ChatGPT做为架构师,来帮我们设计一个账号系统吧。

我的实验过程记录如下,与你分享。

用户故事

首先,我们从用户故事开始吧。

提示:我们从用户故事开始,需要设计一个网站的账号系统模型,其中包括账号基础信息实体,邮箱验证实体,手机号验证实体,三方社交绑定实体,密码安全实体,登录记录实体。

ChatGPT反馈为:

数据模型

确认没有问题,就可以将次转化为一个数据模型啦。

提示:OK,将以上设计转化为一个数据模型,并使用markdown表格的形式来描述输出

ChatGPT输出为:

类关系图

模型确认后,就可以输出类关系图啦。

我输入的提示为:帮我输出类之间的关系图,用markdown的格式,输出符合Mermaid的脚本代码

ChatGPT反馈为:

classDiagram
class Account {
+username: string
+password: string
+create_time: datetime
+update_time: datetime
}
class EmailVerification {
+email: string
+verification_code: string
+is_success: boolean
+create_time: datetime
+update_time: datetime
}
class PhoneVerification {
+phone_number: string
+verification_code: string
+is_success: boolean
+create_time: datetime
+update_time: datetime
}
class ThirdPartyBinding {
+third_party_id: string
+third_party_username: string
+create_time: datetime
+update_time: datetime
}
class PasswordSecurity {
+password_security_id: string
+password_strength: string
+password_salt: string
+create_time: datetime
+update_time: datetime
}
class LoginRecord {
+login_time: datetime
+login_ip: string
+create_time: datetime
+update_time: datetime
}
Account "1" --> "0..1" EmailVerification
Account "1" --> "0..1" PhoneVerification
Account "1" --> "0..*" ThirdPartyBinding
Account "1" --> "1" PasswordSecurity
Account "1" --> "0..*" LoginRecord

以上代码经过markdown渲染后的图片为:

增加类属性

此时,发现Account类中缺失了部分需要的属性,那就可以让ChatGPT类增加吧。

提示:Account实体类中,需要增加一个state状态属性,一个email_ver状态属性,一个phone_ver的状态属性,请将变更后的类关系图,用markdown再次输出

新返回的markdown代码经过渲染后的图片为:

序列图

接下来,我们试一下事务变更的序列图吧。

我输入的提示为:

ChatGPT返回的代码:

sequenceDiagram
participant PhoneVerification
participant Account
participant PhoneVerificationService
participant SMS
PhoneVerification ->> PhoneVerificationService: 验证通过,发送信号
PhoneVerificationService ->> Account: 更新phone_ver属性
PhoneVerificationService ->> SMS: 发送验证码

经过渲染后的图片为:

状态图

接下来,我们生产一个状态图看一下吧。

我输入的提示为:Account的state状态有:新注册,已激活,已注销,被锁定等状态,将这些状态在Mermaid脚本中描述出来,用markdown输出状态转换的代码

ChatGPT返回的代码为:

stateDiagram
[*] --> New: 注册
New --> Active: 邮箱/手机号验证通过
Active --> Locked: 多次输入错误密码
Locked --> Active: 解除锁定
Active --> Deactivated: 注销
Deactivated --> Active: 恢复
Deactivated --> Archived: 数据保留
Locked --> Archived: 数据保留
Archived --> [*]: 数据清理

经过渲染后的图片为:

最后

今天的实验就到这儿啦。

可见,ChatGPT在软件开发中是一个不错的助手,它一家具有了不错的生产能力,帮我们做很多事情。

只要我们在每一个问答的回合中,能给ChatGPT正确的提示,它就可以很好的配合我们来完成任务,我就可以持续的发起并推动接下来的步骤。

接下来可以继续尝试啦。

用ChatGPT,快速设计一个真实的账号系统的更多相关文章

  1. Django快速搭建博客系统

    Django快速搭建博客系统 一.开发环境 Windows 7(64bit) python 3.6   https://www.python.org/ Django 2.0  https://www. ...

  2. 【大前端之打通账号系统】passport应该如何落地?

    前言 之前接入百度账号系统的时候写了一篇博客做研究:[大前端]认识单点登录,出来后才发现,很多小公司其实并没有将账号系统打通,总结一下账号系统没通的原因是: ① 最初设计就没想过身份认证应该做整合 ② ...

  3. 程序小白如何快速开发OA办公系统

    对于企业开发oa办公系统,成本高,周期长.有些企业花高价购买,购买后受制于软件商,很多功能只能按原来设计需求走,无法升级或者升级慢.这些由于软件商的开发效率低难以及时地响应企业的需求变化,所以就有可能 ...

  4. 可视化工作流程设计开发OA系统,一两个程序员就搞定!

    随着信息化的发展,越来越多的公司老板要求实现企业审批流程化.一个公司在初期,人员少,流程简单,员工也会经常不按工作流程来走,甚至有些跨部门的工作因为关系原因,没有走工作流程就实施,导致后期出现问题或者 ...

  5. 如何快速开发Winform应用系统

    在实际的业务中,往往还有很多需要使用Winform来开发应用系统的,如一些HIS.MIS.MES等系统,由于Winform开发出来的系统界面友好,响应快速,开发效率高等各方面原因,还有一些原因是独立的 ...

  6. 前端学习 node 快速入门 系列 —— 报名系统 - [express]

    其他章节请看: 前端学习 node 快速入门 系列 报名系统 - [express] 最简单的报名系统: 只有两个页面 人员信息列表页:展示已报名的人员信息列表.里面有一个报名按钮,点击按钮则会跳转到 ...

  7. 使用OpenLDAP构建基础账号系统

    LDAP - Lightweight Directory Access Protocol,对该协议的具体应用,常见的是微软的Active Directory服务和Linux上的OpenLDAP组件. ...

  8. Java核心知识点学习----线程中如何创建锁和使用锁 Lock,设计一个缓存系统

    理论知识很枯燥,但这些都是基本功,学完可能会忘,但等用的时候,会发觉之前的学习是非常有意义的,学习线程就是这样子的. 1.如何创建锁? Lock lock = new ReentrantLock(); ...

  9. 八幅漫画理解使用JSON Web Token设计单点登录系统

    用jwt这种token的验证方式,是不是必须用https协议保证token不被其他人拦截? 是的.因为其实只是Base64编码而已,所以很容易就被解码了.如果你的JWT被嗅探到,那么别人就可以相应地解 ...

  10. Meteor:用户账号管理添加密码和微博weibo账号系统支持

    Meteor账户系统构建与accounts-base包之上,并为publish和methods提供userId的顶层支持.核心包提供的功能有:数据库中的用户记录支持:额外的包提供密码安全验证:第三方登 ...

随机推荐

  1. 【Devexpress】Gridcontorl的列隐藏后再显示位置发生了变化

    首先在可视化界面中排序好每个列的显示位置索引 在窗口初始化时进行记录在字段中 /// <summary> /// 当前显示列的位置索引,用于隐藏后显示进行重新排序位置 /// </s ...

  2. 6 STL-vector

    ​ 重新系统学习c++语言,并将学习过程中的知识在这里抄录.总结.沉淀.同时希望对刷到的朋友有所帮助,一起加油哦!  生命就像一朵花,要拼尽全力绽放!死磕自个儿,身心愉悦! 写在前面,本篇章主要介绍S ...

  3. QMetaObject::connectSlotsByName: No matching signal for xxx

    问题描述 这个问题是没有与 xxx 这个槽函数匹配的信号,但是我做了 QMetaObject::connectSlotsByName(this);, 自动连接.并且确保了函数名和信号名是没有错误的,还 ...

  4. Windows Terminal ssh 远程 Linux 和使用 Git

    Windows Terminal ssh 远程 Linux 和使用 Git Windows Terminal (中文:终端)是 Win11 自带的 Terminal.可以添加配置文件,然后把远程主机放 ...

  5. 【ASP.NET Core】MVC控制器的各种自定义:IActionHttpMethodProvider 接口

    IActionHttpMethodProvider 接口的结构很简单,实现该接口只要实现一个属性即可--HttpMethods.该属性是一个字符串序列. 这啥意思呢?这个字符串序列代表的就是受支持的 ...

  6. NeurIPS 2022:基于语义聚合的对比式自监督学习方法

    摘要:该论文将同一图像不同视角图像块内的语义一致的图像区域视为正样本对,语义不同的图像区域视为负样本对. 本文分享自华为云社区<[NeurIPS 2022]基于语义聚合的对比式自监督学习方法&g ...

  7. [常用工具] PyAutoGUI使用教程

    PyAutoGUI使用教程 目录 PyAutoGUI使用教程 1 基础知识 2 一般函数 3 故障保险 4 鼠标函数 4.1 鼠标移动 4.2 鼠标拖动 4.3 鼠标单击 4.4 鼠标滚动 4.5 鼠 ...

  8. [python] 向量检索库Faiss使用指北

    Faiss是一个由facebook开发以用于高效相似性搜索和密集向量聚类的库.它能够在任意大小的向量集中进行搜索.它还包含用于评估和参数调整的支持代码.Faiss是用C++编写的,带有Python的完 ...

  9. 学习.NET MAUI Blazor(四)、路由

    Web应用程序的可以通过URL将多个页面串联起来,并且可以互相跳转.Web应用主要是使用a标签或者是服务端redirect来跳转.而现在流行的单页应用程序 (SPA) ,则通过路由(Router)来实 ...

  10. Jasypt与Apollo一起使用造成Apollo热更新失效问题分析

    背景 近日业务同学反映在Apollo界面更改配置后, 服务中对应变量的值却没有改变 相关配置key定义如下: @ApolloJsonValue("${apollo.config.map:{} ...