项目作品/Pulpulitiko
面向菲律宾的高性能公民情报与政治透明平台,具备深度关系实体图谱、主权债务分析,以及原生Model Context Protocol(MCP)AI集成。

Pulpulitiko是一个面向菲律宾的开放式公民情报与政治透明平台。它并非以标准新闻信息流的形式运作,而是以政治人物作为核心关系节点,串联起历届总统政府(1965年至今)与历史主权债务记录、对外贷款事件(世界银行、亚开行、JICA、中国)、年度SALN资产申报,以及机密与情报资金(CIF)。该平台整合了公民讨论区、经过核实的民意调查、社区选民教育,以及"My Representatives"地理定位查找功能。Pulpulitiko还通过内置的Model Context Protocol(MCP)服务器(采用OAuth 2.0与API密钥安全机制)作为AI就绪的公民数据库,使AI代理能够通过结构化的工具调用直接查询政治财务、法案历史与债务指标。
Key architectural decisions, concrete code implementations, and performance wins behind this project.
Click any node below to inspect its role, tech stack, and engineering implementation.
Server-side rendered bilingual interface with responsive dark mode and instant navigation.
Engineering Highlights:
政治报道平台通常将政治人物视为肤浅的文本标签,使当选官员与其任期内产生的系统性债务、对外贷款义务和财政记录相脱节。
重构关系型架构,以政治人物作为核心实体锚定数据库,在主权债务偿还记录(1965年至今)、对外贷款事件和年度资产申报之间强制建立外键关系与索引。
调查性文章经常涉及多种公民实体的组合(政治人物、双边贷款方案、主权债务记录),但缺乏一种高效且不破坏结构的方式来建模任意关系绑定。
构建了带有复合唯一约束和双重B-tree索引的多态关联表,使编辑内容可以动态绑定到任意实体类型,同时防止重复引用。
现代外部AI代理(如Claude或自定义研究代理)需要以编程方式、安全且结构化地实时访问平台的公民数据库,而无需抓取HTML或绕过身份验证。
使用mark3labs/mcp-go内置了原生Go语言MCP服务器,具备19个模块化工具注册表,支持stdio与HTTP两种传输方式,并采用符合RFC规范的OAuth 2.0与API密钥安全机制。
用户生成的评论和富文本政治文章在嵌入第三方媒体或社交iframe时,可能成为XSS攻击和ReDoS漏洞利用的载体。
实施了严格的Go Bluemonday净化策略,限制CSS类、强制长度限制以防范DoS攻击,并在写入数据库前将iframe严格限制在已批准的域名范围内。
静态robots.txt配置存在风险,可能将非生产的预发布环境暴露给网络爬虫,或在站点地图中索引错误的localhost域名。
构建了服务端渲染的Nuxt 3路由处理器,动态将运行时站点URL注入站点地图指令,应用24小时边缘缓存标头,并阻止爬虫访问管理与身份验证路由。
// community_discussion
Have thoughts, questions, or ideas regarding this system's architecture? Leave a comment below with your GitHub account.