Files
yuxingu-Miniprogram-dev/CLAUDE.md
T
jackyu66gitandCursor b09d82df8d feat: 小程序统一走 Go 后台,咨询与登录切到 /api/v1
去掉协会 WebView 和魔方账密页,微信登录与咨询接口共用同一 token 和拦截器。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-15 00:26:28 +08:00

62 lines
3.5 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
uni-app (Vue 3) WeChat Miniprogram for **愈心谷 (YuXinGu)**, a mental health and wellness platform. Built with Vite and targets `mp-weixin`. The `UI/` directory is a separate, incomplete React Native experiment — ignore it for miniprogram work.
## Build & Development
This project has **no npm scripts** in root `package.json`. It is designed for the HBuilderX IDE:
- **Dev build:** HBuilderX runs the uni-app Vite plugin automatically. Output goes to `unpackage/dist/dev/mp-weixin/`.
- **Manual build:** `npx vite build` (uses `@dcloudio/vite-plugin-uni` from `vite.config.js`)
- **WeChat DevTools:** Open `unpackage/dist/dev/mp-weixin/` to preview and debug.
Dependencies are minimal: `unplugin-auto-import`, `sass`, `sass-loader`.
## Architecture
### Routing & Navigation
- **Page routing** is defined in `pages.json`, NOT in Vue Router. All 26 routes are listed there.
- **Tab bar** (4 tabs): 首页 (`pages/index/index`), 心理咨询 (`pages/consult/consult`), 心理测评 (`pages/test-list/test-list`), 我的 (`pages/personal-center/personal-center`)
- **Global style** uses `navigationStyle: "custom"` — every page is responsible for its own navigation bar via the `<my-nav>` component.
- New pages must be registered in `pages.json` and use `<my-nav>` for the custom nav bar.
### Auto-Imports
`unplugin-auto-import` is configured in `vite.config.js` to auto-import Vue and uni-app APIs (`ref`, `reactive`, `computed`, `onLoad`, etc.) — do NOT manually import these in `.vue` files.
### HTTP Request Layer (`util/`)
- **`util/requestConfig.js`** exports a pre-configured `$http` instance (base URL: `https://miniapp.yuxingu.com.cn`). Always use this for API calls.
- **`util/apiUrl.js`** exports all API endpoint paths as a `urls` object. All miniprogram endpoints are prefixed `/app-api/psychic/`.
- **Auth:** The request interceptor reads `token` from `uni.getStorageSync('token')` and attaches it as `Authorization: Bearer <token>`.
- **Error handling:** 401/1001/1100 response codes trigger token removal and storage cleanup in `dataFactory`. Other errors auto-display toast messages when `isPrompt` is true.
- **Loading states:** Requests with `load: true` show/hide `uni.showLoading` via a request counter.
Usage pattern in pages:
```js
import $http from '@/util/requestConfig.js'
import { urls } from '@/util/apiUrl.js'
const res = await $http.get(urls.getDoctorInfo, { id: doctorId })
```
### Shared Components (`components/`)
- **`my-nav.vue`** — Custom navigation bar; used on every page since `navigationStyle: "custom"`.
- **`ShareMixin.ts`** — TypeScript mixin providing `onShareAppMessage` and `onShareTimeline` hooks.
- **`show-pop/`** — Reusable popup dialog.
- **`show-remind/`** — Reusable reminder/toast.
### Key Patterns
- **Fonts:** Three custom fonts are loaded globally in `App.vue` from CDN: `SourceHanSans`, `SourceHanSansBold`, `GenYoMinJP`. The default body font is `SourceHanSans`.
- **Share menu:** Enabled globally in `App.vue` for both `shareAppMessage` and `shareTimeline`.
- **Assets:** Static images are organized by feature in `static/`. Tab bar icons use the `n-menu/` subdirectory.
- **Platform config:** `manifest.json` contains WeChat appid (`wx6782dd88e655f1a7`) and per-platform settings for mp-weixin, mp-alipay, mp-baidu, mp-toutiao.
- **uni_modules/:** Standard uni-app plugins (uni-icons, uni-popup, etc.) — treat these as third-party code.