从想法到落地:一次完整的 AI 协议与权限管理后管系统协作实录
2025-03-28
在本文中,我们将完整记录一次和 AI 深度协作构建后管系统的全过程。从一个小小的“协议签署记录”需求出发,逐步扩展到协议版本管理、激活用户状态控制、提示词与敏感词联动控制、CRUD 接口设计、模型解耦、逻辑封装、注释规范乃至干净的 API 响应格式,最终形成了一个真正具备“落地能力”的系统模块。
01|起点:不是代码,是需求的本质
我提出的第一个需求是:
协议文档需要保存富文本,还要能记录多个版本,因为用户签署的是“某一版本”。
这个需求听起来是数据库结构,但实质上是版本控制问题。我的出发点是:
每个协议文档有唯一标识(code)
每次新增/更新协议时生成一个版本记录(version_code、snapshot_link、hash)
签署记录关联的是具体的版本 ID,而不是文档 ID
每个文档只能有一个当前激活版本(is_active = true)
AI 很快响应并设计出三张表结构:
ai_agreement_documents
ai_agreement_versions
ai_disclaimer_records
每张表结构清晰,字段命名也标准,基本没有修改就直接定稿。
02|数据结构之上:模型方法的责任边界
我特别强调了两个原则:
控制器只做调度,业务逻辑全部下沉模型层
创建协议文档时要自动生成一个版本,更新协议时也要创建新版本
于是我们设计了:
AiAgreementDocuments::createWithVersion() AiAgreementDocuments::updateWithNewVersion() AiAgreementDocuments::deleteWithVersions()
这三个方法完全隐藏了复杂的业务逻辑,调用者只需传入数据,即可完成整套流程。
此外,我要求删除文档时不真正删除版本,而是保留历史。AI 根据这一要求,将 deleteWithVersions()
改写为只标记文档为逻辑删除,并取消所有版本的激活状态。
03|注释规范和响应封装:让接口更像产品
我给出了标准接口注释模板,并强调所有非分页接口必须使用统一封装格式:
return $this->errorParam->paramValidity('失败信息', 0); return $this->errorParam->paramValidity('', 1);
分页接口统一返回:
[ 'items' => [...], '_meta' => [...] ]
这让整个后管接口调用体验非常一致,不会有“有的返回结构复杂、有的返回值随意”的割裂感。
我还指出,客户端接口和后管接口的注释风格要区别,后管只关注 manager(企业ID)、Authorization 和分页参数。
04|联想词 & 敏感词管理模块:信息控制的核心
当系统基础构建完成后,我又提出:
我希望联想词(提示词)能支持双向扩展,避免用户输入关键词不一致导致命中失败。 同时敏感词要能配置是否拦截,是否替换。
于是又设计了两个表:
ai_suggested_keywords
:存储 keyword1 和 keyword2 的互联关系ai_sensitive_words
:维护违禁词,支持是否拦截/是否替换配置
然后我进一步要求:
所有接口必须支持:分页、增、删、改
所有逻辑必须在模型中实现
控制器只调用模型方法,并统一包装响应
verbs()
必须完整列出每个接口的方法
AI 响应极快,并按我给的接口风格写出了整套接口,模型方法设计也非常工整:
AiSuggestedKeywords::getPagedList() AiSuggestedKeywords::createOrUpdate() AiSuggestedKeywords::deleteById() AiSensitiveWords::... // 同结构
模型方法不仅封装了业务逻辑,还自动处理新建/更新操作人的 ID,避免遗漏。
05|隐藏的重点:思想和结构的整合
整个协作过程,重点不是生成了多少代码,而是我持续强调的三个核心原则:
业务逻辑必须集中在模型层,保持控制器简洁
接口风格必须统一,注释、返回值、状态标识全部规范化
系统结构必须支持演进:富文本、版本、激活状态、双向词汇、拦截配置,这些都是演进能力
通过这一次协作,我获得了的不仅是系统,更是:
一套落地执行力极强的协作规范
一组业务模块可复用的建模经验
一种让 AI 成为“开发搭子”的高效工作方式
结语:什么是干货?就是能直接落地的思想
这不是一篇“AI 真厉害”的文章,而是一次“把需求交给 AI 协作落地”的真实过程。
代码只是表象,思路才是底层结构。我们不是做功能,而是在构建一套可拓展、可复制、可协作的系统思维框架。
by 楠哥 红尘炼心,知行一体。
发表评论: