admin.xpcool.com/agents.md
夏犀麟 a44244c7ad
Some checks failed
CI / Test (ubuntu-latest) (push) Has been skipped
CI / Lint (ubuntu-latest) (push) Has been skipped
CI / Check (ubuntu-latest) (push) Has been skipped
CodeQL / Analyze (${{ matrix.language }}) (none, javascript-typescript) (push) Has been skipped
Deploy Website on push / Deploy Push Playground Ftp (push) Has been skipped
Deploy Website on push / Deploy Push Docs Ftp (push) Has been skipped
Deploy Website on push / Deploy Push Antd Ftp (push) Has been skipped
Deploy Website on push / Deploy Push Element Ftp (push) Has been skipped
Deploy Website on push / Deploy Push Naive Ftp (push) Has been skipped
Release Drafter / update_release_draft (push) Has been skipped
Deploy Website on push / Rerun on failure (push) Has been skipped
CI / Test (windows-latest) (push) Has been cancelled
CI / Lint (windows-latest) (push) Has been cancelled
CI / Check (windows-latest) (push) Has been cancelled
CI / CI OK (push) Has been cancelled
chore: init admin.xpcool.com (vben5 + tdesign)
2026-08-24 23:56:57 +08:00

135 lines
7.0 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.

# agents.md — 项目上下文档案(跨账号迁移单一事实源)
> **用途**:让任何 AI 助手WorkBuddy 其他账号 / 其他 AI 工具)接手本项目时,无需重新摸索即可无缝衔接。
> **维护约定**:每次操作(改代码 / 跑命令 / 决策 / 踩坑)后,更新下方「操作日志」章节;环境与架构变化同步更新对应章节。
> **首次建立**2026-08-24
---
## 1. 项目概况
| 项 | 值 |
|---|---|
| 业务名 | admin.xpcool.com |
| 工作目录 | `E:\xxcool\project\admin.xpcool.com` |
| 基础框架 | Vue Vben Admin **5.7.0**(官方 monorepo 模板) |
| 技术栈 | Vue 3 + TypeScript + Vite + pnpm 11 + turbomonorepo+ Ant Design Vue 等 |
| 代码来源 | 官方仓库 `vbenjs/vue-vben-admin` 克隆remote 为 ghproxy 镜像:`https://ghproxy.net/https://github.com/vbenjs/vue-vben-admin.git` |
| 当前基线 | 模板原样,**无业务定制**web-antd views 仅有 `_core/dashboard/demos` 示例页) |
| git 分支 | `main`(仅 origin/main |
## 2. 应用清单apps/
| 应用 | 包名 | UI 库 | dev 端口 | 启动命令 |
|---|---|---|---|---|
| web-antd | `@vben/web-antd` | Ant Design Vue | **5666** | `pnpm dev:antd` |
| web-antdv-next | `@vben/web-antdv-next` | Ant Design Vue Next | - | `pnpm dev:antdv-next` |
| web-ele | `@vben/web-ele` | Element Plus | - | `pnpm dev:ele` |
| web-naive | `@vben/web-naive` | Naive UI | - | `pnpm dev:naive` |
| web-tdesign | `@vben/web-tdesign` | TDesign | - | `pnpm dev:tdesign` |
| backend-mock | - | Nitro mock 后端 | **5320** | 随 dev 自动启动VITE_NITRO_MOCK=true |
> 本业务主应用推测为 **web-antd**(端口 5666已确认 .env.development
## 3. 环境要求与本机踩坑记录(重要)
### 版本要求package.json engines
- Node `^22.18.0 || ^24.12.0`
- pnpm `>=11.0.0``packageManager: pnpm@11.16.0`
### 本机Windows已验证的运行方式 —— 直接复制可用
```bash
# 前置:把 managed node 22.22.2 放到 PATH 最前(系统 node 23 会因 NODE_OPTIONS 报错)
export PATH="/c/Users/ybtdevxxl/.workbuddy/binaries/node/versions/22.22.2:$PATH"
# 关键:清空 NODE_OPTIONS否则 WorkBuddy 的 safe-delete shim 会拦截 pnpm 的删除操作导致安装失败)
unset NODE_OPTIONS
# 用 corepack 驱动 pnpmPATH 里的 pnpm 挂在系统 node 23 下不可用)
CORE="/c/Users/ybtdevxxl/.workbuddy/binaries/node/versions/22.22.2/corepack.cmd"
"$CORE" pnpm install # 安装依赖
"$CORE" pnpm dev:antd # 启动开发服务器
```
### 坑 1NODE_OPTIONS 污染
- 现象:`pnpm install` 报 `[ERROR] [safe-delete] 操作失败 ... Some operations were aborted`
- 原因:环境变量 `NODE_OPTIONS=--require=...genie-safe-delete.cjs --use-system-ca`WorkBuddy 注入);且系统 Node 23 不支持 `--use-system-ca`,直接跑 PATH 里的 pnpm 会直接退出
- 解法:`unset NODE_OPTIONS` + 用 managed node 22.22.2 的 corepack
### 坑 2Windows 符号链接权限
- 现象:`pnpm install` 报 `UNKNOWN: unknown error, symlink '.pnpm\postcss@8.5.26\...' -> ...`,下载完 1723 包后在 hoist 阶段失败
- 原因:本机未开「开发者模式/无管理员权限」pnpm 默认 symlink 创建失败
- 解法:项目 `.npmrc` 已添加 `package-import-method=copy`(用拷贝替代符号链接,代价是磁盘占用/安装略慢)
### 镜像配置(.npmrc
```ini
registry=https://registry.npmmirror.com
package-import-method=copy
```
## 4. 常用命令
```bash
# 依赖
pnpm install # 装依赖preinstall 会校验必须用 pnpmpostinstall 跑 stub
pnpm reinstall # 清 lock 重装(= clean --del-lock && install
# 开发
pnpm dev:antd # 启动 web-antd默认 http://localhost:5666
pnpm dev # turbo 并行起所有 app
# 构建 / 检查
pnpm build:antd # 构建 web-antd
pnpm check:type # 类型检查turbo run typecheck
pnpm lint # 代码检查
pnpm test:unit # 单元测试vitest
```
## 5. 架构速览Vben Admin 5 monorepo
```
apps/ 应用层web-antd、web-ele、web-naive、web-tdesign、web-antdv-next、backend-mock
internal/ 内部工具vite-config、tsconfig、eslint/stylelint/oxlint 配置、tailwind-config、turbo-run
packages/ 共享包:@core核心 UI/布局、effects请求/权限/hooks/插件、stores、locales、
preferences偏好设置、icons、constants、utils、styles、types
```
- 主应用源码入口:`apps/web-antd/src/`
- 路由:`src/router/routes/modules/`dashboard.ts / demos.ts / vben.ts
- 页面:`src/views/`
- API`src/api/request.ts`(封装 `requestClient`)、`src/api/core/`
- 偏好:`src/preferences.ts``defineOverridesPreferences`,官方默认 + 少量扩展字段)
- 开发代理:`vite.config.ts` 中 `/api``http://localhost:5320/api`backend-mockrewrite 去掉 `/api` 前缀
- 环境变量:`apps/web-antd/.env.development``VITE_PORT=5666`、`VITE_NITRO_MOCK=true`、`VITE_GLOB_API_URL=/api`
- 路径别名:`#/*` → `./src/*`package.json imports
### 关键开发约定Vben 5 特有)
- 权限:`preferences.ts` 的 `app.accessMode`frontend/backend/mixed按钮级用 `<AccessControl :codes>` / `hasAccessByRoles` / `v-access:code`
- API 请求:`requestClient.get/post<Type>(url)`,代理在 `vite.config.ts`
- 国际化:`$t()`,语言包在 `packages/locales`
- 主题CSS 变量覆盖(`:root { --primary: ... }`),偏好里 `theme.builtinType/colorPrimary`
- 详细参考:本机已装 vben skill`C:\Users\ybtdevxxl\.workbuddy\skills\vben`,含 20+ references
## 6. 操作日志
> 倒序(最新在上)。每条:日期 / 操作 / 结果 / 备注
### 2026-08-24首次搭建
1. **梳理项目**:确认为 Vben Admin 5.7.0 官方模板克隆,无业务定制;主应用 web-antd端口 5666
2. **安装依赖**
- 第 1 次失败NODE_OPTIONS safe-delete shim 拦截 → 解法 `unset NODE_OPTIONS`
- 第 2 次失败Windows symlink 权限 → 解法 `.npmrc``package-import-method=copy`
- 最终:`pnpm install` 成功46 workspace 项目1723 包)✅
3. **启动开发服务器**`pnpm dev:antd` → 验证 http://localhost:5666 (状态见下)
4. **建立本文件 agents.md**:项目上下文档案 + 操作日志机制
5. **建立工作日志**`.workbuddy/memory/YYYY-MM-DD.md`(每日记录,跨账号迁移时连同 agents.md 一起拷贝)
## 7. 迁移清单(换 WorkBuddy 账号 / 换机器时)
1. 拷贝整个项目目录(含 `node_modules` 可不拷,重新 install 即可)
2. 必拷文件:`agents.md`(本文件)+ `.workbuddy/memory/`(历史工作日志)
3. 本机环境要点(新机器):
- Node ≥ 22.18pnpm ≥ 11corepack
- 跑 pnpm 前 `unset NODE_OPTIONS`
- Windows 无开发者模式时保持 `.npmrc``package-import-method=copy`
4. 装依赖后先 `pnpm dev:antd` 验证 5666 端口