- src/pipeline/upload.py: parse_csv/parse_html → normalize→categorize→validate→upsert - POST /api/upload (multipart) + form on /sources - low-confidence records → review queue, not analytics - +3 tests (16 passed, 1 skipped)
20 lines
282 B
Plaintext
20 lines
282 B
Plaintext
fastapi>=0.110
|
|
uvicorn[standard]>=0.30
|
|
apscheduler>=3.10,<4
|
|
pydantic>=2
|
|
PyYAML>=6
|
|
requests>=2.31
|
|
beautifulsoup4>=4.12
|
|
lxml>=5
|
|
openpyxl>=3.1
|
|
pandas>=2
|
|
numpy>=1.26
|
|
scipy>=1.13
|
|
statsmodels>=0.14
|
|
plotly>=5.20
|
|
python-dotenv>=1.0
|
|
httpx>=0.27
|
|
python-multipart>=0.0.9
|
|
pytest>=8
|
|
httpx2>=0.3
|