智能资讯系统技术架构
概述
智能资讯系统(InsightForge)是一套面向金融资讯管理的后台系统,提供新闻模板管理、工作流编排、新闻自动生成、行情查询等功能。系统采用前后端分离架构,前端为 React 管理后台,后端为 .NET 6 Web API。
技术栈总览
| 层级 | 技术 | 说明 |
| 前端框架 | React 18 + Umi Max + TypeScript | 企业级中后台框架 |
| UI 组件库 | Ant Design + Ant Design Pro Components | 专业中后台 UI 体系 |
| 可视化编排 | AntV X6 + @flowgram.ai | 工作流可视化编辑器 |
| 编辑器 | Monaco Editor + wangEditor | 代码编辑与富文本编辑 |
| 后端框架 | ASP.NET Core Web API (.NET 6) | RESTful 服务 |
| 身份认证 | JWT Bearer | 无状态令牌认证 |
| 任务调度 | Quartz.NET | 定时任务与动态调度 |
| 数据访问 | Dapper + MySqlHelper/OracleHelper/ClickHouseHelper | 多数据库支持 |
| 数据库 | MySQL + ClickHouse + Oracle | 业务库 / 行情库 / 历史库 |
| API 文档 | Swashbuckle (Swagger) | 自动生成 API 文档 |
系统架构分层
┌─────────────────────────────────────────────────────────┐
│ 前端层 (React SPA) │
│ ├─ 模板管理页 ├─ 工作流编辑页 ├─ 新闻查询页 │
│ ├─ 基础配置页 ├─ 登录页 ├─ 首页 │
│ └─ 服务层: src/services/smart-info/ │
│ 用户 / 模板 / 基础数据 / 行情 │
├────────────────────── HTTP API ─────────────────────────┤
│ 后端层 (ASP.NET Core Web API) │
│ ├─ Controllers/ ├─ Jobs/ ├─ Services/ │
│ │ ├─ UserController │ ├─ TemplateJob │ ├─ Scheduler│
│ │ ├─ BasicController │ └─ SyncJob │ ├─ Template │
│ │ ├─ TemplateCtrl │ │ ├─ Flows │
│ │ └─ QuotesController│ │ └─ NewsGen │
│ ├─ Data/ ├─ Module/ ├─ DTOs/ │
│ │ ├─ TemplateRepo │ ├─ ConfigHelper │ │
│ │ └─ DbQueryExecutor │ └─ BlacklistMgr │ │
│ └─ wwwroot/ (前端构建产物) │
├────────────────────── 数据层 ────────────────────────────┤
│ MySQL (业务数据) ClickHouse (行情数据) Oracle (历史) │
└─────────────────────────────────────────────────────────┘
核心功能模块
1. 用户鉴权模块
- 登录/登出/修改密码
- JWT 签发(默认有效期 3 个月)
- Token 黑名单机制(进程内 ConcurrentDictionary)
- 请求拦截器自动注入
Authorization: Bearer
2. 模板管理模块
- 模板 CRUD(新建、编辑、复制、发布、暂停、删除)
- 工作流可视化编辑(基于 AntV X6)
- 流程步骤编排与试运行
- 试运行进度回传(轮询 GetRunProgress)
3. 任务调度模块
- 基于 Quartz.NET 动态调度
JobSynchronizationJob 每 30 分钟同步数据库激活模板
- 动态注册/更新/删除 Quartz 作业
- 模板自动执行引擎(TemplateEngine -> FlowsExecutor -> NewsGenerator)
4. 新闻生成模块
- 模板执行引擎按流程步骤逐节点执行
- 新闻渲染生成(NewsGenerator)
- 新闻去重策略:时间窗口 + 标题双重校验
- 频率控制与批次内去重
5. 行情查询模块
- ClickHouse 行情数据查询
- 码表查询、L1 实时行情、1 分钟线行情
- 支持上交所、深交所、北交所、周边市场
6. 基础配置模块
- 来源、类型、作者管理
- 数据源元信息管理
- 跨库 SQL 查询执行器
数据库设计
ClickHouse 行情数据库
市场头信息表 (marketinfohead)
| 字段 | 类型 | 说明 |
| market_id | UInt8 | 市场编号 |
| market_status | UInt8 | 市场状态 |
| date | Date | 日期 |
| time | String | 时间 (HHMMSS) |
| ware_count | UInt16 | 商品数量 |
| periods | Array(String) | 交易时间段 |
| ENGINE | MergeTree | ORDER BY (market_id, date) |
市场类别详情表 (marketinfodetail)
| 字段 | 类型 | 说明 |
| market_id | UInt8 | 市场编号 |
| kind_name | String | 类别名称 |
| price_rate | UInt8 | 价格倍率指数 |
| lot_size | UInt16 | 每手数量 |
| ENGINE | MergeTree | ORDER BY (marketid, kindname) |
商品码表 (name_table)
| 字段 | 类型 | 说明 |
| market_id | UInt8 | 市场编码 |
| serial | UInt16 | 商品序号 |
| code | String | 商品代码 (GBK) |
| name | String | 商品名称 (GBK) |
| ENGINE | MergeTree | ORDER BY serial |
L1 实时行情快照表
snapshotsseL1 - 上交所 L1 快照(指数+股票)
snapshotszseL1 - 深交所 L1 快照
snapshotbseL1 - 北交所 L1 快照
snapshotminorL1 - 周边市场 L1 快照
- 包含:最新价、开盘价、最高价、最低价、昨收价、成交量、成交金额、五档买卖盘等
- ENGINE:
MergeTree PARTITION BY toYYYYMMDD(markettime) ORDER BY (markettime, markettype, codestr)
1 分钟级行情快照表
snapshotsse1m - 上交所 1 分钟线
snapshotszse1m - 深交所 1 分钟线
snapshotbse1m - 北交所 1 分钟线
snapshotminor1m - 周边市场 1 分钟线
- 包含:开盘价、最高价、最低价、收盘价、成交量、成交金额
前端路由与页面
| 路由 | 页面 | 说明 |
/login | 登录页 | 用户名密码登录 |
/home | 首页 | 系统概览 |
/write/template | 模板管理 | 模板列表与 CRUD |
/workflow | 新增流程 | 新建模板工作流 |
/workflow/:id | 编辑流程 | 编辑模板工作流 |
/write/froms | 来源列表 | 基础配置 |
/write/types | 类型列表 | 基础配置 |
/write/authors | 作者列表 | 基础配置 |
/news/list | 新闻列表 | 新闻查询与已同步新闻 |
后端 API 总览
User 控制器
POST /api/User/Login
POST /api/User/OutLogin
POST /api/User/ChangePassword
Basic 控制器
POST /api/Basic/GetBasicInfo / SetBasicInfo
POST /api/Basic/GetSourceDBList / GetSourceTableList / GetSourceFieldList
POST /api/Basic/GetDBTableRecord
POST /api/Basic/GetLsString / GetLsStringBase64
Template 控制器
POST /api/Template/GetTemplateList / GetTemplateDetails
POST /api/Template/SetTemplateIndex / SetTemplateDetails
POST /api/Template/RunTemplate / GetRunProgress
POST /api/Template/GetNews / CopyTemplate
Quotes 控制器
POST /api/Quotes/GetQuotesCodeNameTable
POST /api/Quotes/GetL1Quotes
POST /api/Quotes/GetOneMinuteQuotes
项目流程
程序启动 → 注册编码/初始化日志 → 加载配置/市场列表
→ 遍历每个市场 → 启动守护任务 (RunMarketSessionAsync)
→ 创建市场会话 → 首次加载码表
→ 启动定时刷新任务 → 启动心跳任务 → 启动行情接收任务
→ 任一任务异常 → 重试/清理/恢复
部署说明
- 后端监听:
http://0.0.0.0:9100
- 前端构建:
npm run build 输出 dist/ 目录
- 部署方式:前端
dist/ 同步到后端 InsightForge_WebApi/wwwroot/
- 后端通过
MapFallbackToFile("index.html") 支持 SPA 路由
- 代理配置:dev 代理到
http://192.168.1.136:9100/,test/pre 代理到 https://autonews.loongtech.net/
源文件清单
| 文件 | 路径 |
| 前端页面技术文档.md | E:\钱龙\智能资讯\前端页面技术文档.md |
| 后端服务器技术文档.md | E:\钱龙\智能资讯\后端服务器技术文档.md |
| 数据表结构.md | E:\钱龙\智能资讯\数据表结构.md |
| 智能资讯—数据库结构说明V1.1.0.xlsx | E:\钱龙\智能资讯\二期\ |
| 智能资讯需求文档 | E:\钱龙\智能资讯\智能资讯需求文档260414.docx |
| 龙讯财经中心资讯整体规划方案 | E:\钱龙\智能资讯\龙讯财经中心 资讯整体规划方案V1.12(1).docx |