# work-publish-system **Repository Path**: aibyte/work-publish-system ## Basic Information - **Project Name**: work-publish-system - **Description**: 作品发布系统 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-18 - **Last Updated**: 2025-10-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Work Publish System - 作品发布系统 一个功能强大的全栈作品发布系统,支持富文本编辑、多媒体内容管理、文档转换和数据库存储。 ## ✨ 功能特性 ### 🎨 富文本编辑 - 支持多种文本格式(粗体、斜体、下划线、删除线) - 支持标题、列表、引用等结构化内容 - 支持文本对齐(左对齐、居中、右对齐) - 支持撤销/重做操作 - 响应式设计,支持移动端 ### 📁 多媒体支持 - 图片上传和插入(支持拖拽上传) - 视频URL插入(支持YouTube、Bilibili、直链视频) - 链接插入和管理 - 媒体文件预览和管理 ### 📄 文档转换 - Word文档(.docx, .doc)转HTML和PDF - PowerPoint(.pptx, .ppt)转HTML和PDF - PDF文档处理和预览 - 转换结果预览和插入 ### 🗄️ 数据库支持 - PostgreSQL数据库集成 - 完整的表结构设计 - 作品、媒体文件、用户管理 - 点赞、评论、浏览量统计 ### 🔐 用户系统 - 用户注册和登录 - 管理员权限管理 - JWT身份验证 - 用户作品管理 ## 🛠️ 技术栈 - **前端**: React 18, Ant Design, TipTap编辑器, Redux Toolkit - **后端**: Node.js, Express.js - **数据库**: PostgreSQL - **文档转换**: LibreOffice, Mammoth.js, Sharp - **样式**: SCSS, CSS Modules - **部署**: Docker, Docker Compose, Nginx ## 🚀 快速开始 ### 方式一:Docker部署(推荐) ```bash # 克隆项目 git clone https://gitee.com/aibyte/work-publish-system cd work-publish-system # 一键启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps ``` 访问地址: - 🌐 前端应用:http://211.86.197.10 - 🔌 API接口:http://211.86.197.10/api - 📊 直接访问前端:http://211.86.197.10:9090 - 🔧 直接访问API:http://211.86.197.10:9091 ### 方式二:本地开发 #### 环境要求 - Node.js 18+ - PostgreSQL 12+ - LibreOffice(用于文档转换) #### 安装步骤 1. **安装依赖** ```bash npm install --legacy-peer-deps ``` 2. **配置数据库** ```bash # 创建PostgreSQL数据库 # 执行 database/schema.sql 初始化表结构 npm run init-db ``` 3. **启动服务** ```bash # 自动启动前后端服务 npm run dev # 或手动启动 npm run server # 后端服务 npm start # 前端服务 ``` 4. **访问应用** - 前端: http://211.86.197.10:9090 - 后端: http://211.86.197.10:9091 5. **测试登录** - 邮箱: `demo@example.com` - 密码: `demo123` ## Docker运行方式 ### 方式一:使用Docker Compose(推荐) 1. 确保在项目根目录 cd work-publish-system 2. 一键启动所有服务 docker-compose up -d 3. 查看服务状态 docker-compose ps 4. 查看日志(可选) docker-compose logs -f app ### 方式二:单独构建和运行 1. 构建Docker镜像 docker build -t work-publish-system . 2. 运行容器 docker run -d \ --name work-publish-system \ -p 9090:9090 \ -p 9091:9091 \ -e NODE_ENV=production \ -e DB_HOST=118.178.138.0 \ -e DB_PORT=9070 \ -e DB_DATABASE=postgres \ -e DB_USERNAME=postgres \ -e DB_PASSWORD=difyai123456 \ -v ./uploads:/app/uploads \ work-publish-system ## 📁 项目结构 ``` work-publish-system/ ├── src/ # 前端源码 │ ├── components/ # React组件 │ │ ├── RichTextEditor/ # 富文本编辑器 │ │ ├── PdfViewer/ # PDF查看器 │ │ └── FileUpload/ # 文件上传组件 │ ├── pages/ # 页面组件 │ │ ├── Works/ # 作品列表页 │ │ ├── ArticleDetail/ # 作品详情页 │ │ └── ArticleEditor/ # 作品编辑页 │ ├── services/ # API服务 │ │ └── articleService.js │ └── config/ # 配置文件 │ └── database.js # 数据库配置 ├── server/ # 后端源码 │ ├── app.js # Express服务器 │ └── services/ # 后端服务 │ ├── authService.js │ ├── articleService.js │ ├── documentConversionService.js │ └── pdfConversionService.js ├── database/ # 数据库相关 │ └── schema.sql # 数据库表结构 ├── scripts/ # 工具脚本 │ └── initDatabase.js # 数据库初始化 ├── docker-compose.yml # Docker编排配置 ├── Dockerfile # Docker镜像配置 └── nginx.conf # Nginx配置 ``` ## 🗄️ 数据库设计 ### 核心表结构 - **users** - 用户表(用户信息、认证) - **admins** - 管理员表(管理员权限) - **articles** - 作品表(文章内容、状态) - **attachments** - 附件表(文件上传记录) - **media_files** - 媒体文件表(图片、视频等) - **pdf_conversions** - PDF转换记录表 - **document_conversions** - 文档转换记录表 - **comments** - 评论表 - **likes** - 点赞表 ### 特色功能 - 📝 作品内容同时存储JSON和HTML格式 - 📊 支持作品状态管理(草稿、已发布、已归档) - 📎 完整的媒体文件元数据存储 - 🔄 文档转换状态实时跟踪 ## 🔌 API接口 ### 认证相关 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/admin-login` - 管理员登录 - `GET /api/auth/me` - 获取当前用户信息 ### 作品管理 - `GET /api/articles` - 获取作品列表 - `POST /api/articles` - 创建作品 - `GET /api/articles/:id` - 获取作品详情 - `PUT /api/articles/:id` - 更新作品 - `DELETE /api/articles/:id` - 删除作品 ### 文件上传 - `POST /api/upload/image` - 上传图片 - `POST /api/upload/document` - 上传文档 - `POST /api/upload/document-with-save` - 上传并保存文档 ### 文档转换 - `GET /api/attachments/:id/pdf` - 获取PDF版本 - `POST /api/pdf-conversions` - 保存PDF转换信息 ## 🎯 使用指南 ### 富文本编辑 1. 在编辑器中输入内容 2. 使用工具栏进行格式化 3. 插入图片、视频、链接等多媒体内容 4. 支持拖拽上传图片 5. 保存草稿或直接发布 ### 文档转换 1. 点击"上传文档"按钮 2. 选择Word、PPT、PDF文件 3. 系统自动转换为HTML和PDF格式 4. 预览转换结果 5. 一键插入到编辑器中 ### 媒体管理 - 📷 支持图片直接拖拽上传 - 🎥 视频支持URL链接插入 - 🔗 自动识别YouTube、Bilibili等平台 - 📁 媒体文件自动存储和管理 ## 🐳 Docker部署 ### 服务架构 - **app**: React前端 + Node.js后端 - **postgres**: PostgreSQL数据库 - **nginx**: 反向代理和负载均衡 ### 部署命令 ```bash # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f # 停止服务 docker-compose down ``` ### 数据管理 ```bash # 备份数据库 docker-compose exec postgres pg_dump -U postgres postgres > backup.sql # 恢复数据库 docker-compose exec -T postgres psql -U postgres postgres < backup.sql # 备份上传文件 tar -czf uploads-backup.tar.gz uploads/ ``` ## ⚙️ 环境配置 ### 开发环境 ```bash # .env REACT_APP_API_URL=http://211.86.197.10:9091/api PORT=9090 ``` ### 生产环境 ```bash # .env.production NODE_ENV=production DB_HOST=postgres DB_PORT=5432 DB_NAME=postgres DB_USER=postgres DB_PASSWORD=your-secure-password JWT_SECRET=your-super-secret-jwt-key ``` ## 🔧 开发指南 ### 扩展编辑器功能 ```javascript import { useEditor } from '@tiptap/react'; import StarterKit from '@tiptap/starter-kit'; const editor = useEditor({ extensions: [ StarterKit, // 添加自定义扩展 ], content: '
Hello World!
', }); ``` ### 添加新的文档转换器 ```javascript const convertCustomFormat = async (file) => { // 实现自定义转换逻辑 return { success: true, html: convertedHtml, messages: [] }; }; ``` ## 📋 系统要求 - **Node.js**: 18.0+ - **PostgreSQL**: 12.0+ - **LibreOffice**: 7.0+(用于文档转换) - **Docker**: 20.0+(可选) - **内存**: 最少2GB RAM - **存储**: 最少10GB可用空间 ## 🚨 注意事项 1. **文件大小限制**: 单个文件最大100MB 2. **浏览器兼容性**: 支持现代浏览器(Chrome 90+、Firefox 88+、Safari 14+、Edge 90+) 3. **安全性**: 生产环境请修改默认密码和JWT密钥 4. **性能优化**: 大文件转换建议在后端异步处理 5. **数据备份**: 定期备份数据库和上传文件 ## 📄 许可证 MIT License - 详见 [LICENSE](LICENSE) 文件 ## 🤝 贡献指南 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 打开 Pull Request ## 📞 支持与反馈 如果您在使用过程中遇到问题或有改进建议,请: - 提交 [Issue](../../issues) - 发送邮件至 [your-email@example.com] - 查看 [部署指南](DEPLOYMENT.md) 获取详细部署说明