live-forum/server/admin/ZrAdminNetCore/document/AgileConfig集成需求文档.md
2026-03-24 11:27:37 +08:00

6.6 KiB
Raw Blame History

AgileConfig 配置管理功能需求文档

一、功能概述

在后台管理系统中新增一个业务项目配置管理页面,用于管理业务项目的配置项。配置项通过 AgileConfig Restful API 推送到 AgileConfig 配置中心,业务项目从 AgileConfig 读取配置,无需查询数据库。

二、功能定位

  • 本项目角色:配置管理工具,提供配置界面
  • 本项目自身配置继续使用现有方式appsettings.json、sys_config 表),不使用 AgileConfig
  • 业务项目:从 AgileConfig 配置中心读取配置

三、功能需求

3.1 配置页面设计

3.1.1 页面形式

  • 不是传统的配置列表管理页面(增删改查)
  • 一个表单配置页面
  • 每个配置项对应一个表单字段

3.1.2 UI

  • 上传按钮:用于文件/图片上传(如:帖子精华图片),建议先了解对应的上传功能
  • 开关:用于布尔值配置(如:是否启用过滤词)
  • 文本框:用于文本/数字输入(如:图片压缩率)
  • 下拉框:用于选择数据字典,参考其它表单页面的数据字段选项
  • 其他特俗字段:根据配置项来处理

3.1.3 页面布局

  • 配置项按分组展示
  • 每个分组可以折叠/展开
  • 页面底部有保存按钮
  • 点击保存后,将所有修改的配置项推送到 AgileConfig

3.2 配置项分组

3.2.1 分组展示

  • 配置项需要按分组展示(如:帖子配置、图片配置、过滤配置等)
  • 分组信息从配置项 JSON 定义中读取

3.3 配置管理逻辑

3.3.1 配置读取

  • 页面加载时,从 AgileConfig 读取当前 App 的所有json配置项
  • 将json填充到表单中

3.3.2 配置保存

  • 用户修改配置项后,点击保存按钮
  • 只更新修改的配置项(增量更新,不是全量覆盖)
  • 通过 AgileConfig Restful API 推送配置变更
  • 保存成功后提示用户

3.4 AgileConfig 连接配置

3.4.1 配置来源

  • AgileConfig 连接信息从 appsettings.json 读取
  • 配置项如下:
{
  "AgileConfig": {
    "appId": "CloudGaming",
    "secret": "95BB717C61D1ECB0E9FB82C932CC77FF",
    "nodes": "http://124.220.55.158:94",
    "url": "http://124.220.55.158:94",
    "env": "PROD",
    "UserName": "admin",
    "Password": "dbt@com@1234"
  }
}

3.4.2 配置说明

  • appId:要管理的 AgileConfig 应用 IDApp 已存在,不需要创建)
  • urlAgileConfig 服务器地址
  • nodes:多个节点使用逗号分隔
  • env环境PROD/DEV/TEST 等)
  • UserNameAgileConfig API 认证用户名
  • PasswordAgileConfig API 认证密码

四、技术实现要点

4.1 AgileConfig API 集成

4.1.1 认证方式

  • 使用 Basic 认证
  • 请求头:Authorization: Basic base64(UserName:Password)
  • Content-Typeapplication/json

4.1.2 需要使用的 API

  • 查询配置项列表GET /api/config/app/{appId}?env={env}
  • 添加/更新配置项POST/PUT /api/config
  • 删除配置项DELETE /api/config/{id}
  • 发布配置POST /api/config/publish/{appId}?env={env}

4.1.3 API 调用封装

  • 创建 AgileConfigService 封装 API 调用
  • 统一处理认证、错误处理、重试逻辑
  • 项目创建专用 HTTP 客户端

4.2 后端实现

4.2.1 Controller

  • 创建 AgileConfigController 或类似名称
  • 提供接口:
    • GET /agileconfig/configs - 获取配置项列表
    • POST /agileconfig/save - 保存配置项(增量更新)
    • GET /agileconfig/groups - 获取分组列表(用于前端展示)

4.2.2 Service

  • 创建 AgileConfigService 服务
  • 封装 AgileConfig API 调用
  • 处理配置项的读取、更新逻辑
  • 实现增量更新(只更新修改的配置项)

4.2.3 Model

  • 创建实体类或者直接返回从AgileConfig中读取的数据json格式对应 AgileConfig 的配置项结构)

4.3 前端实现

4.3.1 页面组件

  • 创建配置管理页面组件
  • 实现分组折叠/展开功能
  • 实现保存功能

4.3.3 数据管理

  • 记录配置项的原始值
  • 跟踪哪些配置项被修改
  • 保存时只提交修改的配置项

五、对应的json格式

{
  //项目配置
  "AppConfig": {
    "FlowerSendInterval":3600, //秒
    "uploadServiceType":"cos"// 'cos' | 'server' 下拉框
    "upload_config":{
	// 图片压缩质量0-100越高质量越好但文件越大
	    "imagequality": 80,
	// 图片最大大小
	  "imagemaxsize": 10240,  // 10mb
	// 视频最大大小(字节)
	  "videomaxsize": 102400,  // 100mb
	    //域名如果使用cos上传
	  "cosdomain": 'https://miaoyu-1308826010.cos.ap-shanghai.myqcloud.com' //文本框
    },
    "AppIcon":"",//图片地址图片上传
    "AppPostEssenceIcon":""//图片地址 图片上传
  },
  // 数据库配置
  "ConnectionStrings": {
    "LiveForumConnection": "data source=192.168.195.15;User Id=sa;Password=Dbt@com@123;MultipleActiveResultSets=False;Encrypt=False;initial catalog=LiveForumDB;pooling=true;max pool size=100" //业务数据库
  },
  //jwt配置
  "JwtTokenConfig": {
    "accessTokenExpiration": "120",
    "audience": "MP",
    "issuer": "LiveForum",
    "secret": "2C9AF5B22C94DB24A4FEB26BBF01C9AB"
  },
  //缓存配置
  "Redis": {
    "Configuration": "192.168.195.15:6379,defaultDatabase=2",
    "InstanceName": "LiveForum:"
  },
  //过滤词配置
  "SensitiveWord": {
    "CacheExpiration": "86400",
    "CacheKey": "SensitiveWords:Industry",
    "CommonWordsPath": "wwwroot/sensitivewords",
    "Mode": "Filter",
    "ReplaceChar": "*"
  },
  //腾讯云配置
  "TENCENT_COS": {
    "APPID": "1308826010",
    "BUCKET_NAME": "miaoyu",
    "DOMAIN_URL": "https://miaoyu-1308826010.cos.ap-shanghai.myqcloud.com",
    "MAX_SIZE": "100",
    "REGION": "ap-shanghai",
    "SECRET_ID": "AKIDVyMfzKZdZP8zkNyOdsFuSsBJDB7EScs0",
    "SECRET_KEY": "89GWr7JPWYTL8ueHlAYowGZnvzKZjqs9"
  },
  //微信小程序配置
  "Wechat": {
    "AppId": "wxa17265f5fe8374b1",
    "AppSecret": "af99a9c8f1b986ded540d317879cc799",
    "EncodingAESKey": "",
    "Token": ""
  }
}

六、待确认事项

  1. App 已存在,不需要创建/管理 App
  2. 环境、App 等信息从 appsettings.json 读取
  3. 只更新修改的配置项(增量更新)
  4. 需要分组展示,部分分组不展示给用户
  5. JSON(用户稍后提供)
  6. 配置保存后自动发布
  7. json的具体类型在特俗类型在配置中已经添加注释

文档版本v1.0
创建时间2025-01-XX
最后更新:待补充配置项定义后更新