feat: initial scaffold for Rock Cosmetics Adit ingestion (#1784)

- pyproject.toml with rock-ingest CLI entrypoint
- config, db, ingest, migrate modules mirroring agency-marketing-ingest patterns
- column_map.py with stubbed COLUMN_MAP — fill once Adit CSV export lands
- 3 SQL migrations: schema bootstrap, imports tracking, leads table with GHL match_status
- drop/ directory for Adit export files (CSV first, xlsx fallback)
- GHL_CLINIC_NUM TBD pending Sir Alex Therrien confirmation
This commit is contained in:
Eugine Lopez 2026-06-20 02:43:03 +08:00
commit d63cfe81c6
14 changed files with 799 additions and 0 deletions

52
pyproject.toml Normal file
View file

@ -0,0 +1,52 @@
[project]
name = "rock-cosmetics-ingestion"
version = "0.1.0"
description = "Adit export ingestion for Rock Cosmetics — feeds APID Attribution Dashboard (#1784)."
readme = "README.md"
requires-python = ">=3.12"
license = { text = "Proprietary" }
authors = [{ name = "Eugine Lopez" }]
dependencies = [
"openpyxl>=3.1",
"psycopg[binary,pool]>=3.2",
"pydantic>=2.9",
"pydantic-settings>=2.6",
"typer>=0.13",
]
[project.scripts]
rock-ingest = "rock_cosmetics_ingest.cli:app"
[dependency-groups]
dev = [
"pytest>=8.3",
"pyright>=1.1",
"ruff>=0.7",
]
[build-system]
requires = ["uv_build>=0.4"]
build-backend = "uv_build"
[tool.uv.build-backend]
module-name = "rock_cosmetics_ingest"
[tool.ruff]
target-version = "py312"
line-length = 100
src = ["src", "tests"]
[tool.ruff.lint]
select = ["E", "W", "F", "I", "B", "UP", "SIM", "RUF"]
ignore = ["E501"]
[tool.pyright]
include = ["src", "tests"]
typeCheckingMode = "basic"
pythonVersion = "3.12"
reportMissingImports = "error"
reportMissingTypeStubs = false
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-ra --strict-markers"