5.3 KiB
5.3 KiB
MEMORY.md —— 长期记忆
🌐 语言要求
- 所有交互一律使用中文
- 技术术语可保留原文(API、JSON 等),但解释、对话、回复用中文
身份
需求分析助手,负责将产品需求转化为前后端可执行的技术规范文档。
工作规范
- 输出物:技术方案文档,离线性优先
- 按需求分析技能指导流程执行
- 文档结构:背景 → 需求拆解 → 技术方案 → 接口定义 → 数据结构 → 前后端分工
输出格式约定
- 接口定义使用「请求方法 /路径」格式
- 数据表结构标注主键、索引、外键
- 前后端分工明确标注各端职责
📁 项目目录
wit 项目
- 项目根目录:
/root/projects/wit - 前端项目:
mica-web - 后端项目:
mica-server - 项目文档:
mica-doc
🏗️ mica 项目开发规范
SMDM 物料管理模块 - 开发限制 (2026-08-04)
🔴 强制性红线 (违反即停止,详细规范见 memory/2026-08-04.md):
| # | 红线 | 违规示例 | 正确做法 |
|---|---|---|---|
| 1 | 表前缀必须过滤 | DmpMdItemInfo |
ItemInfo |
| 2 | API 必须放在 apis.smdm 包 | smd.api.ItemApi |
apis.smdm.ItemApi |
| 3 | 查询只能用 Mapper | 使用 MyBatis-Plus | 原生 MyBatis XML |
| 4 | 改删必须 Feign 远程调用 | 本地直接 UPDATE/DELETE | 调用 SMDM 服务 API |
| 5 | 实体必须继承 BaseDomain | 独立定义审计字段 | extends BaseDomain |
| 6 | 只使用指定 13 个业务字段 | 添加表中其他字段 | 仅用规范内字段 |
| 7 | 代码必须生成到 smd 目录 | com.witsoft.mica.item.* |
com.witsoft.mica.smd.* |
📋 核心规范摘要:
- 包路径:
com.witsoft.mica.smd.*(本地业务),com.witsoft.mica.apis.smdm.*(Feign 接口) - 表前缀过滤:
dmp_md_全部过滤 (如dmp_md_item_info→ItemInfo) - 实体字段: 13 个业务字段 +
BaseDomain审计字段 - 查询方式: 原生 MyBatis XML (分页) + MyBatis-Plus (详情)
- 改删操作: Feign 远程调用 SMDM 服务
- 注释规范:
@Author: yangxuan,@Date: 精确到日 - 日志规范: SLF4J + Lombok
@Slf4j, Feign 调用添加 debug 日志 - ecid 处理: Controller 层调用
GlobalUtils.getEcid()并传递给 Service - 分页方式: 使用项目
PageDomain<T>, 不使用 PageHelper - XML 规范: 使用
<sql>+<include>片段复用方式
📁 已生成文件 (10 个):
apis/smdm/ItemApi.java- Feign 接口smd/entity/ItemInfo.java- 实体类smd/mapper/ItemMapper.java+ItemMapper.xml- MyBatis 映射smd/service/ItemService.java+impl/ItemServiceImpl.java- 服务层smd/controller/ItemController.java- 控制器smd/dto/ItemQueryDTO.java+ItemFormDTO.java- DTOsmd/vo/ItemVO.java- VO
🐛 已修正问题 (12 个):
- ResponseModel 静态引用 →
ResponseModel.succeed(data) - 分页 XML / 详情 MP 混合使用
- 移除编码查询条件
- Feign 调用添加 debug 日志
- Controller 层 ecid 处理
- 恢复分页 XML 查询
- 使用 PageDomain (非 PageHelper)
- 删除 queryByCode 方法
- ResponseModel 泛型参数化
- Map 类型转换警告
- XML 使用
<sql>+<include>片段 - ItemApi ResponseModel 泛型
数据字典模块 - 开发规范 (2026-08-04)
📋 定位: 配置项/工具类,不是业务实体
🔴 强制性红线:
| # | 红线 | 正确做法 |
|---|---|---|
| 1 | 不需要 Controller | 纯内部工具服务 |
| 2 | 不需要 Feign API | 不暴露外部接口 |
| 3 | 不需要缓存实现 | 后续可调用 Feign 接口缓存 |
| 4 | 不需要继承 BaseDomain | 配置项不是业务实体 |
📋 核心规范:
- 包路径:
com.witsoft.mica.smd.* - 功能: 通过
dictionary_type.en_code查询dictionary_data的en_code → full_name映射 - 输出格式:
Map<String, String>(en_code → full_name) - 重复处理: 同一 typeCode 下 en_code 重复时取第一条 (按 sort_code + id 排序)
- 多租户支持: 自动获取 ecid 过滤
- 软删除过滤: delete_mark = 0
📁 已生成文件 (5 个):
smd/mapper/DictionaryMapper.java- 字典查询 Mapper 接口smd/mapper/DictionaryMapper.xml- 原生 SQL 查询 (JOIN type + data)smd/dto/DictionaryItem.java- 字典数据项 DTOsmd/service/DictionaryService.java- 字典服务接口smd/service/impl/DictionaryServiceImpl.java- 字典服务实现
📁 已生成枚举类 (2 个):
smd/enums/StatusEnum.java- 状态枚举 (Y=启用,N=禁用)smd/enums/YesNoEnum.java- 是否枚举 (Y=是,N=否)
🔧 字典填充规范:
- VO 设计: 添加 xxxName 字段存储字典翻译后的中文名称
- Service 层填充: 批量查询字典,避免 N+1 问题
- 通用方法:
fillDictionaryData(ItemVO itemVO, Map<String, Map<String, String>> dictMaps) - 性能要求: 列表查询只查 1 次字典,批量填充
📊 物料信息字典映射:
| VO 字段 | 字典类型 | 说明 |
|---|---|---|
itemTypeName |
materialsType |
物料类型名称 |
propertiesName |
itemProperties |
物料属性名称 |
pickingPropertyName |
pickingProperty |
领料属性名称 |
statusName |
StatusEnum |
状态名称 (枚举) |