# 固定资产管理系统 这是一个前后端分离的固定资产管理系统,覆盖资产台账、借用归还、扫码出入库、挂载关系、维修、报废、统计分析和系统设置等功能。 ## 技术栈 - 前端:Vue 3、Vite、TypeScript、Pinia、Vue Router、Tailwind CSS - 后端:Express、TypeScript、Prisma、MySQL - 部署:Docker Compose ## 目录结构 - `frontend/`:前端页面、组件、状态管理、接口封装 - `backend/`:后端路由、控制器、中间件、工具函数 - `backend/prisma/schema.prisma`:数据库模型 - `deploy.sh`:固定资产系统安全部署脚本 - `scripts/backup-equipment.sh`:固定资产系统备份脚本 - `AGENTS.md`:仓库协作与多代理分工说明 - `BACKUP.md`:备份与回滚说明 ## 本地开发 分别安装依赖: ```bash cd frontend && npm install cd backend && npm install ``` 常用命令: ```bash cd frontend && npm run dev cd frontend && npm run build cd backend && npm run dev cd backend && npm run build cd backend && npm run prisma:generate cd backend && npm run prisma:migrate ``` ## 服务器部署 生产服务器上同时运行两套同类系统: - 固定资产系统:`/opt/equipment-management` - 摄影设备借还系统:`/opt/shebeiguanli` 两套系统使用不同的容器、端口、网络和数据卷。部署本项目时,只能操作固定资产系统这一套资源,不能影响 `shebeiguanli-*` 容器。 执行部署: ```bash cd /opt/equipment-management ./deploy.sh ``` 部署脚本默认会先备份,再重建固定资产系统容器,最后检查健康状态和另一套系统状态。 ## 标准发布命令 在当前这台 Windows 开发机上,推荐直接使用: ```powershell $env:DEPLOY_PASSWORD="jsjj8888" .\scripts\publish-to-server.ps1 ``` 这个脚本会自动完成: - 打包当前仓库源码 - 上传到 `/opt/equipment-management` - 只覆盖固定资产系统源码 - 调用服务器上的安全部署脚本 常用参数: ```powershell .\scripts\publish-to-server.ps1 -SkipDeploy .\scripts\publish-to-server.ps1 -SkipBackup ``` - `-SkipDeploy`:只同步代码,不执行服务器部署 - `-SkipBackup`:执行部署,但跳过备份,不建议常用 ## 备份与回滚 执行备份: ```bash cd /opt/equipment-management ./scripts/backup-equipment.sh ``` 默认只保留最近 `3` 份备份,备份目录在 `/opt/backups/equipment-management`。详细说明见 `BACKUP.md`。 ## 人员与组织同步 后端已预留钉钉中台同步能力,支持同步: - `hr_groups` -> 部门 - `hr_employee` + `hr_employee_register` -> 使用者 同步接口: ```bash GET /api/sync/hr/preview POST /api/sync/hr/run ``` 这两个接口都只允许管理员访问。源库必须保持只读,不允许对 SQL Server 做写操作。 建议配置的环境变量: ```bash SQLSERVER_HOST=218.93.191.16 SQLSERVER_PORT=1433 SQLSERVER_DATABASE=JSDataMiddlePlatform SQLSERVER_USER=nanting SQLSERVER_PASSWORD=*** SQLSERVER_ENCRYPT=false SQLSERVER_TRUST_CERT=true HR_SYNC_ENABLED=false HR_SYNC_SCHEDULE=03:00 HR_SYNC_ALLOWED_STATUS_VALUES=3 HR_SYNC_INACTIVE_STATUS_VALUES=5 HR_SYNC_EXCLUDED_DEPARTMENTS=供应商,快递公司,外部交流 HR_SYNC_EXCLUDED_NAME_KEYWORDS= ``` - `HR_SYNC_ENABLED=true` 时,后端会启动每日定时同步 - `HR_SYNC_SCHEDULE` 建议使用 `03:00` - `HR_SYNC_ALLOWED_STATUS_VALUES` 用来限定“哪些源状态算正式员工”,当前建议 `3` - `HR_SYNC_INACTIVE_STATUS_VALUES` 用来标记源系统里的非在职状态码 - `HR_SYNC_EXCLUDED_DEPARTMENTS` 用来排除供应商、快递公司等外部对象 - `HR_SYNC_EXCLUDED_NAME_KEYWORDS` 可选,用来额外排除名字特征 - 如果源库是较老版本 SQL Server,建议 `SQLSERVER_ENCRYPT=false` ## 当前线上资源 - 前端:`http://1.13.22.133` - 后端:`http://1.13.22.133:3000/api` - 健康检查:`http://1.13.22.133:3000/api/health` ## 注意事项 - 不要把真实密码、数据库连接串或生产环境地址提交到仓库。 - 涉及 Prisma 模型调整时,先生成客户端,再验证相关接口。 - 发布前默认执行备份,不建议跳过。