Files
AOW4/docs/agent.md.md

253 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **agent.md — Game Reference Platform Agent Specification**
## **Purpose**
This agent defines the architecture, responsibilities, and operational expectations for the **Game Reference**, a Blazorbased website to host:
- **Build calculators**
- **Learning documentation**
- **Game data reference libraries**
The web app is designed for **modularity**, **data portability**, and **longterm maintainability**, with a roadmap toward **selfhosted offline builds**.
---
## **HighLevel Responsibilities**
- **Data ingestion**: Regularly update game data sets from external sources (official APIs, community wikis, manual imports).
- **Data persistence**: Store all game data, user builds, and metadata in PostgreSQL.
- **Web delivery**: Serve interactive Blazor WebAssembly or Server pages for calculators and documentation.
- **Automation**: Validate functionality through NUnit unit tests and Selenium UI automation.
- **Containerization**: Package each game site as a Docker image for deployment or local use.
- **Offline mode**: Allow users to download the site and run it with their own local PostgreSQL instance.
---
## **System Architecture**
### **Platform Overview**
- **Frontend**: Blazor WebAssembly or Blazor Server (projectspecific choice)
- **Backend**: ASP.NET Core minimal APIs or controllers
- **Database**: PostgreSQL (hosted or local)
- **Containerization**: Docker Compose for multiservice orchestration
- **Testing**: NUnit + Selenium (C#)
- **CI/CD**: GitHub Actions or Azure DevOps (future)
---
### **Data Update Strategy**
Data ingestion may occur via:
- **Manual imports**
- **Official game APIs**
- **Communitymaintained datasets**
The agent must support:
- Scheduled updates
- Versioning of game data
- Rollback capability
- Validation before ingestion
---
## **Docker Architecture**
### **Container Layout**
Each game site includes:
- `blazor-app` container
- `postgres` container (optional for production, required for offline mode)
- `data-import` container (optional automation)
### **Local Development**
Users can run:
```
docker compose up --build
```
This launches:
- Blazor site
- Local PostgreSQL
- Optional admin tools (pgAdmin)
---
## **Testing Strategy**
### **NUnit Unit Tests**
Unit tests cover:
- Data models
- Calculation logic
- API endpoints
- Data ingestion validation
Tests live in:
```
/tests/GameSlop.Tests.Unit
```
### **Selenium UI Automation**
A separate C# Selenium project validates:
- Page load behavior
- Calculator functionality
- Navigation flow
- Form inputs
- Error handling
Tests live in:
```
/tests/GameSlop.Tests.UI
```
Automation runs against:
- Local Docker environment
- Staging environment
- Production (readonly tests)
---
## **Offline Mode (LongTerm Goal)**
Users will be able to:
1. Download a packaged version of a game site.
2. Run it locally via Docker.
3. Use a local PostgreSQL instance.
4. Save builds offline.
5. Import/export builds as JSON.
This requires:
- Selfcontained Docker Compose bundles
- Local EF migrations
---
## **Agent Responsibilities**
### **Build Calculators**
The agent must:
- Load game data dynamically
- Apply calculation logic (damage, stats, modifiers)
- Support multiple build variants
- Allow saving/loading builds from PostgreSQL
### **Documentation Engine**
The agent must:
- Render markdown or rich text
- Support versioned documentation
### **Data Sync**
The agent must:
- Detect outdated data
- Fetch new data
- Validate and sanitize
- Apply migrations if needed
### **Observability**
The agent should log:
- Data ingestion events
- User build saves
- Errors and exceptions
- Performance metrics
---
## **Contributor Guidelines**
- Follow C# coding standards
- Use EF migrations for schema changes
- Write NUnit tests for all logic
- Add Selenium tests for UI changes
- Document new features in `/docs`