786b7d3721
- api/: Go(chi) 只读 API 骨架, /healthz + 版本化路由(占位), Dockerfile, 单测 - ingestion/: Python 采集/ETL 包骨架, units 单位归一化(纯函数+测试), adapter 协议 - docker-compose.yml: postgres + redis + minio + api - .github/workflows/ci.yml: Go build/vet/test + Python ruff/pytest - docs/data-contract.md(两端共享契约) + docs/disclaimer.md(不提供购买声明) - migrations/ 占位(M1 起填充) Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
18 lines
464 B
Python
18 lines
464 B
Python
"""Base adapter protocol shared by all source adapters."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from collections.abc import Iterator
|
|
from typing import Protocol
|
|
|
|
|
|
class SourceAdapter(Protocol):
|
|
"""A source adapter fetches raw product records from one data source."""
|
|
|
|
#: Stable identifier of the source, e.g. "openfoodfacts".
|
|
source_name: str
|
|
|
|
def fetch(self) -> Iterator[dict]:
|
|
"""Yield raw product records as dictionaries."""
|
|
...
|