Issue #543 — Validate Estimated Cost Accuracy (UI vs Backend) Backend: - cost_estimator.py uses pricing catalog (APIProviderPricing) as single source of truth - All 7 cost components: analysis, research (search+LLM), script, TTS, voice clone, avatar, video - initialize_default_pricing() runs on every app startup for auto-sync Frontend cost estimation fixes: - Added missing analysisCost, scriptCost, voiceCloneCost to PodcastEstimate type - toPodcastEstimate() now extracts all 7 backend fields (was dropping 3) - headerCostEst maps analysisCost->Analyze, scriptCost->Write, voiceCloneCost->Produce - EstimateCard shows 5 chips: Analysis, Research, Script, Voice(TTS+clone), Visuals(avatar+video) - Chip sum now equals backend total for all configurations Subscription & plan fixes: - Removed Stripe re-verification from checkSubscription() (downgrade regression fix #539) - Added verifyCheckoutRef pattern for reliable mount-time checkout polling - One-time Stripe sync effect with pending_subscription_change flag for Customer Portal returns - Free plan limits: stability_calls 3->10, audio_calls 5->10 (supports 2 podcasts) - Image enforcement uses actual provider (GPT_PROVIDER), not hardcoded Stability - Billing/pricing pages bypass onboarding check in ProtectedRoute - Gradient buttons + loading spinner on plan chip in UserBadge - Added metadata-based Stripe lookup fallback (Issue #538) Documentation: - TESTING_GUIDE.md: comprehensive testing instructions for non-technical testers - Free plan limits, usage tracking, cost estimation formulas - 10 test cases for UI verification - Troubleshooting guide - Quick-reference cost formulas with all default rates Cleanup: removed legacy ToBeMigrated directory (70+ files, ~22K LOC) GSC Brainstorm: service, hook, modal, and UI components for blog topic brainstorming
289 lines
3.5 KiB
Plaintext
289 lines
3.5 KiB
Plaintext
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*.db
|
|
*.sqlite*
|
|
|
|
nul
|
|
LICENSE
|
|
CHANGELOG.md
|
|
|
|
.planning
|
|
.planning/
|
|
|
|
|
|
.trae/
|
|
.trae
|
|
|
|
workspace/
|
|
workspace/*
|
|
|
|
.windsurf
|
|
artifacts
|
|
|
|
.opencode
|
|
|
|
data/
|
|
data/*
|
|
|
|
.trae/
|
|
/backend/database/migrations/*
|
|
/backend/.db
|
|
backend/*.db
|
|
backend\youtube_audio
|
|
youtube_avatars
|
|
backend\youtube_images
|
|
data/media/podcast_videos/AI_Videos
|
|
backend/.trae_*
|
|
|
|
# Onboarding progress files
|
|
.onboarding_progress.json
|
|
backend/.onboarding_progress.json
|
|
backend/database/migrations/*
|
|
|
|
*.mp3
|
|
podcast_audio/*
|
|
backend/podcast_audio/
|
|
|
|
|
|
podcast_audio/
|
|
podcast_images/
|
|
youtube_videos/
|
|
backend/podcast_images/
|
|
backend/podcast_videos/
|
|
|
|
backend/researchtools_text/projects/
|
|
youtube_avatars/
|
|
youtube_avatars/*
|
|
youtube_videos/*
|
|
youtube_images/
|
|
youtube_audio
|
|
|
|
.cursorignore
|
|
story_videos
|
|
story_videos/*
|
|
story_audio
|
|
story_images
|
|
backend/story_videos/*
|
|
backend/story_audio/*
|
|
backend/story_images/*
|
|
# Environment
|
|
.env
|
|
.env.*
|
|
|
|
# User data
|
|
backend/lib/workspace/
|
|
backend/lib/workspace/users/
|
|
backend/logs/
|
|
backend/linkedin_images/
|
|
backend/test/
|
|
backend/.onboarding_progress_user*
|
|
backend/.onboarding_*.json
|
|
|
|
# Frontend
|
|
frontend/node_modules/
|
|
frontend/build/
|
|
frontend/.env*
|
|
|
|
# Logs
|
|
*.log
|
|
logs/
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Docs build
|
|
docs-site/site/
|
|
|
|
# Dependencies
|
|
node_modules/
|
|
*/node_modules/
|
|
**/node_modules/
|
|
|
|
# Python cache files
|
|
__pycache__/
|
|
*/__pycache__/
|
|
**/__pycache__/
|
|
*.pyc
|
|
*.pyo
|
|
*.pyd
|
|
|
|
.gitignore
|
|
.pytest*
|
|
# Cache files
|
|
.cache/
|
|
*/cache/
|
|
**/cache/
|
|
*.cache
|
|
|
|
# MkDocs site directory
|
|
docs-site/site/
|
|
|
|
venv_new
|
|
venv
|
|
# Environment files
|
|
.env
|
|
.env.local
|
|
.env.development.local
|
|
.env.test.local
|
|
.env.production.local
|
|
backend/.env
|
|
frontend/.env
|
|
|
|
# Database files
|
|
*.db
|
|
*.sqlite
|
|
*.sqlite3
|
|
backend/alwrity.db
|
|
backend/content_cache.db
|
|
backend/outline_cache.db
|
|
backend/research_cache.db
|
|
|
|
# Google OAuth credentials
|
|
gsc_credentials.json
|
|
**/gsc_credentials.json
|
|
|
|
.cursor
|
|
|
|
# Onboarding progress files
|
|
.onboarding_progress.json
|
|
backend/.onboarding_progress.json
|
|
|
|
# IDE and editor files
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# OS generated files
|
|
.DS_Store
|
|
.DS_Store?
|
|
._*
|
|
.Spotlight-V100
|
|
.Trashes
|
|
ehthumbs.db
|
|
Thumbs.db
|
|
|
|
# Node.js (for frontend)
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
|
|
# Build directories
|
|
build/
|
|
dist/
|
|
*.egg-info/
|
|
# Logs
|
|
*.log
|
|
logs/
|
|
|
|
# Temporary files
|
|
*.tmp
|
|
*.temp
|
|
|
|
# Coverage reports
|
|
htmlcov/
|
|
.coverage
|
|
.coverage.*
|
|
coverage.xml
|
|
*.cover
|
|
.hypothesis/
|
|
.pytest_cache/
|
|
|
|
# Virtual environments
|
|
venv/
|
|
env/
|
|
ENV/
|
|
.venv/
|
|
|
|
# Jupyter Notebook
|
|
.ipynb_checkpoints
|
|
|
|
# pyenv
|
|
.python-version
|
|
|
|
# pipenv
|
|
Pipfile.lock
|
|
|
|
# PEP 582
|
|
__pypackages__/
|
|
|
|
# Celery
|
|
celerybeat-schedule
|
|
celerybeat.pid
|
|
|
|
# SageMath parsed files
|
|
*.sage.py
|
|
|
|
# Spyder project settings
|
|
.spyderproject
|
|
.spyproject
|
|
|
|
# Rope project settings
|
|
.ropeproject
|
|
|
|
# mkdocs documentation
|
|
/site
|
|
|
|
.cursorignore
|
|
|
|
gsc_credentials_template.json
|
|
|
|
# mypy
|
|
.mypy_cache/
|
|
.dmypy.json
|
|
dmypy.json
|
|
|
|
docs
|
|
|
|
|
|
# Pyre type checker
|
|
.pyre/
|
|
|
|
# Credentials and secrets
|
|
gsc_credentials.json
|
|
*.pem
|
|
*.key
|
|
*.crt
|
|
|
|
# Test files
|
|
test_*.py
|
|
*_test.py
|
|
tests/
|
|
|
|
# Documentation build
|
|
docs/_build/
|
|
|
|
# Backup files
|
|
*.bak
|
|
*.backup
|
|
*.orig
|
|
|
|
# Lock files
|
|
package-lock.json
|
|
yarn.lock
|
|
|
|
# Cache directories
|
|
.pytest_cache
|
|
|
|
# Documentation cache
|
|
docs/__pycache__/
|
|
# Onboarding JSON files (CRITICAL: Should use database instead)
|
|
.onboarding_progress.json
|
|
*_onboarding_progress.json
|
|
backend/.onboarding_progress*.json
|
|
backend/researchtools_text/projects/Draft__AI_advanc_c2f90698.json
|
|
backend/researchtools_text/projects/Draft__AI_adv_388d4491.json
|
|
|
|
# Migration and debug scripts
|
|
debug_usage.py
|
|
fix_database.py
|
|
migrate_usage_summaries.py
|
|
simple_migrate.py
|
|
validate_implementation.py
|
|
|
|
# Camera selfie implementation (not needed)
|
|
CAMERA_SELFIE_IMPLEMENTATION.md
|