diff --git a/AGENTS.md b/AGENTS.md index f5282bb..a00c9f6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,10 +1,9 @@ # AGENTS.md - Build God Project -This document provides guidelines for agentic coding agents working on this repository. +Guidelines for agentic coding agents working on this repository. ## Project Overview -Build God is a full-stack application with: - **Backend**: ASP.NET Core 8.0 Web API (C#) - **Frontend**: Vue 3 + TypeScript + Vite + Element Plus @@ -14,31 +13,23 @@ Build God is a full-stack application with: ### Backend (.NET API) -Located in: `BuildGod_Api/` - ```bash -# Build the solution -dotnet build BuildGod_Api.sln +# Build the solution (from Build_God_Api directory) +dotnet build Build_God_Api/Build_God_Api.csproj -# Run the API (from BuildGod_Api directory) +# Run the API dotnet run --project Build_God_Api/Build_God_Api.csproj - -# Build and run with Docker -docker build -t build-god-api BuildGod_Api/ -docker run -p 5091:80 build-god-api ``` -**Note**: No test framework is currently configured for the backend. +**Note**: No test framework or linting is currently configured for the backend. ### Frontend (Vue 3) -Located in: `Build_God_Admin_Frontend/Frontend/` - ```bash # Install dependencies npm install -# Start development server +# Start development server (http://localhost:5173) npm run dev # Build for production @@ -51,7 +42,7 @@ npm run type-check npm run preview ``` -**Running a single test**: No tests are currently configured. +**Note**: No test framework or ESLint is currently configured for the frontend. --- @@ -59,97 +50,84 @@ npm run preview ### Backend (.NET/C#) -#### General Conventions +#### Conventions - Use **file-scoped namespaces** (`namespace Build_God_Api.Controllers;`) -- Enable **nullable reference types** (`enable`) +- Enable **nullable reference types** - Use **primary constructors** for dependency injection - Use **async/await** for all I/O operations -#### Naming Conventions -- **Types/Classes**: PascalCase (`AccountController`, `AccountService`) -- **Methods**: PascalCase (`GetAccount`, `Register`) -- **Properties**: PascalCase (`UserName`, `Email`) -- **Local variables**: camelCase (`accountId`, `existingAccount`) -- **Parameters**: camelCase (`accountName`, `emailAddress`) -- **Interfaces**: Prefix with `I` (`IAccountService`, `ICurrentUserService`) +#### Naming +- **Classes/Types**: PascalCase (`AccountController`, `AccountService`) +- **Methods/Properties**: PascalCase (`GetAccount`, `UserName`) +- **Local variables/Parameters**: camelCase (`accountId`, `emailAddress`) +- **Interfaces**: Prefix with `I` (`IAccountService`) #### Project Structure ``` -Controllers/ # API endpoints -Services/ # Business logic (interface + implementation) -DB/ # Database entities/models +Build_God_Api/ + Controllers/ # API endpoints + Services/ # Business logic (interface + implementation) + Services/Game/ # Game-specific services + DB/ # Database entities (extend BaseEntity) + Dto/ # Data transfer objects + Common/ # Utilities + Hubs/ # SignalR hubs ``` #### Error Handling - Return `BadRequest("error message")` for validation errors - Return `Ok(result)` for successful operations -- Use try-catch with logging for operations that may fail -- Use `ILogger` for logging - -#### Dependency Injection -```csharp -public class AccountController(IAccountService service) : ControllerBase -{ - private readonly IAccountService _service = service; - // ... -} -``` +- Use try-catch with `ILogger` for error logging #### Route Conventions - Use `[Route("api/god/[controller]")]` -- Use `[ApiController]` attribute -- Use HTTP method attributes: `[HttpGet]`, `[HttpPost]`, `[HttpPut]`, `[HttpDelete]` +- Use `[ApiController]` and HTTP method attributes --- ### Frontend (Vue 3 + TypeScript) -#### General Conventions +#### Conventions - Use **Composition API** with ` diff --git a/Build_God_Game/src/views/GameView.vue b/Build_God_Game/src/views/GameView.vue index 37b42fe..2215cf5 100644 --- a/Build_God_Game/src/views/GameView.vue +++ b/Build_God_Game/src/views/GameView.vue @@ -52,6 +52,8 @@ const handleSwitchCharacter = () => { const navigateTo = (item: { label: string }) => { if (item.label === '打坐' || item.label === '打坐中') { router.push('/training') + } else if (item.label === '任务') { + router.push('/daily-mission') } } diff --git a/Build_God_Game/模拟导图.xls b/Build_God_Game/模拟导图.xls index ae203f0..435db33 100644 Binary files a/Build_God_Game/模拟导图.xls and b/Build_God_Game/模拟导图.xls differ