DataSense是基于生成式AI的数据智能体,专注于帮助企业通过数据智能决策,支持系统实现快速、精准、数据驱动的业务运营,帮助企业在复杂和动态的市场环境中保持竞争力。 通过意图识别、推理规划、洞察决策、行动触发四类智能体联动,基于实时数据在前端面板动态生成关键指标、深度洞察及决策建议,实现从自助指标探索到智能分析推荐的进阶,构建全员可用的智能决策中枢,实现数据洞察到业务行动的闭环管理。
1、整体架构和设计思路
后端采用「AI 问数层 + 语义层 + 业务微服务」三层架构。AI 问数层用 Python FastAPI + LangChain + MCP,负责把自然语言转成结构化查询(NL2SQL);语义层用 Java(Spring Boot)实现,是核心——把指标/维度业务模型编译成可执行 SQL,重点处理窗口函数、复合/派生指标的重写与翻译;业务服务层用 Spring Boot 微服务承载问数主链路、数据权限与指标资产管理。存储层统一使用 MySQL、达梦、Redis、Elasticsearch、RocketMQ/Kafka,通过 Docker + K8s 部署,SkyWalking/OpenTelemetry 做可观测。
2、我负责的模块
指标体系:支撑原子指标、派生指标、复合指标三类指标的定义、建模与 SQL 生成(含派生指标拍平、日历/同比环比指标、LAG 窗口指标等),并修复占比类复合指标在滚动时间窗口下的计算错误,新增单测后全量 42 个用例通过;
维度体系:支撑维度模型、事实模型及主/从属维度的关联建模与查询;
指标目录与血缘:负责指标目录的查询、ES 资产同步与指标血缘构建;
问数服务:修复非加性指标下钻维度时合计值丢失/浮动的问题,覆盖合计回填、保留判断、过滤口径等多个环节;
数据权限:定位并修复子账号查不到数据的行级数据范围权限问题,同步修复 3 个指标的 code 不一致;
SSO 登录:设计钉钉扫码自动建号方案(4 重安全校验 + 幂等降级)
3、遇到的难点
①滚动窗口占比指标窗口退化:带 cumulative_window 的占比分母,原逻辑在"配置了时间粒度 + 查询带业务维度"时把时间粒度当作分区键,导致 OVER (PARTITION BY date_day) 内滚动窗口退化为单值求和。解决:在分区维度解析的非空配置分支补充"带窗口则返回空分区"的判断,让分母走全局滚动。
②非加性指标合计口径错乱:重算合计时对查询对象做的是浅拷贝,过滤字段未深拷贝,导致合计值随过滤条件浮动。解决:在 clone 后手动补齐 filters/filterGroups 的深拷贝;同时放宽合计保留判断,避免下钻维度时正确合计值被误丢弃。