# 模型参数配置功能 - 设计文档 ## 1. 功能概述 ### 1.1 功能定位 模型参数配置管理功能,用于配置风险监测模型的阈值参数,支持多模型参数管理,为未来的项目级自定义参数预留扩展能力。 ### 1.2 核心能力 - ✅ 支持多模型参数配置(大额交易、可疑兼职、可疑外汇等) - ✅ 参数持久化存储到数据库 - ✅ 按模型查询和修改参数 - ✅ 只允许修改阈值,其他信息只读 - ✅ 为未来项目级配置预留扩展能力 ### 1.3 用户场景 1. **系统管理员** 选择需要配置的模型 2. **系统管理员** 修改模型的阈值参数 3. **系统管理员** 保存配置,参数立即生效 --- ## 2. 需求分析 ### 2.1 业务需求 根据需求截图,系统需要支持多个风险监测模型的参数配置: **模型清单:** - 大额交易模型 - 可疑兼职模型 - 可疑外汇交易模型 - (未来可能新增其他模型) **参数特征:** - 每个模型有固定数量的参数项(3-6个不等) - 每个参数包含:监测项名称、描述、阈值设置、单位 - 只有阈值可以修改,其他信息只读 ### 2.2 功能需求 | 需求项 | 说明 | |-------|------------------------| | 数据存储 | 参数配置需要持久化存储到数据库 | | 参数项管理 | 参数项固定,在开发时确定,后期不频繁增减 | | 新增模型 | 需要开发介入,通过代码和数据库脚本实现 | | 权限控制 | 统一权限控制,有菜单权限即可修改所有模型参数 | | 修改历史 | 不需要记录修改历史,只保存当前状态 | | 恢复默认 | 不需要开发恢复默认功能 | | 其他功能 | 只需要基本的查询、修改、保存功能 | ### 2.3 非功能需求 | 需求项 | 说明 | |------|-----------------------------| | 性能 | 单表查询,响应时间 < 500ms | | 安全性 | 后端只能修改阈值字段,其他字段不可修改 | | 可扩展性 | 预留 project_id 字段,支持未来的项目级配置 | | 易用性 | 界面简洁,操作直观 | --- ## 3. 架构设计 ### 3.1 模块架构 **新建模块:** `ccdi-project` **模块定位:** 项目相关功能模块,包含参数配置等项目管理功能 **依赖关系:** ``` ruoyi-admin (启动模块) ├── ruoyi-framework ├── ruoyi-system ├── ruoyi-common ├── ccdi-project (新建模块) ⭐ │ └── ruoyi-common └── ruoyi-info-collection ``` ### 3.2 分层架构 ``` 前端 (Vue.js) ↓ HTTP请求 Controller (CcdiModelParamController) ↓ 调用 Service (ICcdiModelParamService) ↓ 调用 Mapper (CcdiModelParamMapper) ↓ SQL Database (ccdi_model_param) ``` --- ## 4. 数据库设计 ### 4.1 表结构 **表名:** `ccdi_model_param` ```sql CREATE TABLE `ccdi_model_param` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `project_id` bigint DEFAULT 0 COMMENT '项目ID(0表示默认参数,其他值为具体项目ID)', `model_code` varchar(100) NOT NULL COMMENT '模型编码', `model_name` varchar(100) NOT NULL COMMENT '模型名称', `param_code` varchar(100) NOT NULL COMMENT '参数编码', `param_name` varchar(100) NOT NULL COMMENT '监测项名称', `param_desc` varchar(500) DEFAULT NULL COMMENT '参数描述', `param_value` varchar(200) NOT NULL COMMENT '参数值', `param_unit` varchar(50) DEFAULT NULL COMMENT '参数单位', `sort_order` int DEFAULT 0 COMMENT '排序号(参数展示顺序)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), UNIQUE KEY `uk_project_model_param` (`project_id`, `model_code`, `param_code`) COMMENT '同一项目下模型参数唯一', KEY `idx_project_id` (`project_id`) COMMENT '项目ID索引', KEY `idx_model_code` (`model_code`) COMMENT '模型编码索引' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='模型参数配置表'; ``` ### 4.2 字段说明 | 字段名 | 类型 | 说明 | 是否可修改 | |-----------------|--------------|-------------|-------------| | id | bigint | 主键ID | ❌ | | project_id | bigint | 项目ID(0=默认) | ❌ | | model_code | varchar(100) | 模型编码 | ❌ | | model_name | varchar(100) | 模型名称 | ❌ | | param_code | varchar(100) | 参数编码 | ❌ | | param_name | varchar(100) | 监测项名称 | ❌ | | param_desc | varchar(500) | 参数描述 | ❌ | | **param_value** | varchar(200) | **参数值(阈值)** | ✅ **唯一可修改** | | param_unit | varchar(50) | 参数单位 | ❌ | | sort_order | int | 排序号 | ❌ | | create_by | varchar(64) | 创建者 | ❌ | | create_time | datetime | 创建时间 | ❌ | | update_by | varchar(64) | 更新者 | 自动 | | update_time | datetime | 更新时间 | 自动 | | remark | varchar(500) | 备注 | ❌ | ### 4.3 索引设计 | 索引名 | 索引类型 | 字段 | 用途 | |------------------------|------|------------------------------------|---------| | PRIMARY | 主键 | id | 主键索引 | | uk_project_model_param | 唯一索引 | project_id, model_code, param_code | 保证参数唯一性 | | idx_project_id | 普通索引 | project_id | 加速项目查询 | | idx_model_code | 普通索引 | model_code | 加速模型查询 | ### 4.4 初始化数据 参见开发计划文档中的数据初始化脚本。 --- ## 5. 后端设计 ### 5.1 模块结构 ``` ccdi-project/ ├── pom.xml └── src/main/ ├── java/com/ruoyi/ccdi/project/ │ ├── controller/ │ │ └── CcdiModelParamController.java │ ├── service/ │ │ ├── ICcdiModelParamService.java │ │ └── impl/ │ │ └── CcdiModelParamServiceImpl.java │ ├── mapper/ │ │ └── CcdiModelParamMapper.java │ └── domain/ │ ├── CcdiModelParam.java │ ├── dto/ │ │ ├── ModelParamQueryDTO.java │ │ └── ModelParamSaveDTO.java │ └── vo/ │ ├── ModelParamVO.java │ └── ModelListVO.java └── resources/ └── mapper/ccdi/project/ └── CcdiModelParamMapper.xml ``` ### 5.2 核心接口 | 接口路径 | 方法 | 说明 | |----------------------------|------|---------------| | /ccdi/modelParam/modelList | GET | 查询模型列表 | | /ccdi/modelParam/list | GET | 查询指定模型的参数列表 | | /ccdi/modelParam/save | POST | 保存参数配置(只更新阈值) | ### 5.3 安全保障 **三层防护确保只能修改阈值:** 1. **Mapper XML 层** ```xml update ccdi_model_param set param_value = #{item.paramValue}, update_by = #{item.updateBy}, update_time = sysdate() where id = #{item.id} ``` 2. **Service 层** ```java // 只设置需要更新的字段 updateParam.setParamValue(item.getParamValue()); updateParam.setUpdateBy(username); updateParam.setUpdateTime(now); // 其他字段不设置 ``` 3. **前端层** ```vue ``` --- ## 6. 前端设计 ### 6.1 页面布局 ``` ┌─────────────────────────────────────┐ │ 模型参数管理 ← 返回项目管理 │ ├─────────────────────────────────────┤ │ 模型名称: [下拉选择] [查询] │ ├─────────────────────────────────────┤ │ 阈值参数配置 │ │ ┌─────┬──────┬────────┬────┐ │ │ │监测项│ 描述 │阈值设置 │单位│ │ │ ├─────┼──────┼────────┼────┤ │ │ │单笔 │单笔超│[输入框] │ 元 │ │ │ │交易额│该金额│ │ │ │ │ └─────┴──────┴────────┴────┘ │ ├─────────────────────────────────────┤ │ [保存配置] │ └─────────────────────────────────────┘ ``` ### 6.2 交互流程 1. 用户选择模型 → 点击"查询" 2. 系统加载该模型的参数列表 3. 用户修改阈值(只有这一列可编辑) 4. 用户点击"保存配置" 5. 系统提交修改的参数值 6. 保存成功后显示提示 ### 6.3 用户体验优化 - 修改跟踪:只提交变更的参数 - 防重复提交:保存中禁用按钮 - 成功提示:保存成功后清空修改标记 --- ## 7. 实施计划 本功能拆分为以下3个子任务,每个子任务有独立的开发计划: 1. **数据库设计与后端实体类创建** - 参见 `01-数据库设计与后端实体类创建.md` 2. **后端业务逻辑开发** - 参见 `02-后端业务逻辑开发.md` 3. **后端功能测试** - 参见 `03-后端功能测试.md` 4. **前端代码开发** - 参见 `04-前端代码开发.md` --- ## 8. 风险与应对 | 风险 | 影响 | 应对措施 | |-----------|----|---------------------| | 参数值格式不统一 | 中 | 前端验证输入格式,后端也做校验 | | 并发修改冲突 | 低 | 使用乐观锁或最后修改覆盖策略 | | 新增模型需要改代码 | 低 | 符合设计预期,通过数据库脚本和代码发布 | --- ## 9. 未来扩展 ### 9.1 项目级参数配置 通过 `project_id` 字段预留了扩展能力: - `project_id = 0`: 系统默认参数 - `project_id > 0`: 具体项目的自定义参数 **扩展步骤:** 1. 添加项目管理界面 2. 允许用户为具体项目复制默认参数 3. 修改参数时指定 `project_id` ### 9.2 参数修改历史 如需添加审计功能: 1. 创建 `ccdi_model_param_history` 表 2. 在更新参数前先插入历史记录 3. 提供历史查询界面 --- ## 10. 附录 ### 10.1 参考文档 - 若依框架官方文档 - 项目 CLAUDE.md 规范文档 - 需求截图(见 doc/参数配置功能/ 目录) ### 10.2 术语说明 | 术语 | 说明 | |------------|-------------------------| | 模型 | 风险监测模型,如大额交易模型、可疑兼职模型等 | | 参数 | 模型的阈值配置项,如单笔交易额、累计交易额等 | | 阈值 | 参数的具体数值,是唯一可修改的字段 | | project_id | 项目ID,用于区分系统默认参数和项目自定义参数 | --- **文档版本:** v1.0 **创建日期:** 2026-02-26 **创建人:** Claude Code