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. 模块结构
2.1 nlfc-naas-risk-common
被 aid 与 algorithm 共同依赖,不单独启动。职责包括:
- 统一响应
R<T>、全局异常GlobalExceptionHandler - MyBatis-Plus、Redis、Swagger、WebMvc、线程池配置
- 腾讯云 COS 工具、Excel/JSON/IRR 等工具类
- 8 个 OpenFeign 客户端定义(跨服务契约层)
@RemindDev切面:定时任务失败邮件告警
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 的业务数据。
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 |
| ORM | MyBatis-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. 系统架构
架构上存在两层算法依赖,需要区分:
- 内部 algorithm 微服务(Nacos 发现):城市网格排名、周边场站数、大屏看板、热力图底表 T+1 同步。
- 外部智电研究院(
algorithm.hostURL 直连):热力图实时计算、建站测算公式 jz-js-1/2/3、AI 报告、大数据场站同步。
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
/sandTable/notify/*)+ @RemindDev 邮件告警。
6. 基础设施
Nacos
bootstrap-{env}.yml 连接 Nacos,共享配置 application-${profile}.yml(group: naas)。本地默认 register-enabled: false。
| 环境 | 典型 Nacos 地址 |
|---|---|
| local/dev | 10.30.51.40:8848 / group naas |
| prod | 10.30.21.45:8848 / group PRISM |
Redis
通过 RedisService 封装,用于城市 MAP 缓存、测算中间结果等。
对象存储
主用腾讯云 COS(tx.cos.*),场景包括场站附件、EAD 跑数文件、Excel 导入结果。
数据库
| 服务 | 库名(local) | Mapper 包 | 实体包 |
|---|---|---|---|
| aid | nlfc_naas_risk | com.newlink.naas.dao | com.newlink.naas.po |
| algorithm | algorithm_data | com.newlink.naas.dao | com.newlink.naas.entity.po |
7. 投资沙盘(SandTable)
沙盘是系统最核心的业务域,API 分布在多个 Controller:
| 路径前缀 | Controller | 能力 |
|---|---|---|
/sandTable | SandTableController | 热力图、网格图、POI 点位图、一键分析、资产测算、AI 报告、配储 |
/sandTable/investCalculate | SandTableInvestCalculateController | 投资测算、合并测算、资产筛选、历史方案 |
/sandTable/manager | SandTableManagerController | 场站 CRUD、Excel 导入、COS 文件、配储结果导入 |
/sandTable/job | SandTableJobController | 同步场站/运营数据、直连站、经纬度校验 |
/sandTable/notify | SandTableNotifyController | AI 报告、新建站 AI、配储分析异步回调 |
/newStationAiAnalyse | NewStationAiAnalyseController | 新建站 AI 选址分析报告 |
核心 Service:SandTableService、SandTableInvestCalculateService、SandTableManagerService、FinanceMetricsService。空间分析使用 Uber H3 六边形网格。
主要表:cs_info、cs_operate_info、sps_info、ess_info、asset_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_map、station_city_map_detail、station_newlink_city_map、station_city_policy。
10. 算法服务(algorithm)
对外 API
| 路径 | 功能 |
|---|---|
/cityData/getRadarChartMaxDataByCity | 城市雷达图最大值 |
/cityData/getDimensionalData | 网格排名(POST) |
/cityData/getAroundStationNumByLatAndLng | 经纬度周边场站数 |
/ScreenKanBan/* | NEF 全国/省/市大屏看板 |
/job/* | 数据同步任务(HTTP 触发,无 @Scheduled) |
algorithm 核心底表
hl_station、rd_station、station_distance、rd_city_hot_map、dimensional_data、china_energy_board 等。
11. 其他业务能力
| 域 | 路径 | 说明 |
|---|---|---|
| 风控 EAD | /ead | 超额/大额预审批 Excel 跑数,提交智电 Python 服务 |
| 高压建设成本 | /hvcs | 城市单车位成本基准数据导入与查询 |
| 投资方运营商 | /investorInfoPo | 主数据维护 |
| 模块配置 | /moduleConfig | 前端模块开关与参数 |
| 外部接口 | /externalInterface | 供 algorithm Feign 拉取场站/距离/运营数据 |
| 飞书 | /feishu | appId、OAuth 用户信息(Lark SDK + USF + prism-system) |
12. aid 控制器全览
| Controller | Base 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 接口 | 目标 | 发现方式 | 用途 |
|---|---|---|---|
| AlgorithmFeign | nlfc-naas-risk-algorithm | Nacos | aid → 网格/周边场站 |
| AidFeign | nlfc-naas-risk-aid | Nacos | algorithm → 场站/运营/距离 |
| FinanceMetricsService | 智电 algorithm.host | URL 直连 | 热力图、测算、AI、大数据同步 |
| StationSupportFeign | nlfc-station-support | Nacos | 直连站、枪信息、省市区 |
| StationRentFeign | nlfc-station-rent | Nacos | 用户视图配置 |
| PrismSystemFeignService | prism-system | Nacos | 飞书用户/部门 |
| MessageNotifyFeign | nlfc-notify-receive | Nacos | 定时任务失败邮件 |
| ChargingFeign / WsFeign | charging / ws | Nacos | 已定义,本仓库未使用 |
15. 部署与配置
| 服务 | spring.application.name | 本地端口 | K8s 端口 |
|---|---|---|---|
| aid | nlfc-naas-risk-aid | 8003 | 8080 |
| algorithm | nlfc-naas-risk-algorithm | 8004 | 8080 |
配置层次:bootstrap.yml → bootstrap-{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. 架构要点与注意事项
- 双库架构:aid 存业务主数据,algorithm 存分析底表,经 Feign 双向同步。
- 三层算法:本地计算(H3/DB)+ 内部 algorithm + 外部智电研究院,排障时需先定位调用层。
- 无 MQ:异步靠 HTTP 回调,集成新异步能力时需评估是否引入消息队列。
- 外部调度必选:未配置 Cron 则热力底表与场站同步不会自动执行。
- 构建一致性:核对 parent artifact 与 algorithm 打包 finalName,避免部署错 JAR。
naas-nef-invest · com.newlink · 投资沙盘 Web 后端架构指南