2026-04-28-22-55-15 - 建立代码编纂工作流

This commit is contained in:
2026-04-28 23:01:41 +08:00
parent 071ebf4b2a
commit cb0b99b4ca
7 changed files with 1013 additions and 0 deletions

195
AGENTS.md Normal file
View 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 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避免界面闪烁。**请勿修改此逻辑。**