2026-04-28-22-55-15 - 建立代码编纂工作流
This commit is contained in:
195
AGENTS.md
Normal file
195
AGENTS.md
Normal file
@@ -0,0 +1,195 @@
|
||||
# AGENTS.md — AI 编码助手项目指南
|
||||
|
||||
> 本文件面向 AI 编码助手。阅读者应假设对该项目一无所知。以下所有信息均基于项目实际内容,不做假设性推断。
|
||||
|
||||
---
|
||||
|
||||
## 项目概述
|
||||
|
||||
本项目是一个**语义分割系统**(Semantic Segmentation System)的 Web 前端应用,用于 AI 驱动的图像/视频分割与标注。它提供了一个深色主题(Dark Mode)的单页应用(SPA),包含项目管理、分割工作区、AI 智能分割引擎和模板库四大核心模块。
|
||||
|
||||
- **项目名称**: `react-example`(package.json 中的 name)
|
||||
- **部署目标**: Google AI Studio(Cloud Run)
|
||||
- **AI Studio 应用链接**: https://ai.studio/apps/2707f0e1-d453-4594-a618-fba53cb937c4
|
||||
- **业务文档**: `语义分割系统构建方案.docx`(项目根目录,未解析内容)
|
||||
|
||||
---
|
||||
|
||||
## 技术栈
|
||||
|
||||
| 层级 | 技术 |
|
||||
|------|------|
|
||||
| 前端框架 | React 19 + TypeScript 5.8 |
|
||||
| 构建工具 | Vite 6 |
|
||||
| 样式方案 | TailwindCSS 4 + 自定义深色主题 |
|
||||
| 状态管理 | React `useState`(无外部状态库) |
|
||||
| 路由 | 无路由库,基于 React 状态切换模块 |
|
||||
| Canvas 渲染 | Konva + react-konva |
|
||||
| 图标库 | lucide-react |
|
||||
| 动画 | motion |
|
||||
| AI SDK | @google/genai(Gemini API) |
|
||||
| 后端/服务器 | Express 4(单文件 `server.ts`) |
|
||||
| 运行时 | Node.js,ES Modules(`"type": "module"`) |
|
||||
|
||||
---
|
||||
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
Seg_Server/
|
||||
├── server.ts # Express 服务端入口(开发服务器 + 生产静态文件服务)
|
||||
├── index.html # SPA HTML 入口
|
||||
├── vite.config.ts # Vite 构建配置
|
||||
├── tsconfig.json # TypeScript 配置
|
||||
├── package.json # 依赖与脚本
|
||||
├── .env.example # 环境变量模板
|
||||
├── metadata.json # AI Studio 元数据(目前为空)
|
||||
├── src/
|
||||
│ ├── main.tsx # React 应用挂载点(StrictMode)
|
||||
│ ├── App.tsx # 根组件:模块路由 + 登录鉴权
|
||||
│ ├── index.css # TailwindCSS 导入 + 自定义工具类
|
||||
│ ├── lib/
|
||||
│ │ └── utils.ts # `cn()` 工具函数(clsx + tailwind-merge)
|
||||
│ └── components/
|
||||
│ ├── auth/
|
||||
│ │ └── Login.tsx # 登录页
|
||||
│ ├── layout/
|
||||
│ │ └── Sidebar.tsx # 左侧导航栏(w-16)
|
||||
│ ├── dashboard/
|
||||
│ │ └── Dashboard.tsx # 总体概况仪表盘
|
||||
│ ├── projects/
|
||||
│ │ └── ProjectLibrary.tsx # 项目库列表
|
||||
│ ├── workspace/
|
||||
│ │ ├── VideoWorkspace.tsx # 核心分割工作区布局
|
||||
│ │ ├── CanvasArea.tsx # Konva 画布(缩放/平移/选点)
|
||||
│ │ ├── ToolsPalette.tsx # 左侧工具栏
|
||||
│ │ ├── OntologyInspector.tsx # 右侧本体/属性检查面板
|
||||
│ │ └── FrameTimeline.tsx # 底部时间轴
|
||||
│ ├── ai/
|
||||
│ │ └── AISegmentation.tsx # AI 智能分割引擎界面
|
||||
│ └── templates/
|
||||
│ └── TemplateRegistry.tsx # 模板库管理
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 构建与运行命令
|
||||
|
||||
```bash
|
||||
# 安装依赖
|
||||
npm install
|
||||
|
||||
# 开发模式(启动 Express + Vite 中间件,端口 3000)
|
||||
npm run dev
|
||||
|
||||
# 生产构建(输出到 dist/)
|
||||
npm run build
|
||||
|
||||
# 预览生产构建
|
||||
npm run preview
|
||||
|
||||
# 生产模式启动(Node 直接运行 server.ts,需先 build)
|
||||
npm start
|
||||
|
||||
# 类型检查(不输出文件)
|
||||
npm run lint
|
||||
|
||||
# 清理构建产物
|
||||
npm run clean
|
||||
```
|
||||
|
||||
**开发服务器地址**: `http://localhost:3000`
|
||||
|
||||
**环境变量**(复制 `.env.example` 为 `.env.local`):
|
||||
- `GEMINI_API_KEY` — Gemini AI API 密钥(AI Studio 会自动注入)
|
||||
- `APP_URL` — 应用托管 URL(AI Studio 自动注入 Cloud Run 地址)
|
||||
|
||||
---
|
||||
|
||||
## 运行时架构
|
||||
|
||||
### 前端
|
||||
- 单页应用,React 19 `StrictMode` 挂载。
|
||||
- 模块切换通过 `App.tsx` 中的 `activeModule` 状态控制,可选值:
|
||||
`'dashboard' | 'projects' | 'ai' | 'workspace' | 'templates'`
|
||||
- 默认进入 `workspace`(分割工作区)。
|
||||
- 未登录时全局拦截,显示 `Login` 组件。
|
||||
|
||||
### 后端 (`server.ts`)
|
||||
- Express 服务器,端口 `3000`。
|
||||
- **开发模式**: 集成 Vite 中间件(`middlewareMode: true`)。
|
||||
- **生产模式**: 静态文件服务 `dist/`,所有路由回退到 `index.html`。
|
||||
- **API 端点**(内存数据存储,无数据库):
|
||||
- `POST /api/login` — 认证(固定用户名 `admin`,密码 `123456`)
|
||||
- `GET /api/projects` — 返回项目列表
|
||||
- `GET /api/templates` — 返回模板列表
|
||||
|
||||
### 部署
|
||||
- 面向 **Google AI Studio** / **Cloud Run** 部署。
|
||||
- `metadata.json` 用于 AI Studio 元数据配置(当前为空)。
|
||||
- `vite.config.ts` 中 HMR 可通过环境变量 `DISABLE_HMR=true` 关闭(AI Studio 环境下文件监听被禁用以防止 agent 编辑时闪烁)。
|
||||
|
||||
---
|
||||
|
||||
## 代码风格与约定
|
||||
|
||||
### 样式规范
|
||||
- **深色主题**: 全局背景色以 `#0a0a0a`、`#111`、`#0d0d0d`、`#151515`、`#1e1e1e` 为主。
|
||||
- **强调色**: 青色(`cyan-400`/`cyan-500`)用于激活状态、按钮和关键指示器。
|
||||
- **工具类优先**: 全面使用 TailwindCSS 工具类,通过 `cn()` 合并条件类名。
|
||||
- **自定义工具类**: `index.css` 中定义 `.no-scrollbar` 用于隐藏滚动条。
|
||||
|
||||
### 组件规范
|
||||
- 所有组件使用 **函数组件 + Hooks**,无类组件。
|
||||
- 组件按功能模块分目录存放在 `src/components/{module}/` 下。
|
||||
- Props 类型使用 TypeScript `interface` 定义。
|
||||
- 导入排序:React → 第三方库 → 内部模块 → 类型。
|
||||
|
||||
### 命名规范
|
||||
- 组件文件使用 **PascalCase**(如 `AISegmentation.tsx`)。
|
||||
- 工具文件使用 **camelCase**(如 `utils.ts`)。
|
||||
- 类型/接口使用 **PascalCase**。
|
||||
|
||||
### 语言约定
|
||||
- **界面文本**: 全部使用 **中文**(如 "核心分割工作区"、"AI智能分割引擎"、"导出 JSON 标注集")。
|
||||
- **代码与注释**: 使用英文。
|
||||
- 添加新 UI 文本时,**必须保持中文**。
|
||||
|
||||
---
|
||||
|
||||
## 测试策略
|
||||
|
||||
**当前状态:无测试文件。**
|
||||
|
||||
- 项目中不存在 `.test.` 或 `.spec.` 文件。
|
||||
- 无测试框架配置(如 Jest、Vitest、Playwright)。
|
||||
- 若需添加测试,建议在前端引入 Vitest(与 Vite 同生态)进行单元测试,或使用 Playwright 进行 E2E 测试。
|
||||
|
||||
---
|
||||
|
||||
## 安全注意事项
|
||||
|
||||
- **硬编码凭证**: `server.ts` 中登录验证使用硬编码凭据(`admin` / `123456`),生产环境必须替换为真实的身份验证机制。
|
||||
- **Mock JWT**: 登录成功返回固定的 `fake-jwt-token-for-admin`,无实际的 JWT 签名验证。
|
||||
- **内存数据存储**: 所有项目/模板数据存储在内存中,服务重启后数据丢失。无持久化层。
|
||||
- **环境变量**: `GEMINI_API_KEY` 通过 `.env.local` 管理,已加入 `.gitignore`,不会误提交。
|
||||
- **CORS / 安全头**: Express 服务器目前未配置 CORS 策略或安全响应头(如 Helmet)。
|
||||
|
||||
---
|
||||
|
||||
## 关键依赖与注意事项
|
||||
|
||||
- **React 19**: 使用 `createRoot` API,注意与 React 18 的部分差异。
|
||||
- **TailwindCSS 4**: 使用 `@import "tailwindcss"` 语法(非 v3 的 `@tailwind` 指令)。
|
||||
- **react-konva**: Canvas 交互核心,所有画布相关操作(缩放、选点、遮罩)均依赖此库。
|
||||
- **use-image**: 用于异步加载图片到 Konva 画布。
|
||||
- **路径别名**: `@/*` 映射到项目根目录(由 `vite.config.ts` 和 `tsconfig.json` 共同配置)。
|
||||
- **缺失资源**: `Sidebar.tsx` 引用了 `/Logo.png`,但项目根目录无此文件,运行时会 404。
|
||||
|
||||
---
|
||||
|
||||
## AI Studio 特定配置
|
||||
|
||||
- `vite.config.ts` 中通过 `loadEnv` 加载环境变量,并将 `GEMINI_API_KEY` 注入到 `process.env.GEMINI_API_KEY`。
|
||||
- AI Studio 会在部署时自动注入 `GEMINI_API_KEY` 和 `APP_URL`。
|
||||
- `DISABLE_HMR` 环境变量用于在 AI Studio agent 编辑模式下关闭 HMR,避免界面闪烁。**请勿修改此逻辑。**
|
||||
Reference in New Issue
Block a user