duketopceo/open-military-hardware-db

GitHub: duketopceo/open-military-hardware-db

一个涵盖183个军事平台的开源装备数据库,深度集成SIPRI军费与军贸数据,提供REST API和情报控制台前端,专为研究人员、记者和分析师打造。

Stars: 2 | Forks: 0

# 开放式军事装备数据库 [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![SQLite](https://img.shields.io/badge/database-SQLite-green.svg)](https://sqlite.org/) [![FastAPI](https://img.shields.io/badge/api-FastAPI-009688.svg)](https://fastapi.tiangolo.com/) [![React](https://img.shields.io/badge/frontend-React_19-61DAFB.svg)](https://react.dev/) [![平台](https://img.shields.io/badge/platforms-183-orange.svg)](#数据集覆盖范围) [![版本](https://img.shields.io/badge/version-3.0-brightgreen.svg)](docs/VERSION_HISTORY.md) 一个全面的开源军事装备系统关系数据库 —— 涵盖空中、陆地、海上、弹药和软件平台。内置 FastAPI REST API、React 情报控制台前端,以及 JSON/CSV/SQLite 格式的结构化数据。 专为研究人员、记者、分析师和军事爱好者打造。所有数据均源自公开可用的开源信息,并附带完整的引用追踪。 **[在线演示 → omhdb.luke-the-duke.com](https://omhdb.luke-the-duke.com)** ## 开箱即用内容 - 横跨 5 个领域(空中、陆地、海上、弹药、软件)的 **183 个平台** - **675 条来源引用** —— 每个数据点均可追溯至公开来源 - **SIPRI 数据库** —— 8,173 条军费支出记录(175 个国家,1949–2024 年),271 家军工企业,2,219 条营收记录,3,006 次美国军备转让 —— 完全集成,配备 4 个专属 API 端点与分析图表 - **REST API** —— 具备过滤、分页、排序、对比、制造商和 SIPRI 端点 - **情报控制台 UI** —— 深色蓝图美学,三栏布局,角色/承包商过滤 - **结构化导出** —— JSON, CSV, SQLite, SQL 转储文件 - **数据收集框架** —— 支持速率限制、缓存和验证的可插拔收集器 - **角色分类** —— 每个平台均划分为进攻/防御/双重/支援/情报角色 - **承包商过滤** —— 按制造商过滤 (Boeing, Lockheed Martin, Anduril, Palantir 等) - **`backend/` (V2 服务)** —— 使用 FastAPI 与 SQLAlchemy,可选 GraphQL,通过 Docker 运行 Postgres + Redis,使用 JWT 进行管理员写入 —— 详见 **[backend/README.md](backend/README.md)** ## 截图 前端是一个采用蓝图 + 液态玻璃美学的深色模式情报控制台: - **平台浏览器** —— 信息密集的可排序表格,包含领域、角色和承包商过滤器 - **分析仪表板** —— KPI 卡片、领域分布、角色分类、年代细分 - **对比工具** —— 最多支持 10 个平台规格的并排对比 - **详情面板** —— 规格、经济性、武器装备、操作方、作战历史、来源 ## 快速入门 ``` # 克隆 git clone https://github.com/duketopceo/open-military-hardware-db.git cd open-military-hardware-db # 启动 API (根 SQLite 支持的服务) pip install -r requirements.txt # 从 JSON 构建 SQLite/CSV (创建 data/sql/military_hardware.db — 不在 git 中) python scripts/exporters/export_all.py uvicorn api.main:app --host 0.0.0.0 --port 8000 # 启动前端 cd frontend npm install npm run dev # → http://localhost:5000 ``` ### 直接访问数据库 ``` # SQLite sqlite3 data/sql/military_hardware.db "SELECT common_name, category_id, role_type FROM platforms LIMIT 10;" # JSON python3 -c "import json; data=json.load(open('data/json/platforms.json', encoding='utf-8')); print(f'{len(data)} platforms loaded')" ``` 关于 **Docker / Postgres `backend/`** 服务,请参阅 **[backend/README.md](backend/README.md)** 和 **[docker/README.md](docker/README.md)**。 ## REST API (v3.0) 交互式文档位于 `http://localhost:8000/docs` (Swagger UI)。 ### 端点 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/api/v1/platforms` | 列出并过滤平台(分页、排序、多字段过滤) | | `GET` | `/api/v1/platforms/{id}` | 包含规格、经济性、武器、操作方、冲突、来源的完整平台详情 | | `GET` | `/api/v1/stats` | 包含类别、状态和角色类型细分的数据库统计信息 | | `GET` | `/api/v1/categories` | 所有类别及其子类别 | | `GET` | `/api/v1/conflicts` | 所有跟踪的冲突及其平台数量 | | `GET` | `/api/v1/compare?ids=a,b,c` | 并排对比(最多 10 个) | | `GET` | `/api/v1/manufacturers` | 所有制造商及其平台数量和类别 | | `GET` | `/api/v1/sipri/expenditure` | 按国家/年份的军费开支,可过滤 | | `GET` | `/api/v1/sipri/companies` | 军工企业列表及营收数据 | | `GET` | `/api/v1/sipri/transfers` | 美国军备转让,可过滤 | | `GET` | `/api/v1/sipri/stats` | SIPRI 数据集统计与 KPI | | `GET` | `/health` | 健康检查 | ### `/api/v1/platforms` 的查询参数 | 参数 | 类型 | 描述 | |-----------|------|-------------| | `category` | string | 按领域过滤:`air`, `land`, `sea`, `munition`, `software` | | `subcategory` | string | 按子类别过滤:`fighter`, `tank`, `destroyer`, `c2-platform` 等 | | `role_type` | string | 按角色过滤:`offensive`, `defensive`, `dual`, `support`, `intelligence` | | `country` | string | 按 ISO 国家代码过滤:`US`, `RU`, `CN` 等 | | `status` | string | 按状态过滤:`active`, `retired`, `in-production` | | `manufacturer` | string | 制造商名称部分匹配 | | `min_cost` / `max_cost` | float | 单位成本范围 (USD) | | `min_year` / `max_year` | int | 服役年份范围 | | `search` | string | 跨名称、代号、描述的全文搜索 | | `conflict` | string | 过滤在特定冲突中使用的平台 | | `sort_by` | string | 排序字段(默认:`common_name`) | | `sort_order` | string | `asc` 或 `desc` | | `limit` | int | 每页结果数,1–200(默认:50) | | `offset` | int | 分页偏移量 | ### API 调用示例 ``` # 所有美国战斗机 curl "http://localhost:8000/api/v1/platforms?country=US&subcategory=fighter" # 仅防御系统 curl "http://localhost:8000/api/v1/platforms?role_type=defensive" # Anduril 平台 curl "http://localhost:8000/api/v1/platforms?manufacturer=Anduril" # 软件平台 curl "http://localhost:8000/api/v1/platforms?category=software" # 对比 F-35 和 F-22 curl "http://localhost:8000/api/v1/compare?ids=f-35a-lightning-ii,f-22-raptor" # 所有制造商及计数 curl "http://localhost:8000/api/v1/manufacturers" ``` ## 数据集覆盖范围 **V3.0 — 183 个平台 + SIPRI 数据库** | 领域 | 数量 | 示例 | |--------|-------|---------| | 空中 | 53 | F-35A, F-22, F-15EX, B-21 Raider, V-22 Osprey, MQ-9 Reaper, AH-64 Apache, Fury, Ghost-X | | 陆地 | 68 | M1A2 SEPv3 Abrams, M2A4 Bradley, Stryker, HIMARS, Patriot PAC-3, Sentry Tower | | 海上 | 25 | Gerald R. Ford-class, Virginia-class, Zumwalt, Dive-LD, Ghost Shark | | 弹药 | 29 | AIM-120D AMRAAM, AIM-9X, AGM-158 JASSM, Tomahawk, Javelin, Altius-600, Roadrunner | | 软件 | 8 | Palantir Gotham, Palantir Foundry, Palantir AIP, Lattice OS, Lattice Mission Autonomy | **角色分类:** | 角色 | 数量 | 描述 | |------|-------|-------------| | 进攻 | 122 | 主要打击/攻击平台 | | 双重 | 21 | 兼具攻防能力的多用途平台 | | 支援 | 19 | 后勤、运输、C2、ISR 支援 | | 防御 | 15 | 防空、反无人机、导弹防御 | | 情报 | 6 | ISR、监视、侦察 | **SIPRI 集成数据:** | 数据集 | 记录数 | 覆盖范围 | |---------|---------|----------| | 军事开支 | 8,173 | 175 个国家,1949–2024 年 | | 军工企业 | 271 | SIPRI Top 100,2002–2024 年 | | 企业营收 | 2,219 | 年度军备营收记录 | | 美国军备转让 | 3,006 | 130 个接受国,2000–2025 年 | **主要制造商:** Boeing (20), Lockheed Martin (18), Anduril Industries (12), Raytheon/RTX (10), BAE Systems (8), General Dynamics (8+), Northrop Grumman (6), Palantir Technologies (6)。 **每个平台的数据完整性:** - 规格:94% - 经济性(单位成本、项目成本):86% - 来源引用:100% - 媒体引用:90% - 操作方数据:100% - 作战历史:76% ## 数据字段 每个平台条目包括: | 字段组 | 关键字段 | |-------------|-----------| | **标识** | platform_id, common_name, official_designation, NATO 报告名称 | | **分类** | category (air/land/sea/munition/software), subcategory, role_type (offensive/defensive/dual/support/intelligence) | | **来源** | manufacturer, country_of_origin (ISO 3166-1), 研发/服役/生产年份 | | **规格** | 长度、宽度、高度、重量、速度、航程、升限、乘员、动力系统、雷达、装甲 | | **经济性** | unit_cost_usd, unit_cost_adjusted_2024, program_cost, maintenance_cost_per_hour | | **作战** | operators (国家 + 数量), conflicts (附带角色和损失), status | | **媒体** | 图片 URL 及归属和许可信息 | | **来源** | 引用的 URL 及访问日期和可靠性评级 | ## 数据库模式 ``` ┌─────────────┐ ┌──────────────┐ ┌───────────┐ │ platforms │────▶│specifications│ │ categories│ │ │────▶│ economics │ │subcategories│ │ (core) │ └──────────────┘ │ statuses │ │ │ │ countries │ │ │ ┌──────────────┐ └───────────┘ │ │────▶│ armaments │ │ │────▶│ operators │ │ │────▶│platform_conflicts│──▶│conflicts│ │ │────▶│ media │ │ │────▶│ sources │ │ │────▶│ changelog │ └─────────────┘ └──────────────┘ ``` **11 个核心表** + **4 个 SIPRI 表** (`country_military_expenditure`, `arms_companies`, `company_revenue_history`, `arms_transfers`),具有完整的引用完整性。完整的 DDL 请参见 `schemas/`。 ## 项目结构 ``` open-military-hardware-db/ ├── api/ │ ├── main.py # FastAPI app (v2.4) with REST endpoints │ ├── database.py # SQLite query layer with role/manufacturer support │ └── models.py # Pydantic response models ├── frontend/ │ ├── client/ │ │ └── src/ │ │ ├── components/ │ │ │ ├── AppShell.tsx # 3-pane intelligence console layout │ │ │ └── MilitaryIcons.tsx # Custom SVG military icon system │ │ ├── pages/ │ │ │ ├── explorer.tsx # Platform explorer with filters + detail pane │ │ │ ├── stats.tsx # Analytics dashboard (6 charts) │ │ │ └── compare.tsx # Side-by-side comparison tool │ │ └── lib/api.ts # API client + category/status configs │ └── server/index.ts # Express proxy server ├── data/ │ ├── csv/platforms.csv # Flat CSV export │ ├── json/platforms.json # Full nested JSON dataset │ ├── sql/military_hardware.db # SQLite (generated by export; use .gitkeep in repo) │ ├── migrations/ # Version migration scripts │ └── sipri/ # SIPRI external data (expenditure, companies, transfers) ├── backend/ # V2 FastAPI: Alembic/Postgres, GraphQL, Docker profile │ ├── app/ # Application package │ ├── alembic/ # Migrations │ └── tests/ # pytest (run from backend/) ├── schemas/ # SQL DDL + JSON Schema ├── scripts/ │ ├── collectors/ # Pluggable data collection framework │ ├── validators/ # Data cleaning + normalization │ └── exporters/ # Multi-format export pipeline ├── docs/ │ ├── VERSION_HISTORY.md # Detailed version-by-version record │ ├── ARCHITECTURE.md # System architecture │ ├── TECH_STACK.md # Technology catalog │ └── ROADMAP.md # Version roadmap ├── tests/ # 51-test suite ├── docker/ # Container setup ├── requirements.txt └── README.md ``` ## 技术栈 ``` ┌──────────────────────────────────────────────────────────────┐ │ 100% OPEN SOURCE STACK │ ├──────────────────────────────────────────────────────────────┤ │ Data: SQLite • JSON • CSV • SQL │ │ API: FastAPI • Pydantic • uvicorn │ │ Frontend: React 19 • TypeScript • Vite • Tailwind CSS 3 │ │ shadcn/ui • Recharts • wouter • TanStack Query │ │ Fonts: Barlow Condensed • Share Tech Mono │ │ Testing: pytest (51 tests) • GitHub Actions CI │ │ DevOps: Docker • Docker Compose │ └──────────────────────────────────────────────────────────────┘ ``` ## 示例查询 ``` -- Most expensive platforms (inflation-adjusted) SELECT p.common_name, p.category_id, e.unit_cost_adjusted_2024 FROM platforms p JOIN economics e ON p.platform_id = e.platform_id WHERE e.unit_cost_adjusted_2024 IS NOT NULL ORDER BY e.unit_cost_adjusted_2024 DESC LIMIT 5; -- All defensive systems SELECT p.common_name, p.category_id, p.manufacturer FROM platforms p WHERE p.role_type = 'defensive' ORDER BY p.entered_service_year DESC; -- Software platforms by manufacturer SELECT p.common_name, p.manufacturer, p.role_type FROM platforms p WHERE p.category_id = 'software' ORDER BY p.manufacturer; -- Platforms by Anduril Industries SELECT p.common_name, p.category_id, p.role_type, p.entered_service_year FROM platforms p WHERE p.manufacturer = 'Anduril Industries' ORDER BY p.entered_service_year; ``` 更多分析查询(20+ 条)请参见 `docs/sample_queries.sql`。 ## 数据来源 所有数据均收集自公开可用的开源信息: - [Wikipedia](https://en.wikipedia.org/) (CC-BY-SA) — 主要参考来源 - [SIPRI](https://www.sipri.org/) — 军事开支、Top 100 军工企业、军备转让(见 `data/sipri/`) - [GlobalSecurity.org](https://www.globalsecurity.org/) — 运营细节 - [Military Factory](https://www.militaryfactory.com/) — 规格参数 - 官方国防部出版物和新闻稿 - 国会研究处 (CRS) 报告 - 公司投资者演示文稿和产品页面 (Anduril, Palantir 等) ## 文档 | 文档 | 描述 | |----------|-------------| | **[VERSION_HISTORY.md](docs/VERSION_HISTORY.md)** | 完整的版本迭代记录 (V0.0 → V2.5) 及未来路线图 | | **[ARCHITECTURE.md](docs/ARCHITECTURE.md)** | 系统架构与技术设计 | | **[TECH_STACK.md](docs/TECH_STACK.md)** | 技术目录 | | **[ROADMAP.md](ROADMAP.md)** | 版本路线图 (V3.0 → V5.0) | | **[V2 Research Outline](docs/V2_US_RESEARCH_OUTLINE.md)** | V2 美国系统研究方法论 | | **[UI_UX.md](docs/UI_UX.md)** | UI/UX 框架规范(将在 V4.0 中完全实现) | | **[CONTRIBUTING.md](CONTRIBUTING.md)** | 贡献流程、验证、Docker、PR 预期 | | **[backend/README.md](backend/README.md)** | V2 FastAPI 服务 (REST, GraphQL, Postgres, 本地开发) | | **[V2_0_IMPLEMENTATION.md](docs/V2_0_IMPLEMENTATION.md)** | V2.0 分阶段交付总结与延期待办事项 | ## 贡献指南 关于设置、验证和 PR 预期,请参阅 **[CONTRIBUTING.md](CONTRIBUTING.md)**。 添加新平台: 1. 创建符合 `schemas/platform_schema.json` 的 JSON 条目 2. 包含至少 2 个带有 URL 的独立来源 3. 成本使用公制单位和 USD 4. 为所有成本数据指定年份 5. 提交将平台添加至 `data/json/platforms.json` 的 PR ## 版本历史 | 版本 | 名称 | 状态 | |---------|------|--------| | **V0.0–V0.2** | 脚手架 → 工具链 | 完成 | | **V1.0** | 种子数据集 | 完成 — 个平台、模式、工具链 | | **V1.1** | 框架 | 完成 — 架构文档、Docker、扩展模式 | | **V2.0** | 美国扩充 | 完成 — 165 个平台、FastAPI REST API | | **V2.1** | 加固 | 完成 — 51 项测试套件、数据质量审计、CI | | **V2.2** | Beta UI | 完成 — React 前端、深色军事主题 | | **V2.3** | 情报控制台 | 完成 — 蓝图 + 液态玻璃重新设计、三栏布局 | | **V2.4** | 软件与角色 | 完成 — Palantir/Anduril 平台、角色分类、承包商过滤器、军事字体/图标 | | **V2.5** | SIPRI 集成 + 企业级加固 | 完成 — SIPRI 数据暂存、生产部署、企业标准 | | **V3.0** | SIPRI 数据库集成 | 完成 — 4 个 SIPRI 表、4 个 API 端点、分析图表(8,173 条支出记录、271 家企业、3,006 次转让) | | **V3.1** | 全球数据 | 计划中 — 500+ 平台、NATO 盟友及对手、PostgreSQL 迁移 | | **V3.2** | 情报 | 计划中 — 向量嵌入、语义搜索、RAG | | **V4.0** | 体验 | 计划中 — 高级数据可视化、转让地图、AI 聊天 | | **V5.0** | 社区 | 计划中 — 认证、贡献、公共 API 密钥 | 详情请参阅 [VERSION_HISTORY.md](docs/VERSION_HISTORY.md)。 ## 许可证 MIT 许可证。详情请参阅 [LICENSE](LICENSE)。 数据来源于公共领域和 CC-BY-SA 许可的材料。图片归属记录在媒体表中。SIPRI 数据在注明出处的前提下可免费用于非商业研究(见 `data/sipri/README.md`)。使用此数据集时,请引用每个平台 `sources` 数组中列出的原始来源。 ## 免责声明 本数据库仅供教育和研究目的使用。所有信息均来自公开来源。规格可能因变体、生产批次和配置而异。成本数据为近似值,可能反映不同的合同条款或数量。作战数据反映开源报道,可能不完整。 ## AI 辅助开发 本项目使用了包括 [Cursor](https://cursor.com), [Claude Code](https://claude.ai), 和 [GitHub Copilot](https://github.com/features/copilot) 在内的 AI 辅助开发工具。所有 AI 生成的代码在合并前均由维护者审查。有关 AI 智能体的规则和限制,请参见 `AGENTS.md`。
标签:AV绕过, CSV, ESC4, FastAPI, JSON, OSINT, Python, React, REST API, SIPRI, SQLite, Syscalls, 代码示例, 全栈, 军事, 军事历史, 军事装备, 军费开支, 前端, 合同商, 后端, 国防, 开源, 开源数据, 弹药, 情报分析, 情报控制台, 搜索引擎查询, 数据分析, 数据库, 无后门, 武器数据, 武器比较, 武器系统, 武器规格, 测试用例, 海军装备, 硬件, 网络诊断, 自动化攻击, 航空航天, 请求拦截, 逆向工具, 陆地系统