xykj-plus/claude-ecc/README.md

269 lines
6.6 KiB
Markdown
Raw Permalink Normal View History

# claude-ecc
一个面向 `admin-xy` 生态的 monorepo当前包含 3 个相对独立的子项目:
- `admin-xy/`:企业管理系统,前后端分离,支持 Docker Compose 生产部署
- `log-analyzer/`:本地日志会话分析工具,用于查看 `.claude/logs/` 下的 trace JSONL
- `dev-assistant/`:面向 `admin-xy` 的页面开发助手,当前仓库内已包含 bridge 服务与默认配置
这个仓库没有统一的根级构建入口。每个子项目都需要在自己的目录中安装依赖、启动和构建。
## 项目总览
| 子项目 | 作用 | 技术栈 | 默认端口 |
| --- | --- | --- | --- |
| `admin-xy/server` | 企业管理系统后端 | Spring Boot 3, Java 21, Spring Security, JPA, Flyway | `9010` |
| `admin-xy/web` | 企业管理系统前端 | React 18, Vite, TypeScript, Zustand, Zod, Radix UI, Tailwind CSS | `9001` |
| `log-analyzer` | Trace 日志分析与可视化 | React 18, Vite, TypeScript, Recharts | `5177` |
| `dev-assistant/bridge` | 页面开发助手桥接服务 | Node.js, TypeScript, Hono, WebSocket, Claude Agent SDK | `9020` |
## 目录结构
```text
.
├── admin-xy/
│ ├── server/ # Spring Boot 后端
│ ├── web/ # React + Vite 前端
│ ├── build-images.sh # 构建前后端 Docker 镜像
│ └── deploy.sh # 生产部署脚本
├── log-analyzer/ # 读取 .claude/logs 的本地分析工具
├── dev-assistant/
│ ├── bridge/ # Node bridge 服务
│ └── config/ # 默认模型与桥接配置
└── .claude/logs/ # trace-*.jsonl 会话日志
```
## 环境要求
建议本地准备以下环境:
- Java `21`
- Maven `3.9+`
- Node.js `>=24`
- npm `10+`
- Docker 与 Docker Compose
## 快速开始
### 1. 启动 admin-xy 后端
```bash
cd admin-xy/server
mvn spring-boot:run
```
默认使用 `dev` profile监听 `http://localhost:9010`,本地开发数据库为 H2 内存库,表结构由 Flyway 迁移管理。
### 2. 启动 admin-xy 前端
```bash
cd admin-xy/web
npm install
npm run dev
```
前端默认监听 `http://localhost:9001`,并把 `/api` 代理到 `http://localhost:9010`
### 3. 启动 log-analyzer
```bash
cd log-analyzer
npm install
npm run dev
```
`log-analyzer` 会通过 Vite 自定义插件直接读取仓库根目录的 `.claude/logs/`适合本地排查会话、trace 和 hook 执行记录。
### 4. 启动 dev-assistant bridge
```bash
cd dev-assistant
npm install
npm run bridge:dev
```
bridge 默认监听 `http://localhost:9020`,并允许来自 `http://localhost:9001` 的浏览器请求。默认配置文件位于 `dev-assistant/config/dev-assistant.yaml`
## admin-xy
`admin-xy` 是仓库里的主业务项目,分为后端 `server/` 与前端 `web/` 两部分。
### 后端
- 入口类:`com.adminxy.AdminXyApplication`
- 技术栈Spring Boot 3.3、Java 21、Spring Security、Spring Data JPA、Flyway、JWT
- 开发环境:默认 `dev` profile使用 H2
- 生产环境:`prod` profile使用 MySQL
常用命令:
```bash
cd admin-xy/server
# 本地运行
mvn spring-boot:run
# 全量测试
mvn test
# 打包(跳过测试)
mvn -DskipTests clean package
```
### 前端
- 技术栈React 18、Vite、TypeScript、Zustand、react-hook-form、Zod、Radix UI、Tailwind CSS
- 路径别名:`@` -> `src`
- 前端开发端口:`9001`
常用命令:
```bash
cd admin-xy/web
npm install
npm run dev
npm run build
npm run preview
```
### 生产部署
`admin-xy` 的生产部署统一通过脚本完成,不建议手动拆分成单独的 Docker 命令。
```bash
cd admin-xy
# 构建镜像
./build-images.sh
./build-images.sh --no-cache
# 生产部署
sudo ./deploy.sh
# 重启已有服务
sudo ./deploy.sh --restart
# 停止并移除容器
sudo ./deploy.sh --stop
```
部署脚本会:
1. 初始化 `/opt/admin-xy`
2. 校验 `/opt/admin-xy/.env`
3. 同步 `docker-compose.yml`
4. 构建镜像
5. 执行 `docker compose up -d`
生产环境关键变量:
- `SPRING_DATASOURCE_ADMIN_URL`
- `SPRING_DATASOURCE_ADMIN_USERNAME`
- `SPRING_DATASOURCE_ADMIN_PASSWORD`
- `JWT_SECRET`
## log-analyzer
`log-analyzer` 是一个纯前端工具,但它在开发模式下通过 Vite 插件内置了本地文件读取接口,用来直接分析 trace 日志。
当前插件会暴露这些本地接口:
- `/api/folders`
- `/api/sessions`
- `/api/sessions/:sid`
日志来源目录是仓库根下的 `.claude/logs/`,常见文件名格式为:
```text
.claude/logs/trace-<session-id>.jsonl
```
常用命令:
```bash
cd log-analyzer
npm install
npm run dev
npm run build
```
适用场景:
- 查看某次 Codex / Claude 会话的 trace
- 排查 hook 事件时间线
- 分析本地开发流程中的会话数据
## dev-assistant
`dev-assistant` 用于给 `admin-xy` 提供页面开发辅助能力。当前仓库中已明确包含:
- `bridge/`Node bridge 服务负责协议适配、WebSocket 会话和配置加载
- `config/`:默认路由、模型目录、日志源和桥接参数
常用命令:
```bash
cd dev-assistant
npm install
npm run bridge:dev
npm run bridge:build
npm run bridge:test
```
默认桥接配置来自 `dev-assistant/config/dev-assistant.yaml`,其中定义了:
- 默认模型路由
- GLM / MiniMax 模型目录
- 工作目录写入限制
- 日志源路径
- bridge 端口与 WebSocket 路径
## 开发约定
### Git 提交
本仓库使用 Conventional Commits 风格:
```text
feat: ...
fix: ...
refactor: ...
docs: ...
test: ...
chore: ...
perf: ...
ci: ...
```
### 运行方式
- 不要在仓库根目录执行统一的 `npm install`
- 每个子项目在自己的目录中单独安装依赖
- `admin-xy`、`log-analyzer`、`dev-assistant` 彼此相对独立
### 日志与排查
- trace 日志统一存放在 `.claude/logs/`
- `log-analyzer` 默认读取该目录
- `admin-xy` 生产部署通过 `deploy.sh` 管理
## 常见任务
| 我想做什么 | 进入目录 | 命令 |
| --- | --- | --- |
| 启动 admin-xy 后端 | `admin-xy/server` | `mvn spring-boot:run` |
| 启动 admin-xy 前端 | `admin-xy/web` | `npm run dev` |
| 构建 admin-xy 前端 | `admin-xy/web` | `npm run build` |
| 运行 admin-xy 后端测试 | `admin-xy/server` | `mvn test` |
| 发布 admin-xy | `admin-xy` | `sudo ./deploy.sh` |
| 启动 log-analyzer | `log-analyzer` | `npm run dev` |
| 构建 log-analyzer | `log-analyzer` | `npm run build` |
| 启动 dev-assistant bridge | `dev-assistant` | `npm run bridge:dev` |
## 说明
这份 README 以当前仓库里的实际目录与配置为准。如果某个子模块后续发生调整,建议同步更新这里的目录结构、启动命令和端口说明。