# inforboard **Repository Path**: ivylee-nh/inforboard ## Basic Information - **Project Name**: inforboard - **Description**: 局域网中的信息墙,基于flask+vue。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-07 - **Last Updated**: 2026-01-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: 信息墙 ## README > ~~~txt > ## 🚀 快速开始 > > ### 环境要求 > - Python 3.8+ > - Node.js 16+ > - npm 或 yarn > > ### 安装步骤 > > #### 1. 克隆项目 > ```bash > git clone > cd infoboard > ~~~ > > #### 2. 后端安装 > > ```bash > cd backend > # 安装依赖 > pip install -r requirements.txt > > # 初始化数据库 > python init_db.py > ``` > > #### 3. 前端安装 > > ```bash > cd frontend > > # 安装依赖 > npm install > > # 构建生产版本 > npm run build > ``` > > ### 运行项目 > > #### 开发模式 > > **后端:** > > ```bash > cd backend > python app.py > ``` > > 后端将在 `http://localhost:5000` 启动 > > **前端:** > > ```bash > cd frontend > npm run dev > ``` > > 前端开发服务器将在 `http://localhost:5173` 启动 > > #### 生产模式 > > 1. 构建前端: > > ```bash > cd frontend > npm run build > ``` > > 1. 启动后端(会自动服务前端静态文件): > > ```bash > cd backend > python app.py > ``` > > 1. 访问 `http://localhost:5000` > > #### Windows 一键启动 > > ```bash > start.bat > ``` > > ## 📖 使用说明 > > ### 用户管理 > > 1. 访问 `/users` 页面 > 2. 添加 IP 地址和对应的用户名 > 3. 系统将根据客户端 IP 自动识别用户身份 > > ### 信息提交 > > 1. 访问首页(`/`) > 2. 系统自动识别当前用户 > 3. 输入信息内容 > 4. 选择优先级(普通/重要/紧急) > 5. 可选:上传附件(最大 16MB) > 6. 点击提交或使用快捷键 `Ctrl+Enter` > > ### 信息展示 > > - **大屏展示**(`/display`):适合投影展示,实时滚动显示最新消息 > - **表格汇总**(`/display2`):表格形式展示所有消息,支持导出 > > ### 数据导出 > > - 在提交页面点击菜单 → 导出 Excel > - 或在表格汇总页面点击导出按钮 > - 支持导出个人消息或全部消息 > > ## 🔧 配置说明 > > ### 后端配置 > > 在 [`backend/app.py`](vscode-webview://1k3bjh7rl4vldoe8e6l2rf69cs7asbt73bsj06snakrhs0sg6giv/backend/app.py) 中可以修改: > > - `SECRET_KEY`:Flask 密钥 > - `MAX_CONTENT_LENGTH`:最大上传文件大小(默认 16MB) > - 数据库路径 > - 日志配置 > > ### 日志系统 > > 详细的日志配置和使用说明请参考 [`backend/LOGGING_README.md`](vscode-webview://1k3bjh7rl4vldoe8e6l2rf69cs7asbt73bsj06snakrhs0sg6giv/backend/LOGGING_README.md) > > 日志文件位置: > > - `backend/logs/app.log`:应用日志(保留 30 天) > - `backend/logs/error.log`:错误日志(保留 90 天) > - `backend/logs/access.log`:访问日志(保留 30 天) > > ## 🌐 API 接口 > > ### 用户相关 > > - `GET /api/current-user`:获取当前用户信息 > - `GET /api/users`:获取所有用户列表 > - `POST /api/users`:添加新用户 > - `PUT /api/users/`:更新用户信息 > - `DELETE /api/users/`:删除用户 > > ### 消息相关 > > - `POST /api/submit`:提交新消息 > - `GET /api/history`:获取历史消息(最近 20 条) > - `GET /api/my-messages`:获取当前用户的所有消息 > - `DELETE /api/messages/`:删除指定消息 > - `GET /api/download/`:下载附件 > > ### 导出相关 > > - `GET /api/export-all-messages`:导出所有消息为 Excel > - `GET /api/export-my-messages`:导出当前用户消息为 Excel > > ### WebSocket 事件 > > - `new_message`:新消息推送 > - `message_deleted`:消息删除通知 > > ## 🎨 主题定制 > > 系统支持亮色和暗色两种主题,主题样式定义在 [`frontend/src/styles/theme.css`](vscode-webview://1k3bjh7rl4vldoe8e6l2rf69cs7asbt73bsj06snakrhs0sg6giv/frontend/src/styles/theme.css) 中。 > > 可以通过修改 CSS 变量来定制主题颜色: > > ```css > :root { > --accent: #1890ff; /* 主题色 */ > --success: #52c41a; /* 成功色 */ > --warning: #faad14; /* 警告色 */ > --error: #ff4d4f; /* 错误色 */ > /* ... 更多变量 */ > } > ``` > > ## 🔒 安全说明 > > 1. **IP 识别**:系统通过 IP 地址识别用户,适用于内网环境 > 2. **文件上传**:限制文件大小为 16MB,建议添加文件类型验证 > 3. **生产部署**:建议使用 Nginx 反向代理并配置 HTTPS > 4. **数据备份**:定期备份 `backend/instance/infoboard.db` 数据库文件 > > ## 📝 开发说明 > > ### 添加新功能 > > 1. 后端:在 [`backend/app.py`](vscode-webview://1k3bjh7rl4vldoe8e6l2rf69cs7asbt73bsj06snakrhs0sg6giv/backend/app.py) 中添加新的路由 > 2. 前端:在 [`frontend/src/views/`](vscode-webview://1k3bjh7rl4vldoe8e6l2rf69cs7asbt73bsj06snakrhs0sg6giv/frontend/src/views/) 中创建新页面 > 3. 路由:在 [`frontend/src/router.js`](vscode-webview://1k3bjh7rl4vldoe8e6l2rf69cs7asbt73bsj06snakrhs0sg6giv/frontend/src/router.js) 中注册路由 > > ### 数据库迁移 > > 如需修改数据库结构: > > 1. 修改 [`backend/models.py`](vscode-webview://1k3bjh7rl4vldoe8e6l2rf69cs7asbt73bsj06snakrhs0sg6giv/backend/models.py) 中的模型 > > 2. 创建迁移脚本(参考 `migrate_add_attachment.py`) > > 3. 运行迁移脚本 > > ### 集成部署 > 部署包结构: infoboard_deploy/ ├── python-3.8.10-amd64.exe # Python安装包 ├── python_packages/ # Python依赖 ├── infoboard/ │ ├── backend/ │ │ ├── app.py # 修改后的后端 │ │ ├── models.py │ │ ├── requirements.txt │ │ └── ... │ ├── frontend/ │ │ └── dist/ # 预构建的静态文件 │ ├── start.bat # 启动脚本 │ └── install.bat # 安装脚本 └── README.txt > > 需要修改 [`backend/app.py`](vscode-webview://1k3bjh7rl4vldoe8e6l2rf69cs7asbt73bsj06snakrhs0sg6giv/backend/app.py:12),添加静态文件服务: > > ```python > from flask import Flask, send_from_directory > import os > > # 配置静态文件路径 > basedir = os.path.abspath(os.path.dirname(__file__)) > frontend_dist = os.path.join(basedir, '..', 'frontend', 'dist') > > app = Flask(__name__, > static_folder=frontend_dist, > static_url_path='') > > # 添加前端路由 > @app.route('/') > def serve_index(): > """提供前端首页""" > return send_from_directory(app.static_folder, 'index.html') > > @app.route('/') > def serve_static_files(path): > """提供静态资源文件""" > file_path = os.path.join(app.static_folder, path) > if os.path.exists(file_path) and os.path.isfile(file_path): > return send_from_directory(app.static_folder, path) > # SPA路由回退到index.html > return send_from_directory(app.static_folder, 'index.html') > > # 其他API路由保持不变... > ``` > > ## 🔧 前端路由配置调整 > > 修改 [`frontend/src/router.js`](vscode-webview://1k3bjh7rl4vldoe8e6l2rf69cs7asbt73bsj06snakrhs0sg6giv/frontend/src/router.js:13) 使用hash模式: > > ```javascript > import { createRouter, createWebHashHistory } from 'vue-router' > import SubmitView from './views/SubmitView.vue' > import DisplayView from './views/DisplayView.vue' > import DisplayView2 from './views/DisplayView2.vue' > > const routes = [ > { path: '/', component: SubmitView }, > { path: '/display', component: DisplayView }, > { path: '/display2', component: DisplayView2 } > ] > > const router = createRouter({ > history: createWebHashHistory(), // 使用hash模式 > routes > }) > > export default router > ``` > > 构建前端:`cd frontend && npm run build` > > #### !!!!这个方案完全绕过了Node.js版本限制问题 > > ## 🐛 故障排查 > > ### 常见问题 > > **1. 用户无法提交信息** > > - 检查 IP 是否已在用户管理中注册 > - 查看 `backend/logs/error.log` 错误日志 > > **2. WebSocket 连接失败** > > - 确认后端服务正常运行 > - 检查防火墙设置 > - 查看浏览器控制台错误信息 > > **3. 附件上传失败** > > - 检查文件大小是否超过 16MB > - 确认 `backend/uploads/` 目录存在且有写入权限 > > **4. 数据库错误** > > - 检查 `backend/instance/` 目录权限 > - 尝试删除数据库文件并重新初始化 > > 更多故障排查信息请参考日志文件。 > > > > ## 📄 许可证 > > 本项目仅供内部使用。 > > ## 👥 贡献者 > > - ivylee - 初始开发