Files

74 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MEMORY.md —— 长期记忆
## 🌐 语言要求
- **所有交互一律使用中文**
- 技术术语可保留原文(API、SQL、DTO 等),但解释、对话、回复用中文
## Java 注释规范(统一约定)
1. 所有公共接口和类必须包含 Javadoc
2. 注释语言:中文描述业务背景,技术术语保留英文(如 NPE)
3. 禁止生成 "Gets the value of X" 这类无意义的 getter/setter 注释
4. 复杂算法必须在代码块上方解释核心逻辑
5. 禁止使用 HTML 标签
## 物料近似查询 searchSimilar() 优先级(2026-05-29 产品决策,不查规格)
产品决定**不查询规格字段**,物料近似查询 `searchSimilar()` 按以下优先级分步:
1. **名称精确匹配** (`material_name = keyword`) — 优先级最高
2. **名称前缀匹配** (`material_name LIKE 'keyword%'`)
3. **名称模糊匹配** (`material_name LIKE '%keyword%'`)
4. **编码模糊匹配** (`material_code LIKE '%keyword%'`) — 兜底
去重原则:已在前置层级匹配的物料不再在后置层级重复出现。
保留旧 `searchByNameLike()` 不动。
## 开发注意事项(统一约定)
1. **复用优先**:逻辑雷同时提取公共方法复用,避免重复代码
2. **业务表仅存物料id**:物料相关字段仅存 `material_id`,其他数据(编码、名称、规格、单位等)通过关联查询填充,防止名称/编码变动后数据不一致
3. **填充在 Service 层**:关联数据的填充逻辑统一在 Service 层处理,不放在 Controller 或 Mapper
4. **首个版本直接改 DDL**:2026年5月为 v1.0,脚本直接修改建表语句,不需要写 ALTER TABLE 迁移
5. **字典优先用 DictService**:字典取值优先使用 `DictService` 公共方法,不手写字典查询逻辑
6. **禁止 List.of()**Java 8 不兼容,统一用 `Collections.emptyList()` 替代
## Git 提交约定
1. **禁止 commit** — 不做任何 commit 操作,只允许查看、修改代码
2. **提示 commit 时必须附带 commit message** — 让用户可直接复制运行
3. 如需提交代码,由用户手动执行 commit
4. **`application.yml` / `application-local.yml` 由用户自行提交** — Agent 绝不碰这两个配置文件的版本管理
## 部署约定
1. **禁止自动部署测试环境** — 不做任何自动部署操作
2. 代码修改后由用户手动决定何时部署
## 数据库脚本执行状态(截至 2026-05-29
### 本地库 (localhost:31983) 和 测试库 (Docker db:5432) 均已执行:
**基础脚本:**
- ✅ 00-init.sql - 基础表结构
- ✅ 10-system.sql - 系统数据
- ✅ 20-master-data-init.sql - 基础数据
- ✅ 22-material-type-dict.sql - 物料类型字典
- ✅ 30-sales.sql - 销售模块
- ✅ 40-purchase.sql - 采购模块
- ✅ 50-inventory.sql - 库存模块
- ✅ 99-default-warehouse.sql - 默认仓库
**序列脚本:**
- ✅ 23-stocktake-sequence.sql - 盘点单号序列 (`seq_im_stocktake_no`)
- ✅ 24-customer-sequence.sql - 客户编码序列 (`seq_md_customer_code`)
- ✅ 25-supplier-sequence.sql - 供应商编码序列 (`seq_md_supplier_code`)
**字段变更脚本:**
- ✅ 26-material-last-price.sql - 物料表添加 `last_inbound_price``last_outbound_price`
- ✅ fix-fin-add-order-date.sql - 财务表添加 `order_date`
- ✅ fix-write-off-add-updater.sql - 核销表添加 `updater``update_time`
- ✅ fix-write-off-remove-receipt-payment-id.sql - 删除 `fin_ar_write_off.receipt_id``fin_ap_write_off.payment_id`
- ✅ fix-ai-oper-log.sql - sys_oper_log 添加 AI 字段(`ai_session_id`, `ai_model`, `prompt_tokens`, `completion_tokens`, `total_tokens`
**双库状态:** 本地库和测试库结构已同步,所有脚本均已执行完毕。