# 呼籁文旅官网 (hulai-website) ## 项目概述 呼籁文旅(呼伦贝尔旅行公司)的官方网站,包含前台展示和后台管理系统。 ## 技术栈 | 层级 | 技术 | 版本 | |------|------|------| | 框架 | Nuxt 3 | 3.17.5 | | 前端 | Vue 3 (Composition API + ` ``` **API 调用统一用 `adminFetch`**,自动带 token、401 自动登出。 ### 后端 API(server/api/admin/) **认证中间件:** ```js const user = await requireAdmin(event) ``` **分页查询:** ```js const { page, limit, offset, search, sort } = parsePagination(event) ``` **响应格式(列表):** ```js { items: [...], total, page, limit, totalPages } ``` **响应格式(单条):** ```js { id, ...fields } ``` ### 数据库(Drizzle ORM) - 表定义在 `server/database/schema.js` - 使用 `useDB()` 获取数据库实例 - 导入操作符:`import { eq, desc, like } from 'drizzle-orm'` ### 站点内容(site_content 表) 存储复杂 JSON 配置的键值对: - 读取:`GET /api/admin/site-content?key=xxx` - 更新:`PUT /api/admin/site-content` body: `{ key, data }` - 单项读取:`GET /api/admin/site-content/item?key=xxx&index=0` - 单项更新:`PUT /api/admin/site-content/item` body: `{ key, index, item }` ### 样式规范 **后台页面使用 scoped CSS**,主色调: - 主色:`#3a7d44`(绿色) - 悬停:`#2d6235` - 文字:`#111827` - 次要文字:`#6b7280` - 边框:`#e5e7eb` - 背景:`#f0f2f5` **复用组件:** - `AdminDataTable` — 带分页搜索的表格 - `AdminImageUpload` — 拖拽上传图片 - `AdminSeasonProduct` — 季节产品编辑器 ### 命名约定 | 类型 | 命名 | 示例 | |------|------|------| | 页面文件 | kebab-case | `winter-products/` | | 组件 | PascalCase | `DataTable.vue` | | API 路由 | kebab-case | `site-content.get.js` | | 数据库表 | camelCase (Drizzle) | `galleryItems` | | CSS class | kebab-case | `.page-header` | ## 记忆系统 每个 Agent 有 4 个记忆文件,存储在 `.claude/agents/memory/{role}/` 下: | 角色 | 文件 | 内容 | |------|------|------| | PM | decisions / patterns / lessons / priorities | 决策记录 / 业务模式 / 经验教训 / 优先级策略 | | Frontend | patterns / pitfalls / components / pages | 代码模式 / 踩坑记录 / 组件清单 / 页面模式 | | Backend | patterns / pitfalls / api-design / database | 代码模式 / 踩坑记录 / API 设计 / 数据库经验 | | UI/UX | design-system / page-patterns / feedback / consistency | 设计系统 / 页面模式 / 反馈记录 / 一致性 | | Tester | common-bugs / checklist / api-issues / quality-metrics | 常见 Bug / 检查清单 / API 问题 / 质量指标 |