- Fix TypeError in check_steal_opportunity by properly mocking catcher defense - Correct tag_from_third test calculation to account for all adjustment conditions - Fix pitcher replacement test by setting appropriate allowed runners threshold - Add comprehensive test coverage for AI service business logic - Implement VS Code testing panel configuration with pytest integration - Create pytest.ini for consistent test execution and warning management - Add test isolation guidelines and factory pattern implementation - Establish 102 passing tests with zero failures 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
2.5 KiB
2.5 KiB
App Directory
This directory contains the main application code for the Paper Dynasty web app, following the Model/Service Architecture pattern.
Architecture Overview
The app follows a clean separation of concerns:
- Models (
models/) - Pure data models using SQLModel - Services (
services/) - Business logic layer with dependency injection - Controllers (
routers/) - Thin FastAPI route handlers - Engine (
engine/) - Stateless game simulation functions - Configuration (
config/) - Application settings and constants
Key Files
main.py- FastAPI application setup and configuration- Entry point for the web application
Directory Structure
app/
├── main.py # FastAPI application setup
├── config/ # Configuration and constants
├── models/ # SQLModel data models
├── services/ # Business logic layer (⭐ Core of architecture)
├── repositories/ # Optional data access layer
├── routers/ # FastAPI route handlers
├── engine/ # Stateless game simulation
├── static/ # Static web assets
└── templates/ # Jinja2 HTML templates
Service-First Development
When adding new features:
- Start with services - implement business logic in the service layer
- Test services independently - unit test with mocked dependencies
- Create thin routes - delegate to services via dependency injection
- Keep engine stateless - pure functions for game calculations
Migration Context
This application is migrated from a Discord bot (../discord-app/) with the goal of extracting Discord-specific business logic into clean, testable services that can support multiple interfaces (web, API, mobile, etc.).
Current Migration Status
Phase 1: Foundation Data Models - ✅ COMPLETE
- ✅
ManagerAi- AI configuration (→ AIService with 9 methods) - ✅
Cardset- Card set metadata (pure data, no extraction needed)
Phase 2: Player and Card Data - 🚧 NEXT
- 📋
Team- Team identity data (→ UIService for embed property) - 📋
Player- Player metadata (→ UIService for Discord markdown)
Testing Infrastructure - ✅ COMPLETE
- ✅ Transaction rollback pattern for test isolation
- ✅ Factory pattern for unique test data generation
- ✅ Comprehensive test coverage (23 tests passing)
See .claude/model-migration-plan.md for detailed migration tracking.