br-acc技术架构深度解析:从公开数据源到Neo4j、FastAPI与React的完整数据流
【免费下载链接】br-accWorld Transparency Graph public codebase ( website in progress)项目地址https://gitcode.com/gh_mirrors/br/br-acc点击查看免费下载br-accWorld Transparency Graph是一个开源的图数据库基础设施项目它将巴西数十个政府公开数据源——公司登记、选举数据、政府采购、财政审计等——统一清洗后加载进 Neo4j 图数据库再通过 FastAPI 后端和 React 前端让任何人都能搜索企业、探索关联网络。这篇文章带你完整走一遍它的技术架构与数据流。一、整体架构一张图看懂 br-acc 的数据流br-acc 的架构可以概括为一条单向数据流水线共 5 个环节公开数据源 → ETL 管道 → Neo4j 图数据库 → FastAPI 后端 → React 前端 / 公共 API层技术选型作用图数据库Neo4j 5 Community存储 ~1.4 亿节点、~9200 万关系后端 APIFastAPIPython 3.12异步对外提供查询接口前端Vite React 19 TypeScript搜索、图谱可视化、实体分析ETLPythonpandas httpx下载、清洗、加载数据基础设施Docker Compose一键启动全部服务官方架构速览见 README.md。二、第一站ETL 管道如何吞下公开数据源 1. 45 条管道统一抽象所有 ETL 逻辑位于 etl/src/bracc_etl/ 目录。每条数据源对应一个管道模块如 CNPJ 公司注册、TSE 选举、ComprasNet 政府采购共 40 多条全部继承同一个抽象基类 Pipelineextract()—— 从政府门户下载原始数据transform()—— 规范化、去重、脱敏load()—— 批量写入 Neo4j默认每批 5 万行这种设计的好处是新增一个数据源只需写一个管道类下载脚本与加载逻辑即可复用。2. 每次运行都可审计 Pipeline.run() 在执行前后会在图里写入一条IngestionRun节点记录状态running / loaded / quality_fail、行数与错误信息——每一次数据加载都有据可查。3. 数据源全景完整的数据源清单与节点规模统计表在 docs/data-sources.md例如数据源管道规模CNPJ联邦税务公司登记cnpj5360 万 Company 节点TSE选举与捐款tse710 万 Person 节点PGFN欠税pgfn2400 万条债务关系ComprasNet联邦采购comprasnet108 万 Contract 节点三、第二站Neo4j 图数据库层 ️Neo4j 是整个系统的数据中枢。生产快照约为1.41 亿节点、9200 万关系覆盖 35 种节点标签与 33 种关系类型docs/data-sources.md。关键基础设施文件容器编排infra/docker-compose.yml 配置了 Neo4j 5 容器、APoC 插件与 3G 页缓存内存初始化脚本infra/neo4j/init.cypher开发种子数据infra/scripts/seed-dev.sh 可加载确定性演示图演示数据集data/demo/synthetic_graph.json图的价值在于连接一家公司Company可以通过SOCIO_DE股东关联到个人通过VENCEU中标关联到政府采购合同通过SANCIONADA被处罚关联到 TCU 审计处罚——单看任何一张表都发现不了的关联在图里一查即现。四、第三站FastAPI 后端 API 1. 应用组装与中间件后端入口是 api/src/bracc/main.py启动时依次组装了组件职责源码位置限流中间件slowapi 接口限速middleware/rate_limit.py安全响应头CSP、X-Frame-Options 等middleware/security_headers.pyCPF 脱敏响应中自动掩码个人税号middleware/cpf_masking.py路由注册10 个业务路由auth/entity/search/graph 等routers/启动生命周期 还会做两件安全门禁拒绝弱 JWT 密钥和拒绝 Neo4j 默认密码生产环境配置不达标会直接抛错退出。2. 查询即文件Cypher 与代码分离 一个很优雅的设计——所有 Cypher 查询不以字符串散落在 Python 代码里而是独立存放在 api/src/bracc/queries/ 目录如 search.cypher、entity_connections.cypher。服务层通过 CypherLoader 按需加载并缓存再由 execute_query() 带参执行。修改查询逻辑无需碰 Python 代码。3. 公共模式守卫隐私优先️br-acc 的核心原则是只呈现事实不做指控。public_guard.py 实现了公共模式策略Person类节点在公共部署中默认隐藏cpf、doc_raw等敏感属性在返回前被剥离内部标签User / Investigation 等仅限登录用户访问配套的合规文档见 docs/legal/public-compliance-pack.md。4. 主要 API 端点方法路由说明GET/health健康检查GET/api/v1/public/meta聚合指标与数据源健康度GET/api/v1/public/graph/company/{cnpj}企业子图GET/api/v1/public/patterns/company/{cnpj}模式分析可选开启完整文档在本地启动后访问http://localhost:8000/docs查看。五、第四站React 前端 ️前端位于 frontend/技术栈为Vite React 19 TypeScript页面通过 App.tsx 组织路由。核心页面SearchSearch.tsx—— 全局实体搜索GraphExplorerGraphExplorer.tsx—— 交互式关系网络画布EntityAnalysisEntityAnalysis.tsx—— 实体关联与时间线分析PatternsPatterns.tsx—— 公开风险模式卡片InvestigationsInvestigations.tsx—— 标注与调查工作区需登录前端状态用 Zustand 管理frontend/src/stores/API 调用统一走 api/client.ts。生产部署时由 frontend/nginx.conf 做静态托管并反代 API。六、端到端数据流一次查询是怎么发生的 ⚡把四层串起来一个典型请求的生命周期如下数据入库bracc-etl run --source cnpj之类的命令触发管道runner.py 中注册了全部 40 余条管道的映射表图存储清洗后的节点与关系写入 Neo4jIngestionRun记录留痕API 查询用户请求GET /api/v1/public/graph/company/XXXFastAPI 路由加载对应.cypher文件执行隐私过滤public_guard剥离敏感属性中间件掩码 CPF前端渲染React 图谱画布把返回的节点/关系渲染为可交互网络七、本地快速启动可选上手cp .env.example .env docker compose up -d --build bash infra/scripts/seed-dev.sh启动后验证地址API 健康检查http://localhost:8000/health前端http://localhost:3000Neo4j Browserhttp://localhost:7474如需运行全量历史数据编排耗时数小时注意磁盘与带宽可参考 docs/bootstrap_all.md 与make bootstrap-allMakefile。八、总结br-acc 架构的三个亮点 ✨管道化 ETL45 数据源共享同一套 extract → transform → load 抽象新增源成本极低查询与代码分离Cypher 文件化 缓存加载图查询可独立演进与审计隐私优先的公共守卫从中间件脱敏到节点级策略默认公共安全合规文档齐全无论你是想了解图数据库在真实公开数据场景中的落地还是想学习 FastAPI Neo4j React 的三层协作模式br-acc 的代码组织api/ · etl/ · frontend/ · infra/都值得一读。赞分享【免费下载链接】br-accWorld Transparency Graph public codebase ( website in progress)项目地址https://gitcode.com/gh_mirrors/br/br-acc点击查看免费下载相关推荐ToolJet架构深度解析从数据库到前端的完整技术栈ToolJet架构深度解析从数据库到前端的完整技术栈 ToolJet采用现代化的前后端分离架构通过React TypeScript构建前端应用Nest低代码后端前端AI 应用MCP 服务JStorm核心架构深度解析从Spout到Bolt的完整数据流JStorm核心架构深度解析从Spout到Bolt的完整数据流 JStorm作为企业级流处理引擎其核心架构围绕Topology、Spout和Bolt三大组件大数据Eigent技术架构深度解析从FastAPI到React的全栈实现Eigent技术架构深度解析从FastAPI到React的全栈实现 Eigent作为全球首个多智能体工作流平台其技术架构融合了现代Web开发的精华。本文将深人工智能AI Agent多智能体大模型本地部署MCP 服务桌面应用工作流自动化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考