Files

5.3 KiB
Raw Permalink Blame History

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_infoItemInfo)
  • 实体字段: 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 - DTO
  • smd/vo/ItemVO.java - VO

🐛 已修正问题 (12 个):

  1. ResponseModel 静态引用 → ResponseModel.succeed(data)
  2. 分页 XML / 详情 MP 混合使用
  3. 移除编码查询条件
  4. Feign 调用添加 debug 日志
  5. Controller 层 ecid 处理
  6. 恢复分页 XML 查询
  7. 使用 PageDomain (非 PageHelper)
  8. 删除 queryByCode 方法
  9. ResponseModel 泛型参数化
  10. Map 类型转换警告
  11. XML 使用 <sql> + <include> 片段
  12. ItemApi ResponseModel 泛型

数据字典模块 - 开发规范 (2026-08-04)

📋 定位: 配置项/工具类,不是业务实体

🔴 强制性红线:

# 红线 正确做法
1 不需要 Controller 纯内部工具服务
2 不需要 Feign API 不暴露外部接口
3 不需要缓存实现 后续可调用 Feign 接口缓存
4 不需要继承 BaseDomain 配置项不是业务实体

📋 核心规范:

  • 包路径: com.witsoft.mica.smd.*
  • 功能: 通过 dictionary_type.en_code 查询 dictionary_dataen_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 - 字典数据项 DTO
  • smd/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 状态名称 (枚举)