duoqi-admin/CLAUDE.md
Wang Zhuoxuan 23e0438f2c 更新 CLAUDE.md:反映 Phase 1a 完成状态,补充库版本注意事项
- 更新项目状态为 Phase 1a 完成
- 补充实际目录结构(含 styles/globals.css)
- 新增 Key Patterns:路由配置、API 客户端细节
- 新增 Gotchas:shadcn/ui CLI 路径、ky v2 API、TS6、Tailwind v4
- 移除过时的"Pre-implementation"描述
2026-04-07 10:53:28 +08:00

93 lines
4.4 KiB
Markdown
Raw 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.

# CLAUDE.md — duoqi-admin
> 多奇管理后台,基于 Vite + React + TypeScript + shadcn/ui + Tailwind CSS
> 调用 duoqi-api 的 admin 端点CSR 纯前端应用
## Current Status
**Phase 1a complete.** Project scaffold built. Phase 1b (Question CRUD) is next.
Development follows the phased roadmap in [dev-spec.md](./dev-spec.md) §九.
## Quick Start
```bash
bun install
bun run dev # Vite dev server, default port 5173
bun run build # Production build → dist/
```
## Environment
`.env` is already configured. To change the API URL, edit `.env`:
```env
VITE_API_BASE_URL=http://localhost:3000 # duoqi-api address
```
## Architecture
```
src/
├── main.tsx # Entry point
├── App.tsx # Root (router + layout)
├── styles/globals.css # Tailwind v4 + shadcn/ui CSS variables
├── routes/ # Pages (login, dashboard, questions/*, categories/*, ...)
├── components/
│ ├── ui/ # shadcn/ui primitives
│ ├── layout/ # Sidebar, Header, AdminLayout
│ ├── charts/ # StatsCard, chart wrappers
│ └── data-table/ # (Phase 1b) DataTable
│ └── question-form/ # (Phase 1b) Question editing form
├── lib/
│ ├── api-client.ts # HTTP client for /admin/* endpoints
│ ├── auth.ts # Admin JWT token management
│ ├── utils.ts # Utility functions
│ └── constants.ts # Status enums, difficulty levels
├── hooks/ # useAuth
├── stores/ # Zustand stores (auth-store)
└── types/ # question, user, category, api types
```
## Key Patterns
- **Routing**: React Router v7 library mode (`createBrowserRouter` + `RouterProvider`). Routes defined in `App.tsx`. Root layout (`routes/__root.tsx`) handles auth guard — redirects to `/login` when not authenticated.
- **Development order**: Follow [dev-spec.md](./dev-spec.md) §九 (Phase roadmap).
- **Auth flow**: Login page → POST `/admin/auth/login` with token → receive admin JWT → store in auth-store → attach as `Authorization: Bearer <jwt>` on all subsequent requests
- **API client**: All admin API calls go through `lib/api-client.ts` (ky v2). Uses `baseUrl` + `prefix: "/admin"`. Auto-attaches auth header. 401 responses trigger logout + redirect to `/login`.
- **Data tables**: TanStack Table v8 headless + shadcn/ui styled components in `components/data-table/`
- **Forms**: React Hook Form + Zod validation for all admin forms
- **State**: Zustand for client state only; server state fetched via API client
## Gotchas
- **shadcn/ui CLI**: After `bunx shadcn@latest add ...`, verify files land in `src/components/ui/` — sometimes they end up in `@/components/ui/` at project root instead.
- **ky v2**: Uses `baseUrl` + `prefix` (not `prefixUrl`). Hooks receive a single state object (`{ request }`, `{ response }`) instead of positional arguments.
- **TypeScript 6**: Requires `"ignoreDeprecations": "6.0"` in tsconfig when using `baseUrl` + `paths` for `@/*` aliases.
- **Tailwind v4**: Uses `@import "tailwindcss"` and `@theme inline` block (not `@tailwind base/components/utilities`).
## Design Docs
| Doc | Path | Notes |
|-----|------|-------|
| **Dev spec (primary)** | [./dev-spec.md](./dev-spec.md) | Full engineering spec — read before development |
| Product overview | [../docs/product-overview.md](../docs/product-overview.md) | Product scope, phases |
| Tech stack | [../docs/tech-stack.md](../docs/tech-stack.md) | Full-stack decisions |
| duoqi-api spec | [../docs/specs/duoqi-api/dev-spec.md](../docs/specs/duoqi-api/dev-spec.md) | Admin API endpoint definitions |
| Question format | [../docs/specs/shared/question-format-design.md](../docs/specs/shared/question-format-design.md) | Question data model (core for CRUD) |
| Gamification | [../docs/specs/shared/gamification-monetization-design.md](../docs/specs/shared/gamification-monetization-design.md) | Skill tree, subscription tiers |
| Analytics | [../docs/specs/shared/analytics-feedback-design.md](../docs/specs/shared/analytics-feedback-design.md) | Stats metrics, feedback data |
## 技术栈速查
- 框架Vite + React 18
- 语言TypeScript
- UIshadcn/ui + Tailwind CSS
- 数据表格TanStack Table v8
- 表单React Hook Form + Zod
- 图表Recharts
- HTTPky v2
- 状态Zustand
- 路由React Router v7
- 包管理bun