文字游戏
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

203 lines
4.9 KiB

2 weeks ago
# AGENTS.md - Build God Project
Guidelines for agentic coding agents working on this repository.
2 weeks ago
## Project Overview
- **Backend**: ASP.NET Core 8.0 Web API (C#)
- **Frontend**: Vue 3 + TypeScript + Vite + Element Plus
---
## 1. Build, Lint, and Test Commands
### Backend (.NET API)
```bash
# Build the solution (from Build_God_Api directory)
dotnet build Build_God_Api/Build_God_Api.csproj
2 weeks ago
# Run the API
2 weeks ago
dotnet run --project Build_God_Api/Build_God_Api.csproj
```
**Note**: No test framework or linting is currently configured for the backend.
2 weeks ago
### Frontend (Vue 3)
```bash
# Install dependencies
npm install
# Start development server (http://localhost:5173)
2 weeks ago
npm run dev
# Build for production
npm run build
# Type-check only
npm run type-check
# Preview production build
npm run preview
```
**Note**: No test framework or ESLint is currently configured for the frontend.
2 weeks ago
---
## 2. Code Style Guidelines
### Backend (.NET/C#)
#### Conventions
2 weeks ago
- Use **file-scoped namespaces** (`namespace Build_God_Api.Controllers;`)
- Enable **nullable reference types**
2 weeks ago
- Use **primary constructors** for dependency injection
- Use **async/await** for all I/O operations
#### Naming
- **Classes/Types**: PascalCase (`AccountController`, `AccountService`)
- **Methods/Properties**: PascalCase (`GetAccount`, `UserName`)
- **Local variables/Parameters**: camelCase (`accountId`, `emailAddress`)
- **Interfaces**: Prefix with `I` (`IAccountService`)
2 weeks ago
#### Project Structure
```
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
2 weeks ago
```
#### Error Handling
- Return `BadRequest("error message")` for validation errors
- Return `Ok(result)` for successful operations
- Use try-catch with `ILogger<T>` for error logging
2 weeks ago
#### Route Conventions
- Use `[Route("api/god/[controller]")]`
- Use `[ApiController]` and HTTP method attributes
2 weeks ago
---
### Frontend (Vue 3 + TypeScript)
#### Conventions
2 weeks ago
- Use **Composition API** with `<script setup lang="ts">`
- Use **path aliases**: `@/` maps to `src/`
#### Naming
2 weeks ago
- **Components**: PascalCase (`LoginView.vue`, `Sidebar.vue`)
- **Variables/functions**: camelCase (`handleLogin`, `userName`)
- **Types/Interfaces**: PascalCase (`LoginRequest`, `User`)
#### Project Structure
```
src/
api/ # API calls
components/ # Reusable components
views/ # Page components
2 weeks ago
stores/ # Pinia stores
router/ # Vue Router configuration
```
#### Imports
- Use `@/` alias: `import { useAuthStore } from '@/stores/auth'`
- Group: external libs → internal imports → types
2 weeks ago
#### TypeScript
- Define types/interfaces for all API payloads
2 weeks ago
- Use `ref<T>` and `computed<T>` for reactive state
- Avoid `any` - use `unknown` or proper types
#### Vue Component Pattern
2 weeks ago
```vue
<script setup lang="ts">
import { ref } from 'vue'
2 weeks ago
import { useRouter } from 'vue-router'
import { ElMessage } from 'element-plus'
const router = useRouter()
const loading = ref(false)
</script>
<template>
<!-- Element Plus components -->
2 weeks ago
</template>
<style scoped lang="css">
/* Component styles */
</style>
```
#### Pinia Store Pattern
```typescript
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
export const useAuthStore = defineStore('auth', () => {
const token = ref('')
const isAuthenticated = computed(() => !!token.value)
return { token, isAuthenticated }
2 weeks ago
})
```
---
## 3. API Integration
### Base URL
2 weeks ago
- Development: `http://localhost:5091/api/god/`
- Routes: `api/god/{entity}` (e.g., `api/god/account/login`)
2 weeks ago
### Authentication
- JWT Bearer tokens
- Store in `localStorage` as `auth_token`
- Header: `Authorization: Bearer {token}`
2 weeks ago
### Key Endpoints
- POST `/api/god/account/register` - Register account
2 weeks ago
- POST `/api/god/account/login` - User login
- POST `/api/god/account/login/admin` - Admin login
2 weeks ago
---
## 4. Development Workflow
1. **Start Backend**: `dotnet run --project Build_God_Api/Build_God_Api.csproj`
2. **Start Frontend**: `npm run dev` (in `Build_God_Admin_Frontend/Frontend/`)
3. **Access**: Frontend at `http://localhost:5173`
2 weeks ago
---
## 5. Adding New Features
### Backend
1. Create model in `DB/` (extend `BaseEntity`)
2. Create interface in `Services/`
2 weeks ago
3. Implement service in `Services/`
4. Create controller in `Controllers/`
5. Register service in `Program.cs`
### Frontend
1. Create API module in `src/api/`
2. Add Pinia store in `src/stores/` if needed
2 weeks ago
3. Create view component in `src/views/`
4. Add route in `src/router/index.ts`
---
## 6. Important Notes
- **Admin login**: `admin` / `love_god.123`
- **Test account**: `Tom` / `123456` (email: 976802198@qq.com)
- Backend runs on port **5091**
- Frontend uses Vite proxy for API calls
- Always use `await` with async operations
- Run `npm run type-check` before committing