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),仅供参考

相关新闻

从 Vite 代理到 Rust IPC:Hermes-CN-Desktop 开发模式与生产模式的区别全解

从 Vite 代理到 Rust IPC:Hermes-CN-Desktop 开发模式与生产模式的区别全解

人工智能AI Agent桌面应用 【免费下载链接】Hermes-CN-Desktop Hermes Agent CN desktop app, Windows-First, built with Tauri, Typescript and Rust. Isolated Hermes Agent core insides. 项目地址: https://gitcode.com/gh_mirrors/he/Hermes-CN-Desktop 点击…

2026/10/11 13:17:54 阅读更多 →
AI时代下,GEM优化组织落地工程化:角色路由+KPI埋点+预算分配表

AI时代下,GEM优化组织落地工程化:角色路由+KPI埋点+预算分配表

给开发者一个工程化读法:市场部组织落地,本质是三张配置表——角色路由表(四个位置各归其人)、KPI 埋点表(CPCQ 三层指标)、预算分配表(四块分账)加上一个 90 天迭代周期。结论先说&…

2026/10/11 13:17:54 阅读更多 →
Qt文件管理器实战:QFileSystemModel与QTreeView工程解析

Qt文件管理器实战:QFileSystemModel与QTreeView工程解析

简介:这是一份面向QT初学者与C GUI开发入门者的轻量级文件管理器项目源码,基于QT框架实现,帮助读者理解桌面端文件管理工具的基本架构与交互逻辑。压缩包共33个文件,约80KB,包含8个cpp源文件、7个h头文件、4个ui界面文…

2026/10/11 13:17:54 阅读更多 →

最新新闻

伪装目标检测实战:多视角特征融合与注意力机制提升弱对比度识别

伪装目标检测实战:多视角特征融合与注意力机制提升弱对比度识别

简介:伪装目标检测旨在分割隐蔽于复杂环境中的目标,这份文档提出多视角特征融合网络(MFFN),面向计算机视觉研究者与相关应用开发者,用于解决单视图检测器对背景干扰敏感、边界模糊和形状多变时检测不准的问…

2026/10/11 14:07:19 阅读更多 →
多视角特征融合网络:破解伪装目标检测的边界模糊难题

多视角特征融合网络:破解伪装目标检测的边界模糊难题

简介:《多视角特征融合网络的伪装目标检测》是一份面向计算机视觉研究者和算法工程师的PDF学术资料,针对伪装目标检测中目标体积小、边界模糊、与背景高度相似导致单视图检测器易受干扰的难题,提出受人类多角度观察启发的多视角特征融合网络&…

2026/10/11 14:07:19 阅读更多 →
快递包裹目标检测实战:从LabelMe数据集到Jetson Nano部署

快递包裹目标检测实战:从LabelMe数据集到Jetson Nano部署

简介:这是一套面向计算机视觉工程师与AI算法研发人员的快递包裹目标检测专用训练数据集,适用于物流自动化、智能分拣系统、无人配送场景下的物体识别模型训练与验证。资源包含2919张真实场景JPEG图像及配套的2000个labelme格式JSON标注文件(部…

2026/10/11 14:07:19 阅读更多 →
C++实现波兰表达式求值:前缀表达式与栈的深度解析

C++实现波兰表达式求值:前缀表达式与栈的深度解析

聊到表达式求值,很多人第一反应是逆波兰表达式,后缀那种,因为各教程里讲得最多。其实还有一个它的“镜像兄弟”——波兰表达式,也叫前缀表达式,运算符写在两个操作数前面,比如 * 3 4 2 表示 (34)*2 。…

2026/10/11 14:07:19 阅读更多 →
光猫、路由器、交换机区别与接线顺序:家庭组网入门指南

光猫、路由器、交换机区别与接线顺序:家庭组网入门指南

1. 先搞清楚全屋网络的“骨架”:设备到底在干什么很多人一听到“路由器、交换机、光猫”就头大,觉得这三个名字长得像,功能好像也都在“让设备能上网”,买的时候更是被商家文案绕得晕头转向。其实搞懂它们没那么复杂,核…

2026/10/11 14:07:19 阅读更多 →
LDAPs功能测试全流程指南:核心用例与排障实战

LDAPs功能测试全流程指南:核心用例与排障实战

1. LDAPs功能测试到底测什么:先把范围界定清楚做功能测试的人往往有个惯性思维,看到LDAPs第一反应是"这不就是LDAP加了个S吗,把明文换成加密,其他功能照测就行"。这个想法不能说错,但会漏掉很多真正要紧的东…

2026/10/11 14:06:18 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →