# 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`, 不使用 PageHelper - **XML 规范**: 使用 `` + `` 片段复用方式 **📁 已生成文件** (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 使用 `` + `` 片段 12. ItemApi ResponseModel 泛型 ---