前几天设计了一下整体的架构,功能,数据库,和实施计划。并用ai 快速的开发完成了。
现在ai 开发的效果真的是越来越好了,基本上不存在非常烂的代码,或者本来没有实现(在代码里写成todo)然后告诉你实现的情况了。不知道是模型真的提升了还是我的这个任务太简单了。反正一路搞下来非常顺利,好的任务都是一次性就满足了我的要求(但是没有满足业务和项目的要求,我后面还是有很多调整)
我这里面有三个地方我觉得可以改进,下次同样的项目可以避免。
第一就是:一开始我把数据库设计的太复杂了。
造成这个的原因还是我对这次项目的业务目标不理解。我想的是要按照行业和国家的标准,来设计清单数据库,本以为这样会更好些,因为国家和行业规定的嘛,不比你牛逼?按照国家和行业规定的字段和内容来设计数据库,以后就不用怎么改动了。但是我想错了。我把国家和行业标准丢给 ai后,给我设计一套 10 多个表的数据库,非常复杂。等我把整体的架构和实施规划都写好后,居然没发开始动工了。因为最开始设计的数据库和我要导入的公司的报价历史清单的字段有很多不一样,咋办?纠结了一会后,于是重新按照已有的excel和业务理解中的关键字段,简单搞了个新表。于是后面的事情就两下就运作起来了。ai咔咔两下就给我写完了。
第二就是:一开始没有深入设计这个项目的核心。
这个项目的核心其实就是在报价的时候,如何去查询历史中的报价记录,这个查询就是一个核心内容。我之前居然没想要认真分析和设计下,倒是写代码的时候,咔咔两下让ai自己设计就写完了。他设计的是三个层次,第一个层次是先通过项目编码来精确匹配(这个就是扯淡,项目编码一点规律没有,根本没有)。第二个就是通过项目名称和项目特征进行模糊匹配(这个是关键,但是他这里设计的不是很充分)。第三个就是如果没有匹配的很好的,匹配准度小 10% 就用ai来分析,他的设计是把数据库的所有历史记录查出来,每次查 5 页丢给 ai,让 ai在里面去找。(这就是浪费token,速度还慢)。
于是就重新设计这个查询逻辑,现在的查询逻辑,是会提取当前需要报价的项目特征中的关键词,这个叫项目特征内容其实是一堆文字描述的这个项目要做什么,还不是结构化的内容。现在通过一套逻辑来把他拆分为有结构化的内容,主要有三个方面,第一个就是在上传的时候,要对历史报价中的项目特征进行拆分。第二个就是候选召回(第一个就是智能报价的时候,对上传的文本进行归一化(就是同义词缩率词停用词进行归一)。第二个就是关键词倒排召回。第三个就是去重。)第三个就是特征的深度匹配,第四个就是综合打分,有点复杂,我已懒得深入去看了,看样子ai在我的引导下设计的比较完美。还不知道效果咋样,我反正是不想动脑筋去思考这个玩意了。后面肯定还会有各种问题需要修复和更新,在实践中去升华这些算法更好些(到时候升华已是ai去升华,我就看着就行了)
``` ─────────────────────────────────────────────────────────────┐ │ 新匹配流程 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ Step 0: 数据准备(上传拆分/FeatureEnricher) │ │ ├── 同义词/缩写/停用词归一化 │ │ ├── 特征结构化解析(raw → parsed features JSON) │ │ ├── 生成 tokens(name_tokens / feature_tokens) │ │ └── 更新 search_vector(全文检索向量) │ │ │ │ Step 1: 候选召回 (Recall,快速缩小范围) │ │ ├── 文本归一化(同义词/缩写/停用词) │ │ ├── 关键词倒排召回(核心词命中) │ │ ├── (可选)向量召回 TopK(语义补充) │ │ └── 合并去重得到候选集 (如1000条 → 100条) │ │ │ │ Step 2: 特征深度匹配 (核心算法,权重70%) │ │ ├── 结构化提取特征属性 │ │ │ ├── 材料等级: C30, M10, Q235 │ │ │ ├── 规格尺寸: 200mm, φ12, @150 │ │ │ └── 工艺做法: 机械开挖, 双层配筋 │ │ ├── 应用规则引擎(hard block / hard penalty / soft penalty) │ │ ├── 逐属性比较计算相似度(维度化 + 数值对齐) │ │ └── 加权汇总特征相似度 │ │ │ │ Step 3: 综合评分 │ │ ├── 总分 = 特征×0.7 + 名称×0.3 │ │ └── 按相似度排序,取Top 5 │ │ │ └─────────────────────────────────────────────────────────────┘ ```第三就是:还没想到现留着(本来一开始想到的,中途被打断几次忘了)