AI辅助开发-应用思路(分享设置密码功能)

一、明确需求概况

1.首先要有一个大致的实现功能的方向,描述需求:

        问:这个是APIpost的分享功能,不论是公开模式还是密码模式,外网链接都是一样的,

        但是打开页面的效果不同。是在网关上做的判断处理的嘛?

        

        给出了大致的需求理解描述:

2.询问解决方案

        ①一种是,按照AI的思路继续询问这几种方案的具体解决思路。

        ②还有一种,是有明确的思路,然后再进行方案的实现。

问:

想要实现这个业务,还有什么好的办法办法吗帮我想想

AI回答:

实现你所描述的业务需求,除了使用AOP和自定义注解的方式之外,还有几种其他的方法可以考虑。这些方法各有优缺点,可以根据你的具体应用场景选择最合适的一种或多种结合使用。

(1) 过滤器(Filter)或拦截器(Interceptor)

实现方式:你可以创建一个自定义的HandlerInterceptor或Filter,并在其中根据请求URL或其他参数判断是否需要密码验证。

(2) Spring Security

实现方式:可以通过配置Spring Security来保护特定的端点,并根据数据库中的状态决定是否要求额外的身份验证步骤(例如输入密码)。

(3) 前置处理器(PreProcessor)

实现方式:可以在每个需要检查接口状态的方法前添加一段通用的逻辑(例如调用一个服务方法来查询接口状态并根据结果执行相应操作),但这种方式不利于代码复用和分离关注点。

(4) 事件驱动架构

实现方式:在接收到请求时发布一个事件,然后由监听该事件的组件来处理逻辑(如查询数据库并决定是否需要进一步验证)。这种方法特别适合那些需要多个系统间协调的工作流。

二、初步实现思路

        花了一点时间搭springboot框架,想用基础的springboot+html形式实现demo。

需要明确具体的产品设计思路:

        首先分享功能,肯定是要有分享内容的,可以是一个分享链接;并且链接打开后,是一个通过接口查询获取数据的页面。我们需要有一个index首页,然后还要有一个可分享的页面。让AI帮忙生成HTML:

1.生成index首页

问:

首页的html给一下要样式丰富一点的,内容很多的首页虽然按钮都可以不使用,但是要显得功能多一点,样式好看一点

AI:

给出了一个轮播图的页面

问:

不用轮播图了,改成一个统计大屏吧

AI:给出一版样式,但还是很丑

问:

样式更多一点起码要加10倍的样式,让这个首页更漂亮

AI:给出了一个完整的html,但是需要很多图片,得把图片的路径都配好才行。

并且只有部分代码,没法直接打开的html。

问:

样式更多一点起码要加10倍的样式,让这个首页更漂亮,只用样式不要用照片

给出完整的首页代码

最后得到了一个有四个模块的index.html的首页:

经过来回沟通和微调,加了jquery,最终拿到了想要的首页效果:

2.整理询问思路和方法

(1)问题描述

①具体的问题尽量在一句话中讲明白:

在一句话中将需求,尽量详细的全部描述清楚,提问的限制是10000字符,不要担心太长。但是一个会话描述太多内容会特别卡顿,可以先按照以下格式在文档中整理好问题,然后粘贴询问。

询问请求格式,例如:

A描述想要的需求或Bug问题,B接口路径,C接口的请求参数格式,D提供接口返回数据格式,E使用的请求方式Post

+ 代码段......

在代码基础上修改,不要去掉注释,修改bug,给出完整代码。

(原逻辑保持不变的地方也要展示出完整代码,不要有任何省略,请不省略代码)

②拆开问提供描述

先发一部分,工具类或者代码。让AI理解下自己下项目结构和使用方法或工具,

可以在下文两三句中询问具体问题。总体来说一个问题拆开几句询问弊大于利

优点:模型会在后文中偏向你提供的方法和工具的使用。

缺点:会出现了模型答非所问的情况。

通常打开一个新的会话后,模型会理解当前会话的上下文进行内容回复,但是所提的问题中,如果内容过长,或包含大量代码。

AI通常会解决代码中的一部分问题,而省略一些代码。也由于描述太长,而回复时候模型大概率,不会思考两个以上前文所提供的方法或工具信息,不记得对话内容而进行回答。

(2)前端页面生成总结

有些微调部分AI给出的结果并不是很理想,AI给出的页面有很多bug,比如页面打开后统计图不断向下拉伸放大的死循环等等......

较难用语言描述前端代码的微调,比如想把按钮向右挪动10%、宽度拉长5%、左右的按钮对齐,按钮中的文字不要换行,每个统计模块缩小比例等细枝末节。

所以页面的微调部分,虽然也可以完全依托给AI生成,但是就效率而言,对于前端代码来说,有些地方可能手动调试更方便。还有对使用的语言越熟练,最终拿到想要的结果就越快。

(3)点击停止中断AI的答案

AI生成回复需要时间,中断不必要的回复,这样辅助开发的效率:

--如果发现AI回复的内容开始有偏差;

接下来一问,需要纠正AI偏差的地方,并且需要表达出自己想要的效果。

不然AI在接下来的回复会越偏越远。

(4)模型中断的回复追问

如果出现代码行数过多,问题未回答完毕。而中断回复的情况,可以追问后续:

(5)多线程提问

代码的调试或bug修改,很难绝对保证一次会修改完美成功:

针对复杂度中等以下的场景,可以在等待回复的过程中,在文档中继续整理接下来要处理的需求内容,进行下一次沟通的准备。这些会话是互不影响的。

模型在回复问题的过程中,需要时间输出结果。如果贴的是代码,可能回复时间稍长,基本在3-5分钟左右。在这个过程中,可以打开其它页面,新建多个会话进行不同需求的提问。

例如,有两个需求要处理:

①修改项目的bug,搜索条件查询返回失败500异常。

②新接口已经理解需求,待开发。

(或者在一个项目中,有两个业务不交叉的功能待开发)

解决思路:

①问:

搜索条件查询返回失败500异常,请求参数为xxx

+贴业务代码......

+贴部分日志报错信息......

在代码基础上修改,不要去掉注释,修改bug,给出完整代码。

(回复等待......5分钟,AI的代码回复+描述)

②问:

请帮我以这样的格式:

贴部分实体或controller或service代码格式代码....

生成几个接口实现:xxx(具体需求描述)

以下是我的数据库结构:贴SQL的创建表语句。

PS:在等待回复的过程中,可利用等待时间做别的事情。假如问题①需要沟通3次后才,能改好正常运行。整理更多的需求描述内容,待提问使用。

3.后端代码生成

(1)数据库

共三张表:

①我自己提供了一个100条数据的customer用户表,用来展示用户量统计图。

②一个核心功能的表share_links用来存储“分享链接”和“分享密码”等信息。

③后续为了实现白名单功能,又加了一个allowed_ips存储“白名单IP”。

以share_links为例,因为当时没有明确的想法:

问:

点击分享后弹出一个弹窗 有两种模式可以选择,一种是公开, 一种是密码,意思这个可以分享的页面,分享出去后,当有用户打开此地址时,是不是要先输入密码再进入。这个逻辑怎么实现,要新创建一个表吗

AI:

最后在这个SQL基础上,调整:

添加了字段:`redirect_address` varchar(500) NOT NULL COMMENT '重定向地址';

调整了create_time和modify_time字段,使用了此表。

PS:用过往设计数据库的思维经验,微调模型给出的SQL,能加快数据库设计。

(2)实体类

需要提供一个基础的实体类格式,模型会根据注释格式生成想要的实体类。

后续只需要描述:以此格式,生成以下表的实体类,将表SQL全部贴到后面一次性生成5个、10个实体类,可直接使用。

     问:                                    AI:

       

(3)接口

问:

首先要创建好目录结构,这个手动比AI生成的快,并向模型提供这个目录结构

AI:

接口生成描述:

后续只需要通过描述Service层接口,还有想要实现的接口功能。逻辑描述的越具体得到的接口就越准确,如果能先写Service的一行抽象方法,可以更准确的返回结果,没有写也无所谓,根据生成后的代码进行微调,可一次返回全部结果。

比如可以这样描述:

希望有一个查询用户列表的接口,用mybaits-Plus实现,可通过参数姓名、手机号、身份证,居住地的省、市、区模糊查询。以格式:+贴代码段....的注释方式来实现功能;Controller层请使用我的返回数据工具类实现;返回数据工具类为:+贴工具类代码;格式以:贴简单接口的Controller接口格式;给出完整代码,不要有代码省略。

4.实现生成分享设置密码功能思路

问:前端用户时没办法知道id的,他应该只能取到targetUrl;

之后,又针对这三个接口进行了一系列的优化操作,比如让模型将具体业务逻辑放到impl去处理,通过本地ApiPost联调修改了接口的BUG。调整为mybaits-plus的查询方式,优化为jdk1.8支持的语法格式等。

先在首页生成一个类似的模态框;

因为没有具体想要的样式,模态框效果的概念,

从而花很长时间生成样式,来回调整,最终才得到这个效果。

通过和AI模型的交流,在将shareLinks链接表的数据展示到模态框,并且关闭模态框可以保存后,就有了一个比较清晰的思路,然后与模型沟通一点点完善后:

1.在首页设置分享,创建分享数据。

2.当我设置密码和有效期后时,

在打开分享链接页面userGrowth.html后,因为分享页面打开是个指定的页,所以要统一模态框和跳转页面的接常量参数/api/dashboard/user-growth;

点不同的模块,会保存不同的常量数据。最终再跳转页面中处理逻辑。

3.例如:在userGrowth.html页中会根据常量,查询接口是否有链接密码shareLinks表的数据;如果有判断有效期,并跳转密码页verifyPassword.html;

4.分享过期,跳转到密码失效页面linkExpired.html;

5.在密码页verifyPassword.html输入密码,跳转回到userGrowth.html进行验证,验证失败跳转回密码页面重新输入。

6.最后为了解决,访问权限的问题,设计了白名单功能,在userGrowth.html,判断添加过白名单的ipv4地址不需要验证密码页。

5.前后端接口联调

联调描述使用:

前端页面调用接口有:页面跳转,监听器,接口调用等。有时候贴全部代码10000字符贴不下。可以只粘贴方法调用部分,例如html只贴script部分的代码,并描述:接口地址、传参数据和格式、返回参数的格式,以及想要的页面效果,加上:给出完整代码的描述。

有时候即使加了“给出完整代码”,模型返回的结果还是会省略一部分。这时可以用不同的描述语言,来提醒模型识别,例如:希望返回全部结果、返回的代码不要有任何省略,要展示出完整代码,随描述的不同,会绕过模型代码的判断省略逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值