guoziyun 9 maanden geleden
bovenliggende
commit
a001f484b9

+ 15 - 0
.vscode/launch.json

@@ -55,6 +55,21 @@
       "cwd": "${workspaceFolder}/oms", // Set the current working directory to the 'oms' folder
       "console": "integratedTerminal", // Or "internalConsole"
       "internalConsoleOptions": "openOnSessionStart"
+    },
+    {
+      "type": "node",
+      "request": "launch",
+      "name": "test (TS-Node)",
+      "skipFiles": ["<node_internals>/**"],
+      "program": "${workspaceFolder}/oms/src/test/test-remote-art.ts",
+      "runtimeArgs": [
+        "--require",
+        "ts-node/register" // This tells Node.js to use ts-node to register a TypeScript transpiler
+      ],
+      "args": [], // Optional arguments for your script
+      "cwd": "${workspaceFolder}/oms", // Set the current working directory to the 'oms' folder
+      "console": "integratedTerminal", // Or "internalConsole"
+      "internalConsoleOptions": "openOnSessionStart"
     }
   ]
 }

+ 1 - 2
oms/dist/services/cron-jobs/index.js

@@ -11,8 +11,7 @@ const database_1 = require("../../src/database");
 // Each element: [name: string, schedule: string, jobModule: CronJobModule]
 const settings = [
     // 假设这些文件将存在于 oms/services/cron-jobs/ 目录下
-    ["sync", "*/10 * * * *", require("./sync/sync-service")], // 每10分钟跑一次同步
-    ["done-rate", "10 1 * * *", require("./done-rate")], // 每天凌晨0点10分, 统计作品完成率
+    ["done-rate", "25 12 * * *", require("./done-rate")], // 每天凌晨0点10分, 统计作品完成率
     ["daily-activity-detector", "50 0 * * *", require("./daily-activity-detector")], // 每天凌晨0点50分, 检查是否需要生成新的推送消息
     ["message-sender", "*/5 * * * *", require("./message-sender")], // 每5分钟运行一次
 ];

+ 0 - 0
oms/dist/services/cron-jobs/sync/schema-sync-seq.js → oms/dist/services/sync/schema-sync-seq.js


+ 0 - 0
oms/dist/services/cron-jobs/sync/sync-conn.js → oms/dist/services/sync/sync-conn.js


+ 0 - 0
oms/dist/services/cron-jobs/sync/sync-seq.js → oms/dist/services/sync/sync-seq.js


+ 3 - 1
oms/dist/services/cron-jobs/sync/sync-service.js → oms/dist/services/sync/sync-service.js

@@ -8,6 +8,7 @@ const localdb = "omsdb"; // 本地的数据库
  * sync from remote
  */
 async function run() {
+    const delay = 30 * 1000; // sync freq
     const INIT_SEQ = process.env.INIT_SEQ || 7368116;
     const MONGO_URI = process.env.MONGO_URI || "mongodb://oms:oms123.@localhost:27717/omsdb?authSource=admin";
     const REMOTE_SYNC_MONGO_URI = process.env.REMOTE_SYNC_MONGO_URI || "mongodb://coloring:coloring123.@hk.jccytech.cn:7881?authSource=admin";
@@ -85,7 +86,8 @@ async function run() {
         }
         if (count > 0)
             setTimeout(cycleRun, 0);
-        // else setTimeout(run, delay);
+        else
+            setTimeout(run, delay);
     }, 0);
 }
 module.exports = {

+ 2 - 2
oms/dist/src/models/artModel.js

@@ -58,7 +58,7 @@ var PageStatus;
 })(PageStatus || (exports.PageStatus = PageStatus = {}));
 // 定义 Art Schema
 const ArtSchema = new mongoose_1.Schema({
-    status: { type: Number, required: true, index: true, default: PageStatus.NEW, enum: Object.values(PageStatus) /* desc: '状态' */ },
+    status: { type: Number, required: true, index: true, default: 1000 /* desc: '状态' */ },
     pageId: { type: mongoose_1.Schema.Types.ObjectId, required: true /* desc: 'Page Id' */ },
     user: { type: mongoose_1.Schema.Types.ObjectId, ref: "Designer", required: true, index: true /* desc: '作者' */ },
     from: { type: String /* desc: '素材来源' */ },
@@ -76,7 +76,7 @@ const ArtSchema = new mongoose_1.Schema({
     hasSpecial: { type: Boolean, default: false, index: true /* desc: '是否有special' */ },
     specialVersion: { type: Number, default: 0 /* desc: 'Special图版本' */ },
     specialPkmVersion: { type: Number, default: 0 /* desc: 'SpecialPkm版本' */ },
-    useSpecialThumb: { type: Number, required: true, default: SpecialThumbType.OUTLINE, enum: Object.values(SpecialThumbType) /* desc: '当前Special缩略图' */ },
+    useSpecialThumb: { type: Number, required: true, default: 0 /* desc: '当前Special缩略图' */ },
     mystery: { type: Boolean, default: false, index: true /* desc: '是否神秘图' */ },
     ai: { type: Boolean, default: false, index: true /* desc: '是否AI参考图' */ },
     aiPrompt: { type: String /* desc: 'AI关键字' */ },

+ 5 - 1
oms/dist/src/test/test-remote-art.js

@@ -14,8 +14,12 @@ async function test() {
         remoteConn = await mongoose_1.default.createConnection(REMOTE_MONGO_URI);
         const RemoteArt = remoteConn.model("Art", artModel_1.default.schema);
         console.log(`Connected to remote database.`);
-        const remoteArtDoc = await RemoteArt.findById("62aecb352d374651fce80992");
+        const remoteArtDoc = await RemoteArt.findById("627b856e13d2c95a09ff2cf5");
         if (remoteArtDoc) {
+            remoteArtDoc.totalStartCount = 1;
+            remoteArtDoc.totalDoneCount = 1;
+            remoteArtDoc.completionRate = 100;
+            await remoteArtDoc.save();
             console.log(remoteArtDoc);
         }
         else {

+ 8 - 0
oms/ecosystem.config.js

@@ -140,5 +140,13 @@ module.exports = {
         RABBITMQ_URL: "amqp://coloring:coloring123.@localhost:5672",
       },
     },
+    {
+      name: "coloring-sync", // 同步art
+      script: "dist/services/sync/sync-service.js",
+      instances: 1,
+      exec_mode: "fork",
+      autorestart: true,
+      watch: false,
+    },
   ],
 };

+ 1 - 2
oms/services/cron-jobs/index.ts

@@ -13,8 +13,7 @@ interface CronJobModule {
 // Each element: [name: string, schedule: string, jobModule: CronJobModule]
 const settings: [string, string, CronJobModule][] = [
   // 假设这些文件将存在于 oms/services/cron-jobs/ 目录下
-  ["sync", "*/10 * * * *", require("./sync/sync-service") as CronJobModule], // 每10分钟跑一次同步
-  ["done-rate", "10 1 * * *", require("./done-rate") as CronJobModule], // 每天凌晨0点10分, 统计作品完成率
+  ["done-rate", "25 12 * * *", require("./done-rate") as CronJobModule], // 每天凌晨0点10分, 统计作品完成率
   ["daily-activity-detector", "50 0 * * *", require("./daily-activity-detector") as CronJobModule], // 每天凌晨0点50分, 检查是否需要生成新的推送消息
   ["message-sender", "*/5 * * * *", require("./message-sender") as CronJobModule], // 每5分钟运行一次
 ];

+ 0 - 0
oms/services/cron-jobs/sync/schema-sync-seq.js → oms/services/sync/schema-sync-seq.js


+ 0 - 0
oms/services/cron-jobs/sync/sync-conn.js → oms/services/sync/sync-conn.js


+ 0 - 0
oms/services/cron-jobs/sync/sync-seq.js → oms/services/sync/sync-seq.js


+ 4 - 3
oms/services/cron-jobs/sync/sync-service.js → oms/services/sync/sync-service.js

@@ -8,7 +8,8 @@ const localdb = "omsdb"; // 本地的数据库
  * sync from remote
  */
 async function run() {
-  const INIT_SEQ = process.env.INIT_SEQ || 7368116,
+  const delay = 30 * 1000; // sync freq
+  const INIT_SEQ = process.env.INIT_SEQ || 7368116;
   const MONGO_URI = process.env.MONGO_URI || "mongodb://oms:oms123.@localhost:27717/omsdb?authSource=admin";
   const REMOTE_SYNC_MONGO_URI = process.env.REMOTE_SYNC_MONGO_URI || "mongodb://coloring:coloring123.@hk.jccytech.cn:7881?authSource=admin";
   const localClient = await new MongoClient(MONGO_URI).connect();
@@ -25,7 +26,7 @@ async function run() {
   let seq = INIT_SEQ;
   let seqDoc = await SyncSeq.findOne();
   if (seqDoc) seq = seqDoc.seq;
-  else seqDoc = new SyncSeq({seq});
+  else seqDoc = new SyncSeq({ seq });
 
   let count, localtb, remotetb, localdoc, remotedoc;
   setTimeout(async function cycleRun() {
@@ -86,7 +87,7 @@ async function run() {
     }
 
     if (count > 0) setTimeout(cycleRun, 0);
-    // else setTimeout(run, delay);
+    else setTimeout(run, delay);
   }, 0);
 }
 

+ 2 - 2
oms/src/models/artModel.ts

@@ -98,7 +98,7 @@ export interface IArt extends Document {
 // 定义 Art Schema
 const ArtSchema: Schema = new Schema<IArt>(
   {
-    status: { type: Number, required: true, index: true, default: PageStatus.NEW, enum: Object.values(PageStatus) /* desc: '状态' */ },
+    status: { type: Number, required: true, index: true, default: 1000 /* desc: '状态' */ },
     pageId: { type: Schema.Types.ObjectId, required: true /* desc: 'Page Id' */ },
     user: { type: Schema.Types.ObjectId, ref: "Designer", required: true, index: true /* desc: '作者' */ },
     from: { type: String /* desc: '素材来源' */ },
@@ -121,7 +121,7 @@ const ArtSchema: Schema = new Schema<IArt>(
     hasSpecial: { type: Boolean, default: false, index: true /* desc: '是否有special' */ },
     specialVersion: { type: Number, default: 0 /* desc: 'Special图版本' */ },
     specialPkmVersion: { type: Number, default: 0 /* desc: 'SpecialPkm版本' */ },
-    useSpecialThumb: { type: Number, required: true, default: SpecialThumbType.OUTLINE, enum: Object.values(SpecialThumbType) /* desc: '当前Special缩略图' */ },
+    useSpecialThumb: { type: Number, required: true, default: 0 /* desc: '当前Special缩略图' */ },
 
     mystery: { type: Boolean, default: false, index: true /* desc: '是否神秘图' */ },
     ai: { type: Boolean, default: false, index: true /* desc: '是否AI参考图' */ },

+ 5 - 1
oms/src/test/test-remote-art.ts

@@ -13,8 +13,12 @@ async function test() {
     const RemoteArt = remoteConn.model<IArt>("Art", Art.schema);
     console.log(`Connected to remote database.`);
 
-    const remoteArtDoc = await RemoteArt.findById("62aecb352d374651fce80992");
+    const remoteArtDoc = await RemoteArt.findById("627b856e13d2c95a09ff2cf5");
     if (remoteArtDoc) {
+      remoteArtDoc.totalStartCount = 1;
+      remoteArtDoc.totalDoneCount = 1;
+      remoteArtDoc.completionRate = 100;
+      await remoteArtDoc.save();
       console.log(remoteArtDoc);
     } else {
       console.warn(`Remote Art document with ID 62aecb352d374651fce80992 not found. Skipping remote update.`);