# prompt-private **Repository Path**: culturedream/prompt-private ## Basic Information - **Project Name**: prompt-private - **Description**: 这是一个私有化prompt管理平台,用于提示词版本管理等功能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-18 - **Last Updated**: 2026-05-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Prompt 管理系统 (私有部署版) 一个基于 Next.js 构建的私有部署 Prompt 管理系统,支持分类、标签、版本管理等功能。 ## 功能特性 - 🔐 **用户认证** - 账号密码登录、用户管理 - 📁 **分类管理** - 多级文件夹分类,支持树形结构 - 🏷️ **标签管理** - 自定义标签,支持标签颜色 - 💡 **提示词管理** - 增删改查、收藏、复制 - ⚙️ **变量模板** - 支持 `{{变量名}}` 语法,自动解析填充 - 📜 **版本控制** - 自动版本快照、版本对比、一键回滚 - 💾 **数据备份** - 数据导出/导入 JSON 文件 - 🛡️ **私有部署** - 纯内网使用,数据本地存储 ## 技术栈 | 技术 | 版本 | |------|------| | Next.js | 16.2.6 | | React | 19.2.4 | | Prisma ORM | 7.8.0 | | SQLite | - | | Ant Design | 6.4.2 | | NextAuth | 5.0.0-beta.31 | | TypeScript | 5.x | ## 快速开始 ### 安装依赖 ```bash npm install ``` ### 初始化数据库 ```bash npx prisma migrate dev ``` ### 初始化管理员账号 ```bash npx prisma db seed ``` 默认管理员账号: - 用户名:`admin` - 密码:`admin123` ### 开发运行 ```bash npm run dev ``` 访问 [http://localhost:3000](http://localhost:3000) ### 生产构建 ```bash npm run build npm start ``` ## 项目结构 ``` prompt-private/ ├── app/ │ ├── api/ # 后端 API 路由 │ │ ├── auth/[...nextauth] # NextAuth 认证 │ │ ├── backup/ # 数据备份/恢复 │ │ ├── folder/ # 分类 CRUD │ │ ├── prompt/ # 提示词 CRUD │ │ ├── tag/ # 标签 CRUD │ │ ├── user/ # 用户管理 │ │ └── version/ # 版本管理 │ ├── (dashboard)/ # 登录后工作台 │ │ ├── layout.tsx # 侧边栏 + 头部布局 │ │ ├── page.tsx # 工作台首页 │ │ ├── folders/page.tsx # 分类管理 │ │ ├── tags/page.tsx # 标签管理 │ │ ├── prompts/page.tsx # 提示词列表 │ │ ├── prompts/[id]/page.tsx # 提示词编辑/新建 │ │ └── settings/page.tsx # 系统设置 │ ├── login/page.tsx # 登录页 │ ├── layout.tsx # 根布局 │ └── globals.css ├── components/ # 组件 │ ├── AntdProvider.tsx │ ├── DashboardShell.tsx │ ├── DashboardSidebar.tsx │ ├── DashboardHeader.tsx │ └── SessionWrapper.tsx ├── lib/ # 工具函数 │ ├── prisma.ts # Prisma 客户端 │ ├── auth.ts # NextAuth 配置 │ └── types.ts # 类型定义 ├── prisma/ │ ├── schema.prisma # 数据库模型 │ └── seed.ts # 种子数据 ├── prompt.db # SQLite 数据库文件 └── .env # 环境变量 ``` ## 使用指南 ### 1. 登录系统 首次使用默认账号 `admin` / `admin123` 登录。 ### 2. 创建分类 - 进入「分类管理」页面 - 点击「新建文件夹」创建根级分类 - 支持多级嵌套分类 ### 3. 管理标签 - 进入「标签管理」页面 - 创建标签并设置颜色 - 提示词可关联多个标签 ### 4. 添加提示词 - 进入「我的提示词」页面 - 点击「新建提示词」 - 填写标题、系统提示词、用户提示词 - 使用 `{{变量名}}` 语法定义变量 ### 5. 使用变量 - 在提示词编辑页,系统会自动解析 `{{变量名}}` 语法 - 填入变量默认值后保存 - 点击列表页的「复制」按钮,会弹出变量填充对话框 ### 6. 版本回滚 - 在提示词编辑页的「版本历史」标签页 - 选择历史版本,点击「回滚」 ## 数据模型 ### User (用户) | 字段 | 类型 | 描述 | |------|------|------| | id | String | 主键 | | username | String | 用户名(唯一) | | password | String | 密码(加密) | | nickname | String | 昵称 | | role | String | 角色(user/admin) | | createdAt | DateTime | 创建时间 | ### Folder (分类) | 字段 | 类型 | 描述 | |------|------|------| | id | String | 主键 | | name | String | 名称 | | parentId | String | 父级分类 ID("0" 表示根级) | | userId | String | 用户 ID | ### Tag (标签) | 字段 | 类型 | 描述 | |------|------|------| | id | String | 主键 | | name | String | 名称 | | color | String | 颜色代码 | | userId | String | 用户 ID | ### Prompt (提示词) | 字段 | 类型 | 描述 | |------|------|------| | id | String | 主键 | | title | String | 标题 | | description | String | 描述 | | systemPrompt | String | 系统提示词 | | userPrompt | String | 用户提示词 | | variables | String | 变量配置 JSON | | folderId | String | 分类 ID | | isFavorite | Boolean | 是否收藏 | | userId | String | 用户 ID | ### PromptVersion (历史版本) | 字段 | 类型 | 描述 | |------|------|------| | id | String | 主键 | | promptId | String | 提示词 ID | | snapshot | String | 完整快照 JSON | | versionNum | Int | 版本号 | | remark | String | 备注 | | createdAt | DateTime | 创建时间 | ## API 接口 | 路由 | 方法 | 描述 | |------|------|------| | /api/user | GET | 获取用户列表 | | /api/user | POST | 创建用户 | | /api/user/:id | PUT | 更新用户 | | /api/user/:id | DELETE | 删除用户 | | /api/folder | GET | 获取分类列表 | | /api/folder | POST | 创建分类 | | /api/folder/:id | PUT | 更新分类 | | /api/folder/:id | DELETE | 删除分类 | | /api/tag | GET | 获取标签列表 | | /api/tag | POST | 创建标签 | | /api/tag/:id | PUT | 更新标签 | | /api/tag/:id | DELETE | 删除标签 | | /api/prompt | GET | 获取提示词列表 | | /api/prompt | POST | 创建提示词 | | /api/prompt/:id | GET | 获取单个提示词 | | /api/prompt/:id | PUT | 更新提示词 | | /api/prompt/:id | DELETE | 删除提示词 | | /api/version | GET | 获取版本列表 | | /api/version/:id | GET | 获取版本详情 | | /api/version/:id | POST | 回滚到版本 | | /api/backup | GET | 导出数据 | | /api/backup | POST | 导入数据 | ## 部署 ### Docker 部署 ```dockerfile FROM node:20-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build EXPOSE 3000 CMD ["npm", "start"] ``` ### 环境变量 在 `.env` 文件中配置: ```env NEXTAUTH_SECRET="your-secret-key" NEXTAUTH_URL="http://your-domain.com" ``` 生成安全的 secret: ```bash openssl rand -hex 32 ``` ## 开发说明 - 所有 API 路由通过 `auth()` 检查登录状态 - 数据按 `userId` 隔离,用户只能访问自己的数据 - 提示词更新时自动创建版本快照 - 标签和分类的级联删除由 Prisma 自动处理 ## License MIT