slicedearth/contract-delta-au
GitHub: slicedearth/contract-delta-au
一个监控澳大利亚政府合同公告变更并生成可视化对比仪表板的数据追踪项目,帮助研究者追踪公共采购合同的字段级历史修订。
Stars: 0 | Forks: 0
# ContractDelta AU
**澳大利亚政府合同的版本控制。**
ContractDelta AU 监控公开的 AusTender 合同公告,并记录报告的合同价值、日期、供应商、机构、描述、类别和采购方式随时间的变化。
[查看仪表板](https://slicedearth.github.io/contract-delta-au/) ·
[阅读方法论](docs/methodology.md) ·
[检查数据字典](docs/data-dictionary.md)
## 展示内容
- 可复现的修改前后对比
- 按 AusTender 显式 `-A#` 标识符排序的修订时间线
- 机构与供应商摘要
- 指向主要 OCDS 源记录的直接链接
- 可下载的 JSON 证据和 CSV 变更数据
- 源哈希、检索清单和质量终止检查
ContractDelta 无法识别欺诈或不当行为。这些变更仅为研究线索,需要结合背景并从主要来源进行验证。
## 工作原理
```
AusTender OCDS API
│
▼
fetch cursor pages → hydrate amendment histories → validate and minimise
│
▼
normalise amounts, dates, whitespace, parties, categories, and notice IDs
│
▼
compare versions → append immutable field events → hash evidence
│
▼
generate static JSON, CSV, contract timelines, and Astro pages
│
▼
GitHub Actions → GitHub Pages
```
该 pipeline 遵循 API 的不透明 cursor 链接,并进行严格的同源检查。当日期范围页面包含修订时,它会获取该合同的父历史记录,以便新存储库仍能计算出真实的修改前数值。联系人、电子邮件地址、ABN 和街道地址被刻意排除。
## 本地开发
环境要求:Python 3.12+ 和 Node.js 22+。
```
python3 -m venv .venv
.venv/bin/pip install -e '.[dev]'
.venv/bin/contract-delta ingest-fixture tests/fixtures/amended_releases.json
cd site
npm ci
npm run dev
```
运行检查:
```
.venv/bin/ruff check .
.venv/bin/pytest --cov=contract_delta --cov-report=term-missing
cd site && npm run check && npm run build
```
获取实时的最新修改时间窗口:
```
.venv/bin/contract-delta update --from 2026-07-14 --to 2026-07-15
```
日期范围上限为 31 天,默认分页上限为 250 页,瞬时源失败将进行重试,并且如果验证失败超过 2%,发布过程将停止。
## 存储库布局
```
src/contract_delta/ typed source client, normalisation, diff, and publication
tests/ behavioural tests and privacy-minimised public fixtures
data/state/ current normalised contract history
data/events/ immutable field-level events
data/manifests/ retrieval, quality, count, and checksum evidence
site/ static Astro dashboard
docs/ architecture, methodology, ethics, and data definitions
.github/workflows/ CI, scheduled updates, and Pages deployment
```
## 自动化与成本
公开存储库使用标准的 GitHub 托管 Actions 和 GitHub Pages。无需应用服务器、数据库、账户系统、密钥、付费 API 或生产环境的语言模型依赖。每周更新程序也支持手动运行,并且仅在派生数据发生更改时才执行提交。
预计的定期托管成本:对于使用标准 runner 和内置静态部署的公开存储库,为 **$0**。
## 主要来源与署名
- [AusTender OCDS API 文档](https://github.com/austender/austender-ocds-api)
- [澳大利亚政府合同公告数据集](https://data.gov.au/data/dataset/historical-australian-government-contract-data/resource/a7f471ad-e085-49b5-bd6b-1b270ea46e99)
- [合同公告数据字典](https://data.gov.au/data/dataset/5c7fa69b-b0e9-4553-b8df-2a022dd2e982/resource/ae4fec2d-e4aa-46b6-baf6-21e4296a62e4/download/contract-notice-dataset.pdf)
AusTender 派生的数据和 fixtures 归属于澳大利亚政府财政部,并根据 [知识共享署名 3.0 澳大利亚许可协议](https://creativecommons.org/licenses/by/3.0/au/) 使用。
应用程序源代码在 [MIT 许可协议](LICENSE) 下提供。
标签:Astro, GitHub Actions, Python, 安全可观测性, 政府合同, 数据监控, 无后门, 版本控制, 自动笔记