naas-nef-invest 架构与功能指南

Maven 多模块 Spring Cloud 项目 · 面向充电站投资决策的 B 端后端(建投助手 / 智电风控)

1. 项目定位

本仓库是投资沙盘项目 Web 后端,产品侧又称「建投助手」「智电风控管理系统」。核心用户是投资分析、选址与风控运营人员,通过 Web/H5/飞书入口完成场站选址、资产包测算、热力图分析、建站成本与收益测算等工作。

属性
Maven 坐标com.newlink:naas-nef-invest:1.0.0-SNAPSHOT
描述智电风控管理系统 / 投资沙盘 Web 后端
语言Java 8
打包多模块 POM + 两个可运行 Spring Boot 服务

核心业务域一览

业务域说明主要入口模块
投资沙盘 SandTable热力图、网格图、点位图、资产测算、AI 报告、配储分析nlfc-naas-risk-aid
建站测算 H5单枪造价、硬件成本、投资收益一键测算nlfc-naas-risk-aid
城市 MAP城市大盘、政策、NEF 能源数据地图nlfc-naas-risk-aid
算法数据城市网格排名、大屏看板、热力图底表同步nlfc-naas-risk-algorithm
风控小工具 EAD超额/大额预审批限额 Excel 跑数nlfc-naas-risk-aid
飞书集成应用 ID、OAuth 免登录用户信息nlfc-naas-risk-aid

2. 模块结构

naas-nef-invest/ # 父 POM(artifactId: naas-nef-invest) ├── nlfc-naas-risk-common/ # 公共库:配置、Feign、工具、异常、Redis ├── nlfc-naas-risk-aid/ # 主 Web API 服务(业务主库 nlfc_naas_risk) └── nlfc-naas-risk-algorithm/ # 算法/数据服务(库 algorithm_data)

2.1 nlfc-naas-risk-common

被 aid 与 algorithm 共同依赖,不单独启动。职责包括:

2.2 nlfc-naas-risk-aid

主业务服务,启动类 AidApplication,注册名 nlfc-naas-risk-aid。包含 15 个 REST Controller、约 30+ Service、27 个 Mapper,承载沙盘、H5、城市 MAP、飞书、EAD 等全部面向前端的 API。

2.3 nlfc-naas-risk-algorithm

算法与数据同步服务,启动类 AlgorithmApplication,注册名 nlfc-naas-risk-algorithm。维护分析侧底表(热力图五步法、互联互通场站、大屏看板),并通过 Feign 回查 aid 的业务数据。

构建注意 子模块 POM 的 parent 引用为 nlfc-naas-risk,与根 artifact naas-nef-invest 不一致;algorithm 模块 finalName 与 aid 同为 nlfc-naas-risk-aid.jar,部署前建议核对 Maven 构建配置。

3. 技术栈

类别组件 / 版本
基础框架Spring Boot 2.2.10.RELEASE
微服务Spring Cloud Hoxton.SR8
注册配置Spring Cloud Alibaba 2.2.1 + Nacos 1.3.0
ORMMyBatis-Plus 3.1.0 + PageHelper 5.2.1
远程调用OpenFeign + OkHttp,Sentinel 熔断
缓存Spring Data Redis
对象存储腾讯云 COS(主用);阿里云 OSS 配置保留
消息队列RocketMQ 4.9.0(父 POM 声明,代码未使用
地理索引Uber H3 4.1.1(aid 模块)
飞书Lark OAPI SDK 2.0.14
文档Swagger 2.9.2
可观测SkyWalking Logback、Actuator + Prometheus

4. 系统架构

┌─────────────────────────────────────────────────────────────────┐ │ 前端 / 飞书 H5 / NEF 大屏 │ └────────────┬───────────────────────────────┬────────────────────┘ │ HTTP │ HTTP ▼ ▼ ┌────────────────────────────┐ ┌────────────────────────────┐ │ nlfc-naas-risk-aid │ │ nlfc-naas-risk-algorithm │ │ :8003 (local) / :8080 │◄──►│ :8004 (local) / :8080 │ │ DB: nlfc_naas_risk │ │ DB: algorithm_data │ └──────┬──────────┬──────────┘ └────────────┬─────────────┘ │ │ │ │ Feign │ URL Feign │ Feign + HTTP Job ▼ ▼ ▼ ┌──────────┐ ┌──────────────┐ ┌────────────┐ ┌──────────────────┐ │algorithm │ │智电研究院 │ │station- │ │ prism-system │ │(内部) │ │algorithm.host│ │support/rent│ │ notify-receive │ └──────────┘ └──────────────┘ └────────────┘ └──────────────────┘

架构上存在两层算法依赖,需要区分:

5. 数据流与调用链

5.1 热力图展示(实时)

前端 → GET /sandTable/get/thermalMap
     → SandTableService
     → FinanceMetricsService(智电 executor-server / xndc)
     → 转 GeoJSON FeatureCollection 返回

5.2 热力图底表同步(批处理 T+1)

外部调度器 → GET /job/syncHotMap(algorithm)
          → 五步法:hl_station → rd_station → rd_near_station
                    → grid_centers → rd_city_hot_map
          → 每步通过 AidFeign 从 aid /externalInterface 拉数据

5.3 新建站 AI 分析(异步回调)

前端 → /newStationAiAnalyse/getNewStationAiResult
     → AlgorithmFeign(网格排名 + 周边场站数)
     → FinanceMetricsService(智电异步报告)
     → 智电回调 POST /sandTable/notify/newStationAiResultNotify
异步模式 项目未使用 RocketMQ;异步场景采用 HTTP 回调(/sandTable/notify/*)+ @RemindDev 邮件告警。

6. 基础设施

Nacos

bootstrap-{env}.yml 连接 Nacos,共享配置 application-${profile}.yml(group: naas)。本地默认 register-enabled: false

环境典型 Nacos 地址
local/dev10.30.51.40:8848 / group naas
prod10.30.21.45:8848 / group PRISM

Redis

通过 RedisService 封装,用于城市 MAP 缓存、测算中间结果等。

对象存储

主用腾讯云 COS(tx.cos.*),场景包括场站附件、EAD 跑数文件、Excel 导入结果。

数据库

服务库名(local)Mapper 包实体包
aidnlfc_naas_riskcom.newlink.naas.daocom.newlink.naas.po
algorithmalgorithm_datacom.newlink.naas.daocom.newlink.naas.entity.po

7. 投资沙盘(SandTable)

沙盘是系统最核心的业务域,API 分布在多个 Controller:

路径前缀Controller能力
/sandTableSandTableController热力图、网格图、POI 点位图、一键分析、资产测算、AI 报告、配储
/sandTable/investCalculateSandTableInvestCalculateController投资测算、合并测算、资产筛选、历史方案
/sandTable/managerSandTableManagerController场站 CRUD、Excel 导入、COS 文件、配储结果导入
/sandTable/jobSandTableJobController同步场站/运营数据、直连站、经纬度校验
/sandTable/notifySandTableNotifyControllerAI 报告、新建站 AI、配储分析异步回调
/newStationAiAnalyseNewStationAiAnalyseController新建站 AI 选址分析报告

核心 Service:SandTableServiceSandTableInvestCalculateServiceSandTableManagerServiceFinanceMetricsService。空间分析使用 Uber H3 六边形网格。

主要表:cs_infocs_operate_infosps_infoess_infoasset_calculate_*new_station_ai_* 等。

8. 建站测算 H5

入口 /h5/calculate/*(StationCalculateController)。

接口说明智电路径
参数配置 CRUD用户个性化测算参数本地 DB
/gunCost单枪造价推算jz-js-1
/hardwareCost硬件成本推算jz-js-2
/investIncome投资收益测算jz-js-3
/all/submit一键提交多种测算组合调用

9. 城市 MAP

入口场景
/h5/city/*H5:城市列表、大盘、政策、NEF 地图、省市区编码
/manager/*后台:Excel 导入导出、城市基础/详情/能链 MAP CRUD

相关表:station_city_mapstation_city_map_detailstation_newlink_city_mapstation_city_policy

10. 算法服务(algorithm)

对外 API

路径功能
/cityData/getRadarChartMaxDataByCity城市雷达图最大值
/cityData/getDimensionalData网格排名(POST)
/cityData/getAroundStationNumByLatAndLng经纬度周边场站数
/ScreenKanBan/*NEF 全国/省/市大屏看板
/job/*数据同步任务(HTTP 触发,无 @Scheduled)

algorithm 核心底表

hl_stationrd_stationstation_distancerd_city_hot_mapdimensional_datachina_energy_board 等。

11. 其他业务能力

路径说明
风控 EAD/ead超额/大额预审批 Excel 跑数,提交智电 Python 服务
高压建设成本/hvcs城市单车位成本基准数据导入与查询
投资方运营商/investorInfoPo主数据维护
模块配置/moduleConfig前端模块开关与参数
外部接口/externalInterface供 algorithm Feign 拉取场站/距离/运营数据
飞书/feishuappId、OAuth 用户信息(Lark SDK + USF + prism-system)

12. aid 控制器全览

ControllerBase Path职责摘要
SandTableController/sandTable沙盘地图与测算主入口
SandTableInvestCalculateController/sandTable/investCalculate投资测算
SandTableManagerController/sandTable/manager沙盘数据管理
SandTableJobController/sandTable/job沙盘同步任务
SandTableNotifyController/sandTable/notify异步回调
NewStationAiAnalyseController/newStationAiAnalyse新建站 AI
StationCalculateController/h5/calculate建站测算 H5
CityMapController/h5/city城市 MAP H5
CityManagerController/manager城市 MAP 后台
ExternalInterfaceController/externalInterface跨服务数据出口
FeiShuApiController/feishu飞书登录
EadScreenFetchController/ead风控跑数
HvcsConstructionCostController/hvcs高压建设成本
InvestorInfoController/investorInfoPo投资方主数据
ModuleConfigController/moduleConfig模块配置

Swagger:http://{host}:{port}/swagger-ui.html

13. algorithm 控制器与 Job

端点说明
GET /job/syncStationDistanceData同步场站距离
GET /job/syncStationOperateData同步场站月运营
GET /job/syncHotMap热力图五步法编排入口
GET /job/syncHlStationData … syncRdCityHotMapData五步法分步执行

14. Feign 集成矩阵

Feign 接口目标发现方式用途
AlgorithmFeignnlfc-naas-risk-algorithmNacosaid → 网格/周边场站
AidFeignnlfc-naas-risk-aidNacosalgorithm → 场站/运营/距离
FinanceMetricsService智电 algorithm.hostURL 直连热力图、测算、AI、大数据同步
StationSupportFeignnlfc-station-supportNacos直连站、枪信息、省市区
StationRentFeignnlfc-station-rentNacos用户视图配置
PrismSystemFeignServiceprism-systemNacos飞书用户/部门
MessageNotifyFeignnlfc-notify-receiveNacos定时任务失败邮件
ChargingFeign / WsFeigncharging / wsNacos已定义,本仓库未使用

15. 部署与配置

服务spring.application.name本地端口K8s 端口
aidnlfc-naas-risk-aid80038080
algorithmnlfc-naas-risk-algorithm80048080

配置层次:bootstrap.ymlbootstrap-{env}.yml → Nacos application-{profile}.yml;本地开发可参考 application-local.yml

关键配置项

配置键用途
algorithm.host智电研究院 API 根地址
feishu.appId / appSecret飞书应用凭证
feishu.usf.*USF 网关免登录
tx.cos.*腾讯云 COS
geo.key高德地图 API

16. 定时任务(外部调度)

代码中无 @Scheduled,所有批处理通过 HTTP GET 由 K8s Cron / XXL-JOB 等触发:

服务任务入口说明
aid/sandTable/job/*从智电大数据 + 直连站中台同步场站/运营到 aid 库
algorithm/job/*从 aid 拉数据写入 algorithm_data,支撑热力图与大屏

失败时 @RemindDev 触发 MessageNotifyFeign 发送邮件告警。

17. 架构要点与注意事项

  1. 双库架构:aid 存业务主数据,algorithm 存分析底表,经 Feign 双向同步。
  2. 三层算法:本地计算(H3/DB)+ 内部 algorithm + 外部智电研究院,排障时需先定位调用层。
  3. 无 MQ:异步靠 HTTP 回调,集成新异步能力时需评估是否引入消息队列。
  4. 外部调度必选:未配置 Cron 则热力底表与场站同步不会自动执行。
  5. 构建一致性:核对 parent artifact 与 algorithm 打包 finalName,避免部署错 JAR。
文档说明 本页基于仓库源码与配置整理,生成时间随代码演进可能滞后。以 Nacos 生产配置与实际部署为准。

naas-nef-invest · com.newlink · 投资沙盘 Web 后端架构指南