# test-glm **Repository Path**: alimtxyz/test-glm ## Basic Information - **Project Name**: test-glm - **Description**: 测试GLM - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-10 - **Last Updated**: 2026-02-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 全能文档阅读器 一个基于 Web 的全能文档阅读器,支持 PDF、Word、PPT、EPUB、Text 和图片格式的在线预览与阅读。 ## 技术栈 ### 前端 - Vue 3 + TypeScript + Vite - Pinia(状态管理) - Vue Router(路由) - Axios(HTTP 客户端) - pdf.js(PDF 预览) - mammoth.js(Word 预览) - epub.js(EPUB 预览) ### 后端 - Go 1.23 - 标准库 net/http - GORM(ORM) - JWT(认证) - bcrypt(密码加密) - MySQL(数据库) - Redis(缓存) ## 快速开始 ### 1. 安装依赖 ```bash # 前端依赖 cd frontend npm install # 后端依赖 cd ../backend /usr/local/go/bin/go mod tidy ``` ### 2. 配置数据库 ```bash # 创建数据库 mysql -u root -p # 输入密码: root CREATE DATABASE doc_reader CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; EXIT; ``` ### 3. 启动项目 #### 方式一:使用启动脚本(推荐) ```bash cd /Users/alimxxx/代码库/test-glm ./start.sh ``` #### 方式二:分别启动 **启动后端:** ```bash cd backend /usr/local/go/bin/go run main.go ``` **启动前端(新终端):** ```bash cd frontend npm run dev ``` ### 4. 访问应用 - 前端:http://localhost:5173 - 后端:http://localhost:8080 - 健康检查:http://localhost:8080/health ## 功能特性 ### 用户认证 - ✅ 用户注册 - ✅ 用户登录 - ✅ JWT Token 认证 - ✅ 用户信息管理 ### 文件管理 - ✅ 文件上传(支持拖拽) - ✅ 文件列表(分页) - ✅ 文件下载 - ✅ 文件删除 - ✅ 分享功能(公开/私有) - ✅ 权限控制 ### 文档预览 - ✅ PDF 在线预览 - ✅ Word 文档预览 - ✅ 文本文件预览 - ✅ 图片预览 - ⏳ PPT 预览(开发中) - ⏳ EPUB 预览(开发中) ## API 文档 ### 认证接口 #### 用户注册 ```bash POST /api/v1/auth/register Content-Type: application/json { "username": "testuser", "email": "test@example.com", "password": "123456" } ``` #### 用户登录 ```bash POST /api/v1/auth/login Content-Type: application/json { "username": "testuser", "password": "123456" } Response: { "code": 200, "message": "login success", "data": { "token": "eyJhbGc...", "user": { "id": 1, "username": "testuser", "email": "test@example.com", "role": "user" } } } ``` #### 获取用户信息 ```bash GET /api/v1/auth/me Authorization: Bearer ``` ### 文件接口 #### 上传文件 ```bash POST /api/v1/files/upload Authorization: Bearer Content-Type: multipart/form-data file: <文件> ``` #### 获取文件列表 ```bash GET /api/v1/files?page=1&page_size=20 Authorization: Bearer ``` #### 获取文件详情 ```bash GET /api/v1/files/:id Authorization: Bearer ``` #### 下载文件 ```bash GET /api/v1/files/:id/stream Authorization: Bearer ``` #### 更新分享状态 ```bash PUT /api/v1/files/:id/share Authorization: Bearer Content-Type: application/json { "is_public": true } ``` #### 删除文件 ```bash DELETE /api/v1/files/:id Authorization: Bearer ``` ## 项目结构 ``` test-glm/ ├── frontend/ # 前端 Vue 项目 │ ├── src/ │ │ ├── api/ # API 接口 │ │ ├── components/ # 组件 │ │ ├── views/ # 页面 │ │ ├── store/ # 状态管理 │ │ └── router/ # 路由 │ └── vite.config.ts # Vite 配置 ├── backend/ # 后端 Go 项目 │ ├── config/ # 配置文件 │ ├── internal/ │ │ ├── handler/ # HTTP 处理器 │ │ ├── middleware/ # 中间件 │ │ ├── model/ # 数据模型 │ │ ├── repository/ # 数据访问层 │ │ ├── service/ # 业务逻辑 │ │ └── utils/ # 工具函数 │ ├── uploads/ # 上传文件存储 │ └── main.go # 入口文件 ├── docker-compose.yml # Docker Compose 配置 ├── start.sh # 启动脚本 └── README.md # 项目说明 ``` ## 配置说明 ### 后端配置 配置文件位于 `backend/config/config.yaml`: ```yaml server: port: 8080 mode: debug database: host: localhost port: 3306 user: root password: root dbname: doc_reader charset: utf8mb4 jwt: secret: doc-reader-secret-key-change-in-production-2026 expire: 24h upload: max_size: 52428800 # 50MB allowed_types: - application/pdf - application/vnd.openxmlformats-officedocument.wordprocessingml.document - text/plain - image/jpeg - image/png ``` ### 前端配置 前端配置位于 `frontend/vite.config.ts`: ```typescript export default defineConfig({ server: { port: 5173, proxy: { '/api': { target: 'http://localhost:8080', changeOrigin: true, }, }, }, }); ``` ## 开发说明 ### 添加新的文件类型支持 1. 在后端 `config/config.yaml` 中添加新的 MIME 类型 2. 在前端 `src/components/` 中创建新的预览组件 3. 在 `src/views/Reader.vue` 中添加对应的类型判断 ### 添加新的 API 1. 在后端 `internal/handler/` 中添加处理函数 2. 在后端 `internal/service/` 中添加业务逻辑 3. 在后端 `internal/repository/` 中添加数据访问 4. 在后端 `main.go` 中注册路由 5. 在前端 `src/api/index.ts` 中添加 API 调用 6. 在前端 `src/store/` 中添加状态管理 ## 许可证 MIT License