Files
Pre_Seg_Server/AGENTS.md

196 lines
7.9 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 编码助手项目指南
> 本文件面向 AI 编码助手。阅读者应假设对该项目一无所知。以下所有信息均基于项目实际内容,不做假设性推断。
---
## 项目概述
本项目是一个**语义分割系统**Semantic Segmentation System的 Web 前端应用,用于 AI 驱动的图像/视频分割与标注。它提供了一个深色主题Dark Mode的单页应用SPA包含项目管理、分割工作区、AI 智能分割引擎和模板库四大核心模块。
- **项目名称**: `react-example`package.json 中的 name
- **部署目标**: Google AI StudioCloud 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/genaiGemini API |
| 后端/服务器 | Express 4单文件 `server.ts` |
| 运行时 | Node.jsES 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` — 应用托管 URLAI 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避免界面闪烁。**请勿修改此逻辑。**