Migrate Genesys CX Cloud TEI study to the pattern; retire Streamlit app
studies/202512_GenesysCX -> studies/202512_TEI_Genesys_CX_Cloud, rebuilt as pattern Variant 4 (TEI composite reproduction): - teicalc/ self-contained engine: Forrester's tables as the never-edited verbatim anchor (incl. the p.14 typo note and the $0 AI-token line), generic model/scenarios/staging carried over from the Amazon Connect study, ClientDrivers overlay (agents / weekly interactions / revenue, flat composite so no growth re-base) with ai_tokens_annual as a direct input for the token line the published study models at $0 - one deliverable notebook (business_case.ipynb): widget-pair sidebar drivers incl. the AI-token price, published-vs-overlay KPI columns, cash-flow/waterfall/scenario charts, verification gate, backstage JSON data appendix - gate + tests reproduce the published totals within $2: NPV $10.8M / ROI 266% (engine $10,783,466 / 265.79%; payback 3.3 months, not headlined in the PDF); 29 study tests, headless nbconvert green, stage simulation leak-free, exports carry the appendix - old Athena workflow (00_provision..04_export, config.py, seed_data.py, PALLADIUM_GENESYSCX_* keys, ATHENA_EXPECTED reconciliation) deleted; git history preserves it With the last legacy study migrated, the retirement lands too: - app/ (Streamlit UI) and core/notebook_helpers deleted; nothing else imported them - streamlit stripped from pyproject extras, requirements.txt, Makefile; .env.example reduced to the Athena keys; 00_setup.ipynb and core/bootstrap.py repointed at the pattern studies - root README reworked: self-contained studies + slim core/ Athena toolkit (tei_client, calculations, export, cli) All suites green: Genesys 29, Amazon Connect 27, CTM 55, template 7, root 58. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -20,7 +20,6 @@ dependencies = [
|
||||
|
||||
[project.optional-dependencies]
|
||||
notebooks = ["jupyter>=1.0", "ipython>=8.0"]
|
||||
app = ["streamlit>=1.30"]
|
||||
dev = ["pytest>=7.4", "ruff>=0.1"]
|
||||
|
||||
[project.scripts]
|
||||
@@ -28,7 +27,7 @@ palladium = "core.cli.main:main"
|
||||
|
||||
[tool.setuptools.packages.find]
|
||||
include = ["core*", "palladium*"]
|
||||
exclude = ["tests*", "studies*", "app*", "docs*"]
|
||||
exclude = ["tests*", "studies*", "docs*"]
|
||||
|
||||
[tool.pytest.ini_options]
|
||||
testpaths = ["tests"]
|
||||
@@ -46,4 +45,3 @@ ignore = ["E501"] # line length handled by formatter
|
||||
[tool.ruff.lint.per-file-ignores]
|
||||
"studies/*/notebooks/*.ipynb" = ["E402"]
|
||||
"tests/*" = ["F401"]
|
||||
"app/main.py" = ["E402"] # sys.path bootstrap before app imports
|
||||
|
||||
Reference in New Issue
Block a user