# PC Agent — Sport Era PC 前台

Nuxt 3 / Vue 3 PC 前台站点。**消费 `server/app/api/controller/` 的接口（与 uniapp 共享 `/api/*`）。**

## 技术栈

- **Nuxt** 3 + **Vue** 3
- **TypeScript**
- **Pinia** 状态管理
- **Tailwind CSS** / SCSS
- **Axios / ofetch** HTTP 请求

## 项目结构

```text
pc/
├── nuxt.config.ts        # Nuxt 配置
├── app.vue               # 根布局
├── pages/                # 文件路由
├── components/           # 公共组件
├── composables/          # 组合式函数
├── stores/               # Pinia Store
├── api/                  # 接口请求模块（→ 后端 /api/*）
├── plugins/              # Nuxt 插件
├── middleware/           # 路由中间件
├── layouts/              # 页面布局
├── public/               # 静态资源
└── assets/               # 编译资源
```

## 运行命令

```bash
npm install
npm run dev
npm run generate
npm run build
```

---

## 并行协作协议

### 新功能开发时

#### Step 1: 等待或查阅后端 API 契约

查看 `server/app/api/controller/` 下的 controller，确认接口签名、请求参数和响应结构。

#### Step 2: 并行实现

```text
1. api/ 下新增或复用请求模块
2. pages/ 下新增页面（文件路由）
3. components/ 下复用或新增组件
4. stores/ 处理跨页面状态
```

#### Step 3: 构建联调

```bash
npm run generate
```

## 代码约定

- 接口请求通过 `composables` 或 `api/` 模块统一封装。
- SEO 关键页面使用 `useHead` 配置 `<title>` / `<meta>`。
- 接口 baseURL 由 `runtimeConfig` 或环境配置控制，不要写死。
- 页面级数据获取优先使用 `useAsyncData` / `useFetch`。
- 与 uniapp 共享前台接口契约，避免同一业务前台两套字段命名。
- 设计稿与页面映射维护在根目录 `设计稿映射.md`。
