论证一个观点
观点如下:
群里的朋友都知道,在此之前,我已经利用 GPT 开发了一个手机游戏,而我几乎没有写任何代码。
以下是部分界面:
但它目前是个半成品,因为我太忙了,没有太多时间去做它。
而且为了效率,我选择了 GPT3.5 而不是更加精准的 GPT4。
这次我决定换一些难度低一点,但业务量更多的项目来实践。
并且我会记录所有和 GPT4 沟通的重要路径,把它们写成一个系列的文章。
GPT,告诉我该怎么做?
第一步,我先让 GPT4 告诉我怎么做。
我们得到了 8 个步骤,它们都挺需要,但我认为最复杂的是 2、3、4 步。
第 5 步可以暂且忽略。
第 6 步已经轻车熟路,难度极低。
第 7、8 步后面可以继续使用 GPT4 帮助。
前 3 步的概要设计我只需要花几分钟就能搞定,以下是我的概要设计。
注意,因为有 GPT4 的存在,我们不需要详细设计,只需要概要设计。至于细节,可以在制作的过程中逐步细化。
人工苦力上线,进行概要设计
1. 需求分析:
服务用户是有购物需求的群体。找客户,卖东西,赚差价。我不是主要负责终端的,这部分不需要过度花心思。
2. 系统设计:
在线商城,运行在 Web 环境。用户主要通过微信点击链接或者扫描图片二维码进入购买商品。
商城至少有客户端和管理端两个系统。
系统包括员工、客户、充值、产品、订单、活动几个核心模块。
3. 技术选型:
-
开发语言:TypeScript。
-
后端:Nextjs、Prisma、PostgreSQL。
-
前端:Nextjs、TailwindCSS。
后面的过程主要都是在做第 2 步 和第 4 步,也就是设计和开发这个步骤的事。
用户故事
我们知道系统设计最主要的是三个东西的设计,一个是产品设计、一个是数据结构设计、一个是 UI 设计。
产品设计是需要满足一定规则的,所以不适合用 GPT 来生成。
所以我先来设计基本的流程。
按照敏捷开发中的用户故事的方式来设计。
角色:管理员、员工、客户。
需求:管理员和员工卖商品、客户买商品。
收益:管理员赚钱、客户赚工资、客户满足购物欲。
管理员的用户故事:
故事 1: 作为管理员,我想登陆系统,以便于管理员工。
故事 2: 作为管理员,我想管理员工,以便于让员工帮我管理系统。
故事 3: 作为管理员,我想拥有所有权限,以便于管理我的系统。
员工的用户故事:
故事 1: 作为员工,我想管理产品,以便于让客户浏览产品。
故事 2: 作为员工,我想管理订单,以便于知道客户的购物情况。
故事 3: 作为员工,我想管理活动,以便于提高客户的消费率。
故事 4: 作为员工,我想管理客户,以便于处理一些常见事务,比如冻结恶意客户等。
故事 5: 作为员工,我想查看充值,以便于清楚商城的运作情况,并了解客户的消费情况。
客户的用户故事:
故事 1: 作为客户,我想要注册,以便于对商品进行下单。
故事 2: 作为客户,我想要接收验证码,以便于注册账号。
故事 3: 作为客户,我想要填写收货地址,以便于对商品进行下单。
故事 4: 作为客户,我想要购买商品,以便于满足我的购物欲。
虽然看上去内容不多,挺简陋,但我也要花将近半小时来噼里啪啦打这些字。
GPT 上线,完成数据模型设计
接下来设计数据结构。
这一部分 GTP 非常擅长,我们让它来做。
设计管理员、员工、和客户
补充细节:验证码和地址
设计完成之后我发现有一些疏漏。比如没有创建时间和更新时间的字段,也没有验证码和收货地址相关的表。所以又给它提示,让它继续设计。
在此之前,ChatGPT 的一个问题是消息过长会导致消息中断,不过前几天的新版本中增加了 Continue generating 功能,再也不需要输入继续了。
设计产品和活动
接下来继续从管理端的角度设计,先把产品、活动这些东西设计好,再设计 C 端会更容易一些。
开发过商城系统的朋友应该都知道,活动这个模块是最复杂的,因为它的玩法实在是太多了。有些复杂的商城系统还要考虑各个活动之间的冲突问题。
粗略检查了一下,没有什么大问题。
设计充值和订单
最后就是充值表和订单表了,这两个模块相对简单,没什么好说的。
可以看到,虽然我的 prompt 很简单,但是 GPT 却充分考虑到了很多细节。比如它知道一笔订单可能对应多个商品。
这里你可能会问,怎么没有购物车呢。因为我打算把购物车放到前端缓存中。
数据模型就设计完成了。
我把它放到 prisma 项目中试试看。
Oops!有报错。
看看提示,原因是一对一的关系,在定义端必须是唯一字段。而我们却少了 @unique 的唯一字段标识,手动加一下就可以了。
造成这种现象的原因有可能是 GPT4 的知识只到 21 年 9 月份,很多框架和库未来的更新它是不知道的,所以这也算是它的一个缺陷。
简单修复了一下,建表完成。
如果你比较懒,可以不用自己修复,GPT4 也很喜欢修这种小问题。
方式就是把错误和代码一股脑甩给它就可以了。
好,这部分工作终于完成了。
原文链接:https://juejin.cn/post/7235818900817739833