Revert commits 5170c0a..4e8e8b8

This reverts 3 commit(s) from 5170c0a to 4e8e8b8.

Reverted commits:
4e8e8b8 feat: 拉取最新仓库代码
307528b feat: 拉取最新仓库代码
5170c0a feat: 拉取最新仓库代码

Co-authored-by: traeagent <traeagent@users.noreply.github.com>
This commit is contained in:
gituib
2026-05-06 03:27:51 +00:00
co-authored by traeagent
parent 4e8e8b898b
commit 9c0fd0b3ff
5 changed files with 35 additions and 47 deletions
+1 -4
View File
@@ -19,11 +19,8 @@ const Business = sequelize.define(
allowNull: true, allowNull: true,
}, },
status: { status: {
type: DataTypes.STRING, type: DataTypes.ENUM('active', 'offline'),
defaultValue: 'active', defaultValue: 'active',
validate: {
isIn: [['active', 'offline']],
},
}, },
offlineDate: { offlineDate: {
type: DataTypes.DATE, type: DataTypes.DATE,
+1 -4
View File
@@ -25,11 +25,8 @@ const Warehouse = sequelize.define(
defaultValue: 100, defaultValue: 100,
}, },
status: { status: {
type: DataTypes.STRING, type: DataTypes.ENUM('active', 'inactive'),
defaultValue: 'active', defaultValue: 'active',
validate: {
isIn: [['active', 'inactive']],
},
}, },
description: { description: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
+14 -16
View File
@@ -227,29 +227,27 @@ async function initDatabase() {
// 同步所有模型(按依赖顺序) // 同步所有模型(按依赖顺序)
console.log('开始同步模型...'); console.log('开始同步模型...');
const alterOptions = process.env.DB_TYPE === 'mysql' ? { alter: true } : {};
// 基础模型 // 基础模型
await User.sync(alterOptions); await User.sync({ alter: true });
await Room.sync(alterOptions); await Room.sync({ alter: true });
await Rack.sync(alterOptions); await Rack.sync({ alter: true });
await Device.sync(alterOptions); await Device.sync({ alter: true });
await FaultCategory.sync(alterOptions); await FaultCategory.sync({ alter: true });
// 耗材相关模型 // 耗材相关模型
await ConsumableCategory.sync(alterOptions); await ConsumableCategory.sync({ alter: true });
await Consumable.sync(alterOptions); await Consumable.sync({ alter: true });
await ConsumableLog.sync(alterOptions); await ConsumableLog.sync({ alter: true });
await ConsumableRecord.sync(alterOptions); await ConsumableRecord.sync({ alter: true });
await ConsumableLogArchive.sync(alterOptions); await ConsumableLogArchive.sync({ alter: true });
// 盘点相关模型 // 盘点相关模型
await InventoryPlan.sync(alterOptions); await InventoryPlan.sync({ alter: true });
await InventoryTask.sync(alterOptions); await InventoryTask.sync({ alter: true });
await InventoryRecord.sync(alterOptions); await InventoryRecord.sync({ alter: true });
// 系统设置 // 系统设置
await SystemSetting.sync(alterOptions); await SystemSetting.sync({ alter: true });
console.log('数据库表结构同步完成'); console.log('数据库表结构同步完成');
+3 -13
View File
@@ -724,7 +724,7 @@ async function migrateIdleDeviceAndBusiness() {
}, },
name: { type: sequelize.Sequelize.STRING, allowNull: false }, name: { type: sequelize.Sequelize.STRING, allowNull: false },
description: { type: sequelize.Sequelize.TEXT }, description: { type: sequelize.Sequelize.TEXT },
status: { type: sequelize.Sequelize.STRING, defaultValue: 'active' }, status: { type: sequelize.Sequelize.ENUM('active', 'offline'), defaultValue: 'active' },
offlineDate: { type: sequelize.Sequelize.DATE }, offlineDate: { type: sequelize.Sequelize.DATE },
offlineReason: { type: sequelize.Sequelize.STRING }, offlineReason: { type: sequelize.Sequelize.STRING },
createdAt: { type: sequelize.Sequelize.DATE, allowNull: false }, createdAt: { type: sequelize.Sequelize.DATE, allowNull: false },
@@ -746,7 +746,7 @@ async function migrateIdleDeviceAndBusiness() {
name: { type: sequelize.Sequelize.STRING, allowNull: false }, name: { type: sequelize.Sequelize.STRING, allowNull: false },
location: { type: sequelize.Sequelize.STRING }, location: { type: sequelize.Sequelize.STRING },
capacity: { type: sequelize.Sequelize.INTEGER, defaultValue: 100 }, capacity: { type: sequelize.Sequelize.INTEGER, defaultValue: 100 },
status: { type: sequelize.Sequelize.STRING, defaultValue: 'active' }, status: { type: sequelize.Sequelize.ENUM('active', 'inactive'), defaultValue: 'active' },
description: { type: sequelize.Sequelize.TEXT }, description: { type: sequelize.Sequelize.TEXT },
createdAt: { type: sequelize.Sequelize.DATE, allowNull: false }, createdAt: { type: sequelize.Sequelize.DATE, allowNull: false },
updatedAt: { type: sequelize.Sequelize.DATE, allowNull: false }, updatedAt: { type: sequelize.Sequelize.DATE, allowNull: false },
@@ -803,20 +803,10 @@ async function migrateDevicePositionIndexes() {
for (const idx of indexesToCreate) { for (const idx of indexesToCreate) {
console.log(` → 为 ${tableName} 表添加复合索引 ${idx.name}...`); console.log(` → 为 ${tableName} 表添加复合索引 ${idx.name}...`);
try { try {
let indexExists = false;
if (dialect === 'sqlite') {
const indexList = await sequelize.query(
`SELECT name FROM sqlite_master WHERE type='index' AND name=?`,
{ replacements: [idx.name], type: sequelize.QueryTypes.SELECT }
);
indexExists = indexList.length > 0;
} else {
const existingIndexes = await sequelize.query(`SHOW INDEX FROM ${tableName}`, { const existingIndexes = await sequelize.query(`SHOW INDEX FROM ${tableName}`, {
type: sequelize.QueryTypes.SELECT, type: sequelize.QueryTypes.SELECT,
}); });
indexExists = existingIndexes.some(existing => existing.Key_name === idx.name); const indexExists = existingIndexes.some(existing => existing.Key_name === idx.name);
}
if (indexExists) { if (indexExists) {
console.log(' → 索引已存在,跳过'); console.log(' → 索引已存在,跳过');
+13 -7
View File
@@ -6,7 +6,7 @@ ensureJwtSecret();
const express = require('express'); const express = require('express');
const cors = require('cors'); const cors = require('cors');
const fileUpload = require('express-fileupload'); const fileUpload = require('express-fileupload');
const { sequelize, dbDialect } = require('./db'); const { sequelize } = require('./db');
const { FILE_UPLOAD } = require('./config'); const { FILE_UPLOAD } = require('./config');
const { generateId } = require('./utils/idGenerator'); const { generateId } = require('./utils/idGenerator');
const logger = require('./utils/logger').module('Server'); const logger = require('./utils/logger').module('Server');
@@ -96,12 +96,18 @@ async function syncBusinessModels() {
const DeviceBusiness = require('./models/DeviceBusiness'); const DeviceBusiness = require('./models/DeviceBusiness');
const Warehouse = require('./models/Warehouse'); const Warehouse = require('./models/Warehouse');
const alterOptions = dbDialect === 'mysql' ? { alter: true } : {}; // 仅在开发环境使用 sync({ alter: true }),生产环境应使用 migrations
if (process.env.NODE_ENV !== 'production') {
await Business.sync(alterOptions); await Business.sync({ alter: true });
await DeviceBusiness.sync(alterOptions); await DeviceBusiness.sync({ alter: true });
await Warehouse.sync(alterOptions); await Warehouse.sync({ alter: true });
logger.info(`业务/设备关联/库房模型同步完成(${dbDialect}${dbDialect === 'mysql' ? ' alter mode' : ''}`); logger.info('业务/设备关联/库房模型同步完成(alter mode');
} else {
await Business.sync();
await DeviceBusiness.sync();
await Warehouse.sync();
logger.info('业务/设备关联/库房模型同步完成(safe mode');
}
} }
async function initDefaultSystemSettings() { async function initDefaultSystemSettings() {