B2BÍøÂçÈí¼þ

 ÕÒ»ØÃÜÂë
 Á¢¼´×¢²á ÉóºËÍøÕ¾ºÅ:QQ:896757558
ËÑË÷
²é¿´: 4|»Ø¸´: 0
´òÓ¡ ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ

AIWROK°²×¿½Å±¾¶ÔÏó¸ß¼¶ÊµÓÃʾÀý

[¸´ÖÆÁ´½Ó]

1088

Ö÷Ìâ

1093

Ìû×Ó

7629

»ý·Ö

abc

Rank: 9Rank: 9Rank: 9

»ý·Ö
7629
Ìø×ªµ½Ö¸¶¨Â¥²ã
Â¥Ö÷
AIWROK°²×¿½Å±¾¶ÔÏó¸ß¼¶ÊµÓÃʾÀý
AIWROK°²×¿½Å±¾¶ÔÏó¸ß¼¶ÊµÓÃʾÀý B2BÍøÂçÈí¼þ

AIWROK°²×¿½Å±¾¶ÔÏó¸ß¼¶ÊµÓÃʾÀý B2BÍøÂçÈí¼þ
  1. //½»Á÷QQȺ: 711841924 (Ⱥһ) / 528816639 (°²×¿ÄÚ²âȺ)

  2. // AIWROKÈí¼þ - JavaScript¶ÔÏó¸ß¼¶Ó¦ÓÃʵÀý
  3. // »ùÓÚÃæÏò¶ÔÏó˼ÏëÉè¼ÆµÄ×Ô¶¯»¯ÈÎÎñ¹ÜÀíϵͳ
  4. // ÑÝʾÈçºÎÔÚAIWROKÖÐʹÓöÔÏó¡¢ÊôÐԺͷ½·¨¹¹½¨¸´ÔÓÓ¦ÓÃ

  5. /**
  6. * =============================================================================
  7. * AIWROK ×Ô¶¯»¯ÈÎÎñ¹ÜÀíÆ÷ - ÍêÕûʾÀý
  8. * =============================================================================
  9. * ±¾Ê¾ÀýչʾÈçºÎʹÓÃJavaScript¶ÔÏó·â×°¸´ÔÓµÄ×Ô¶¯»¯Âß¼­
  10. * °üº¬£ºÈÎÎñ¹ÜÀí¡¢ÅäÖùÜÀí¡¢ÈÕ־ϵͳ¡¢×´Ì¬¼à¿ØµÈÄ£¿é
  11. *
  12. * ¼æÈÝÐÔ£ºRhino ÒýÇæ (ES5)
  13. * ƽ̨£ºAIWROK °²×¿×Ô¶¯»¯Èí¼þ
  14. * =============================================================================
  15. */

  16. // =============================================================================
  17. // µÚÒ»²¿·Ö£ºÅäÖùÜÀí¶ÔÏó (ConfigManager)
  18. // =============================================================================

  19. /**
  20. * ÅäÖùÜÀíÆ÷¶ÔÏó
  21. * ·â×°AIWROKµÄconfig¶Áд¹¦ÄÜ£¬Ìṩ¸ü±ã½ÝµÄ½Ó¿Ú
  22. */
  23. var ConfigManager = {
  24.     // ÊôÐÔ£ºÅäÖÃÎļþ·¾¶
  25.     configPath: '/sdcard/aiwrok_task_config.ini',
  26.    
  27.     // ÊôÐÔ£º»º´æµÄÅäÖÃÊý¾Ý
  28.     cache: {},
  29.    
  30.     // ·½·¨£º³õʼ»¯ÅäÖÃ
  31.     init: function() {
  32.         printl('ÅäÖùÜÀíÆ÷³õʼ»¯...');
  33.         this.cache = {};
  34.         return true;
  35.     },
  36.    
  37.     // ·½·¨£º¶ÁÈ¡ÅäÖ㨴ø»º´æ£©
  38.     get: function(key, defaultValue) {
  39.         // Ïȼì²é»º´æ
  40.         if (this.cache.hasOwnProperty(key)) {
  41.             return this.cache[key];
  42.         }
  43.         
  44.         // ´ÓÎļþ¶ÁÈ¡
  45.         try {
  46.             var value = config.getConfig(this.configPath, key, defaultValue);
  47.             this.cache[key] = value; // ´æÈ뻺´æ
  48.             return value;
  49.         } catch (e) {
  50.             printl('¶ÁÈ¡ÅäÖÃʧ°Ü [' + key + ']: ' + e);
  51.             return defaultValue;
  52.         }
  53.     },
  54.    
  55.     // ·½·¨£ºÐ´ÈëÅäÖÃ
  56.     set: function(key, value) {
  57.         try {
  58.             config.setConfig(this.configPath, key, value.toString());
  59.             this.cache[key] = value.toString(); // ¸üлº´æ
  60.             return true;
  61.         } catch (e) {
  62.             printl('дÈëÅäÖÃʧ°Ü [' + key + ']: ' + e);
  63.             return false;
  64.         }
  65.     },
  66.    
  67.     // ·½·¨£ºÅúÁ¿¶ÁÈ¡ÅäÖÃ
  68.     loadAll: function(keys) {
  69.         var result = {};
  70.         for (var i = 0; i < keys.length; i++) {
  71.             var key = keys[i];
  72.             result[key] = this.get(key, '');
  73.         }
  74.         return result;
  75.     },
  76.    
  77.     // ·½·¨£ºÅúÁ¿Ð´ÈëÅäÖÃ
  78.     saveAll: function(configObj) {
  79.         var success = true;
  80.         for (var key in configObj) {
  81.             if (configObj.hasOwnProperty(key)) {
  82.                 if (!this.set(key, configObj[key])) {
  83.                     success = false;
  84.                 }
  85.             }
  86.         }
  87.         return success;
  88.     },
  89.    
  90.     // ·½·¨£ºÇå³ý»º´æ
  91.     clearCache: function() {
  92.         this.cache = {};
  93.         printl('ÅäÖûº´æÒÑÇå³ý');
  94.     }
  95. };

  96. // =============================================================================
  97. // µÚ¶þ²¿·Ö£ºÈÕÖ¾¹ÜÀí¶ÔÏó (Logger)
  98. // =============================================================================

  99. /**
  100. * ÈÕÖ¾¹ÜÀíÆ÷¶ÔÏó
  101. * ÌṩͳһµÄÈÕÖ¾Êä³ö½Ó¿Ú£¬Ö§³Ö²»Í¬¼¶±ðºÍ¸ñʽ
  102. */
  103. var Logger = {
  104.     // ÊôÐÔ£ºÈÕÖ¾¼¶±ð³£Á¿
  105.     LEVEL_DEBUG: 0,
  106.     LEVEL_INFO: 1,
  107.     LEVEL_WARN: 2,
  108.     LEVEL_ERROR: 3,
  109.    
  110.     // ÊôÐÔ£ºµ±Ç°ÈÕÖ¾¼¶±ð
  111.     currentLevel: 1, // ĬÈÏINFO¼¶±ð
  112.    
  113.     // ÊôÐÔ£ºÊÇ·ñÆôÓÃʱ¼ä´Á
  114.     enableTimestamp: true,
  115.    
  116.     // ÊôÐÔ£ºÈÕÖ¾ÀúÊ·¼Ç¼
  117.     history: [],
  118.    
  119.     // ÊôÐÔ£º×î´óÀúÊ·¼Ç¼Êý
  120.     maxHistory: 100,
  121.    
  122.     // ·½·¨£ºÉèÖÃÈÕÖ¾¼¶±ð
  123.     setLevel: function(level) {
  124.         this.currentLevel = level;
  125.         printl('ÈÕÖ¾¼¶±ðÉèÖÃΪ: ' + level);
  126.     },
  127.    
  128.     // ·½·¨£ºDEBUG¼¶±ðÈÕÖ¾
  129.     debug: function(message) {
  130.         if (this.currentLevel <= this.LEVEL_DEBUG) {
  131.             this.log('DEBUG', message);
  132.         }
  133.     },
  134.    
  135.     // ·½·¨£ºINFO¼¶±ðÈÕÖ¾
  136.     info: function(message) {
  137.         if (this.currentLevel <= this.LEVEL_INFO) {
  138.             this.log('INFO', message);
  139.         }
  140.     },
  141.    
  142.     // ·½·¨£ºWARN¼¶±ðÈÕÖ¾
  143.     warn: function(message) {
  144.         if (this.currentLevel <= this.LEVEL_WARN) {
  145.             this.log('WARN', message);
  146.         }
  147.     },
  148.    
  149.     // ·½·¨£ºERROR¼¶±ðÈÕÖ¾
  150.     error: function(message) {
  151.         if (this.currentLevel <= this.LEVEL_ERROR) {
  152.             this.log('ERR', message);
  153.         }
  154.     },
  155.    
  156.     // ÄÚ²¿·½·¨£ºÍ³Ò»ÈÕÖ¾Êä³ö
  157.     log: function(level, message) {
  158.         var timestamp = '';
  159.         if (this.enableTimestamp) {
  160.             var now = new Date();
  161.             timestamp = '[' + this.formatDate(now) + '] ';
  162.         }
  163.         
  164.         var logMessage = timestamp + '[' + level + '] ' + message;
  165.         printl(logMessage);
  166.         
  167.         // ±£´æµ½ÀúÊ·¼Ç¼
  168.         this.history.push({
  169.             time: new Date(),
  170.             level: level,
  171.             message: message
  172.         });
  173.         
  174.         // ÏÞÖÆÀúÊ·¼Ç¼ÊýÁ¿
  175.         if (this.history.length > this.maxHistory) {
  176.             this.history.shift();
  177.         }
  178.     },
  179.    
  180.     // ·½·¨£º¸ñʽ»¯ÈÕÆÚ
  181.     formatDate: function(date) {
  182.         var year = date.getFullYear();
  183.         var month = ('0' + (date.getMonth() + 1)).slice(-2);
  184.         var day = ('0' + date.getDate()).slice(-2);
  185.         var hours = ('0' + date.getHours()).slice(-2);
  186.         var minutes = ('0' + date.getMinutes()).slice(-2);
  187.         var seconds = ('0' + date.getSeconds()).slice(-2);
  188.         return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
  189.     },
  190.    
  191.     // ·½·¨£º»ñÈ¡×î½üµÄÈÕÖ¾
  192.     getRecentLogs: function(count) {
  193.         count = count || 10;
  194.         var start = Math.max(0, this.history.length - count);
  195.         return this.history.slice(start);
  196.     },
  197.    
  198.     // ·½·¨£ºÇå¿ÕÈÕÖ¾ÀúÊ·
  199.     clearHistory: function() {
  200.         this.history = [];
  201.         printl('ÈÕÖ¾ÀúÊ·ÒÑÇå¿Õ');
  202.     }
  203. };

  204. // =============================================================================
  205. // µÚÈý²¿·Ö£ºÈÎÎñ¶ÔÏó (Task)
  206. // =============================================================================

  207. /**
  208. * ÈÎÎñ¶ÔÏó¹¹Ô캯Êý
  209. * ±íʾһ¸ö¿ÉÖ´ÐеÄ×Ô¶¯»¯ÈÎÎñ
  210. */
  211. function Task(name, description) {
  212.     // ÊôÐÔ£ºÈÎÎñ»ù±¾ÐÅÏ¢
  213.     this.name = name || 'δÃüÃûÈÎÎñ';
  214.     this.description = description || '';
  215.     this.status = 'pending'; // pending, running, completed, failed, paused
  216.     this.startTime = null;
  217.     this.endTime = null;
  218.     this.duration = 0;
  219.     this.retryCount = 0;
  220.     this.maxRetry = 3;
  221.    
  222.     // ÊôÐÔ£ºÈÎÎñÖ´Ðк¯Êý
  223.     this.executeFunc = null;
  224.    
  225.     // ÊôÐÔ£ºÈÎÎñ»Øµ÷
  226.     this.onComplete = null;
  227.     this.onError = null;
  228. }

  229. // ·½·¨£ºÉèÖÃÖ´Ðк¯Êý
  230. Task.prototype.setExecuteFunction = function(func) {
  231.     this.executeFunc = func;
  232.     return this; // Ö§³ÖÁ´Ê½µ÷ÓÃ
  233. };

  234. // ·½·¨£ºÉèÖÃ×î´óÖØÊÔ´ÎÊý
  235. Task.prototype.setMaxRetry = function(count) {
  236.     this.maxRetry = count;
  237.     return this;
  238. };

  239. // ·½·¨£ºÉèÖÃÍê³É»Øµ÷
  240. Task.prototype.setOnComplete = function(callback) {
  241.     this.onComplete = callback;
  242.     return this;
  243. };

  244. // ·½·¨£ºÉèÖôíÎ󻨵÷
  245. Task.prototype.setOnError = function(callback) {
  246.     this.onError = callback;
  247.     return this;
  248. };

  249. // ·½·¨£ºÖ´ÐÐÈÎÎñ
  250. Task.prototype.run = function() {
  251.     if (!this.executeFunc) {
  252.         Logger.error('ÈÎÎñ [' + this.name + '] ûÓÐÉèÖÃÖ´Ðк¯Êý');
  253.         return false;
  254.     }
  255.    
  256.     if (this.status === 'running') {
  257.         Logger.warn('ÈÎÎñ [' + this.name + '] ÕýÔÚÔËÐÐÖÐ');
  258.         return false;
  259.     }
  260.    
  261.     try {
  262.         // ¸üÐÂ״̬
  263.         this.status = 'running';
  264.         this.startTime = new Date();
  265.         Logger.info('ÈÎÎñ [' + this.name + '] ¿ªÊ¼Ö´ÐÐ');
  266.         
  267.         // Ö´ÐÐÈÎÎñº¯Êý
  268.         var result = this.executeFunc();
  269.         
  270.         // ¸üÐÂ״̬
  271.         this.endTime = new Date();
  272.         this.duration = this.endTime - this.startTime;
  273.         this.status = 'completed';
  274.         
  275.         Logger.info('ÈÎÎñ [' + this.name + '] Ö´ÐÐÍê³É£¬ºÄʱ: ' + this.duration + 'ms');
  276.         
  277.         // µ÷ÓÃÍê³É»Øµ÷
  278.         if (this.onComplete) {
  279.             this.onComplete(result);
  280.         }
  281.         
  282.         return true;
  283.     } catch (e) {
  284.         this.status = 'failed';
  285.         this.endTime = new Date();
  286.         this.duration = this.endTime - this.startTime;
  287.         
  288.         Logger.error('ÈÎÎñ [' + this.name + '] Ö´ÐÐʧ°Ü: ' + e);
  289.         
  290.         // ÖØÊÔÂß¼­
  291.         if (this.retryCount < this.maxRetry) {
  292.             this.retryCount++;
  293.             Logger.warn('ÈÎÎñ [' + this.name + '] µÚ' + this.retryCount + '´ÎÖØÊÔ');
  294.             sleep.millisecond(1000); // µÈ´ý1ÃëºóÖØÊÔ
  295.             return this.run();
  296.         }
  297.         
  298.         // µ÷ÓôíÎ󻨵÷
  299.         if (this.onError) {
  300.             this.onError(e);
  301.         }
  302.         
  303.         return false;
  304.     }
  305. };

  306. // ·½·¨£ºÔÝÍ£ÈÎÎñ
  307. Task.prototype.pause = function() {
  308.     if (this.status === 'running') {
  309.         this.status = 'paused';
  310.         Logger.info('ÈÎÎñ [' + this.name + '] ÒÑÔÝÍ£');
  311.         return true;
  312.     }
  313.     return false;
  314. };

  315. // ·½·¨£º»Ö¸´ÈÎÎñ
  316. Task.prototype.resume = function() {
  317.     if (this.status === 'paused') {
  318.         this.status = 'running';
  319.         Logger.info('ÈÎÎñ [' + this.name + '] Òѻָ´');
  320.         return true;
  321.     }
  322.     return false;
  323. };

  324. // ·½·¨£ºÖØÖÃÈÎÎñ
  325. Task.prototype.reset = function() {
  326.     this.status = 'pending';
  327.     this.startTime = null;
  328.     this.endTime = null;
  329.     this.duration = 0;
  330.     this.retryCount = 0;
  331.     Logger.info('ÈÎÎñ [' + this.name + '] ÒÑÖØÖÃ');
  332. };

  333. // ·½·¨£º»ñÈ¡ÈÎÎñÐÅÏ¢
  334. Task.prototype.getInfo = function() {
  335.     return {
  336.         name: this.name,
  337.         description: this.description,
  338.         status: this.status,
  339.         startTime: this.startTime ? this.startTime.toLocaleString() : null,
  340.         endTime: this.endTime ? this.endTime.toLocaleString() : null,
  341.         duration: this.duration,
  342.         retryCount: this.retryCount,
  343.         maxRetry: this.maxRetry
  344.     };
  345. };

  346. // ·½·¨£º´òÓ¡ÈÎÎñÐÅÏ¢
  347. Task.prototype.printInfo = function() {
  348.     var info = this.getInfo();
  349.     printl('===== ÈÎÎñÐÅÏ¢ =====');
  350.     printl('Ãû³Æ: ' + info.name);
  351.     printl('ÃèÊö: ' + info.description);
  352.     printl('״̬: ' + this.getStatusText(info.status));
  353.     printl('¿ªÊ¼Ê±¼ä: ' + (info.startTime || 'δ¿ªÊ¼'));
  354.     printl('½áÊøÊ±¼ä: ' + (info.endTime || 'δ½áÊø'));
  355.     printl('ºÄʱ: ' + info.duration + 'ms');
  356.     printl('ÖØÊÔ´ÎÊý: ' + info.retryCount + '/' + info.maxRetry);
  357.     printl('===================');
  358. };

  359. // ¸¨Öú·½·¨£º×´Ì¬Îı¾×ª»»
  360. Task.prototype.getStatusText = function(status) {
  361.     var statusMap = {
  362.         'pending': 'µÈ´ýÖÐ',
  363.         'running': 'ÔËÐÐÖÐ',
  364.         'completed': 'ÒÑÍê³É',
  365.         'failed': 'ʧ°Ü',
  366.         'paused': 'ÒÑÔÝÍ£'
  367.     };
  368.     return statusMap[status] || status;
  369. };

  370. // =============================================================================
  371. // µÚËIJ¿·Ö£ºÈÎÎñ¹ÜÀíÆ÷¶ÔÏó (TaskManager)
  372. // =============================================================================

  373. /**
  374. * ÈÎÎñ¹ÜÀíÆ÷¶ÔÏó
  375. * ¹ÜÀí¶à¸öÈÎÎñµÄÖ´ÐС¢µ÷¶ÈºÍ¼à¿Ø
  376. */
  377. var TaskManager = {
  378.     // ÊôÐÔ£ºÈÎÎñÁбí
  379.     tasks: [],
  380.    
  381.     // ÊôÐÔ£ºµ±Ç°ÔËÐеÄÈÎÎñË÷Òý
  382.     currentTaskIndex: -1,
  383.    
  384.     // ÊôÐÔ£ºÊÇ·ñ×Ô¶¯Ö´ÐÐÏÂÒ»¸öÈÎÎñ
  385.     autoExecuteNext: true,
  386.    
  387.     // ·½·¨£ºÌí¼ÓÈÎÎñ
  388.     addTask: function(task) {
  389.         if (!(task instanceof Task)) {
  390.             Logger.error('Ìí¼ÓµÄÈÎÎñ²»ÊÇTask¶ÔÏó');
  391.             return false;
  392.         }
  393.         this.tasks.push(task);
  394.         Logger.info('ÒÑÌí¼ÓÈÎÎñ: ' + task.name);
  395.         return true;
  396.     },
  397.    
  398.     // ·½·¨£ºÒƳýÈÎÎñ
  399.     removeTask: function(taskName) {
  400.         for (var i = 0; i < this.tasks.length; i++) {
  401.             if (this.tasks[i].name === taskName) {
  402.                 this.tasks.splice(i, 1);
  403.                 Logger.info('ÒÑÒÆ³ýÈÎÎñ: ' + taskName);
  404.                 return true;
  405.             }
  406.         }
  407.         Logger.warn('δÕÒµ½ÈÎÎñ: ' + taskName);
  408.         return false;
  409.     },
  410.    
  411.     // ·½·¨£º»ñÈ¡ÈÎÎñ
  412.     getTask: function(taskName) {
  413.         for (var i = 0; i < this.tasks.length; i++) {
  414.             if (this.tasks[i].name === taskName) {
  415.                 return this.tasks[i];
  416.             }
  417.         }
  418.         return null;
  419.     },
  420.    
  421.     // ·½·¨£ºÖ´ÐÐÖ¸¶¨ÈÎÎñ
  422.     executeTask: function(taskName) {
  423.         var task = this.getTask(taskName);
  424.         if (!task) {
  425.             Logger.error('δÕÒµ½ÈÎÎñ: ' + taskName);
  426.             return false;
  427.         }
  428.         
  429.         this.currentTaskIndex = this.tasks.indexOf(task);
  430.         return task.run();
  431.     },
  432.    
  433.     // ·½·¨£º°´Ë³ÐòÖ´ÐÐËùÓÐÈÎÎñ
  434.     executeAll: function() {
  435.         Logger.info('¿ªÊ¼Ö´ÐÐËùÓÐÈÎÎñ£¬¹²' + this.tasks.length + '¸ö');
  436.         
  437.         var successCount = 0;
  438.         var failCount = 0;
  439.         
  440.         for (var i = 0; i < this.tasks.length; i++) {
  441.             this.currentTaskIndex = i;
  442.             var task = this.tasks[i];
  443.             
  444.             Logger.info('Ö´ÐÐÈÎÎñ [' + (i + 1) + '/' + this.tasks.length + ']: ' + task.name);
  445.             
  446.             if (task.run()) {
  447.                 successCount++;
  448.             } else {
  449.                 failCount++;
  450.             }
  451.             
  452.             // Èç¹û²»ÊÇ×Ô¶¯Ö´ÐÐÏÂÒ»¸ö£¬ÔòÍ£Ö¹
  453.             if (!this.autoExecuteNext) {
  454.                 break;
  455.             }
  456.         }
  457.         
  458.         Logger.info('ËùÓÐÈÎÎñÖ´ÐÐÍê³É - ³É¹¦: ' + successCount + ', ʧ°Ü: ' + failCount);
  459.         return {
  460.             success: successCount,
  461.             fail: failCount,
  462.             total: this.tasks.length
  463.         };
  464.     },
  465.    
  466.     // ·½·¨£º²¢ÐÐÖ´ÐÐÈÎÎñ£¨Ä£Ä⣩
  467.     executeParallel: function(taskNames) {
  468.         Logger.info('¿ªÊ¼²¢ÐÐÖ´ÐÐÈÎÎñ: ' + taskNames.join(', '));
  469.         
  470.         var results = {};
  471.         for (var i = 0; i < taskNames.length; i++) {
  472.             var taskName = taskNames[i];
  473.             var task = this.getTask(taskName);
  474.             
  475.             if (task) {
  476.                 Logger.info('Æô¶¯ÈÎÎñ: ' + taskName);
  477.                 // ×¢Ò⣺ÔÚÕæÊµ³¡¾°ÖУ¬ÕâÀïÓ¦¸ÃʹÓöàÏß³Ì
  478.                 // ÓÉÓÚRhinoµÄÏÞÖÆ£¬ÕâÀïÖ»ÊÇ˳ÐòÖ´ÐÐ
  479.                 results[taskName] = task.run();
  480.             } else {
  481.                 Logger.error('δÕÒµ½ÈÎÎñ: ' + taskName);
  482.                 results[taskName] = false;
  483.             }
  484.         }
  485.         
  486.         return results;
  487.     },
  488.    
  489.     // ·½·¨£º»ñÈ¡ËùÓÐÈÎÎñ״̬
  490.     getAllStatus: function() {
  491.         var statusList = [];
  492.         for (var i = 0; i < this.tasks.length; i++) {
  493.             statusList.push(this.tasks[i].getInfo());
  494.         }
  495.         return statusList;
  496.     },
  497.    
  498.     // ·½·¨£º´òÓ¡ËùÓÐÈÎÎñ״̬
  499.     printAllStatus: function() {
  500.         printl('========== ÈÎÎñ¹ÜÀíÆ÷״̬ ==========');
  501.         printl('ÈÎÎñ×ÜÊý: ' + this.tasks.length);
  502.         printl('µ±Ç°ÈÎÎñË÷Òý: ' + this.currentTaskIndex);
  503.         printl('×Ô¶¯Ö´ÐÐ: ' + (this.autoExecuteNext ? '¿ªÆô' : '¹Ø±Õ'));
  504.         printl('');
  505.         
  506.         for (var i = 0; i < this.tasks.length; i++) {
  507.             var task = this.tasks[i];
  508.             var info = task.getInfo();
  509.             printl('[' + (i + 1) + '] ' + info.name + ' - ' + task.getStatusText(info.status));
  510.         }
  511.         printl('====================================');
  512.     },
  513.    
  514.     // ·½·¨£ºÖØÖÃËùÓÐÈÎÎñ
  515.     resetAll: function() {
  516.         for (var i = 0; i < this.tasks.length; i++) {
  517.             this.tasks[i].reset();
  518.         }
  519.         this.currentTaskIndex = -1;
  520.         Logger.info('ËùÓÐÈÎÎñÒÑÖØÖÃ');
  521.     },
  522.    
  523.     // ·½·¨£ºÍ³¼ÆÈÎÎñ״̬
  524.     getStatistics: function() {
  525.         var stats = {
  526.             total: this.tasks.length,
  527.             pending: 0,
  528.             running: 0,
  529.             completed: 0,
  530.             failed: 0,
  531.             paused: 0
  532.         };
  533.         
  534.         for (var i = 0; i < this.tasks.length; i++) {
  535.             var status = this.tasks[i].status;
  536.             if (stats.hasOwnProperty(status)) {
  537.                 stats[status]++;
  538.             }
  539.         }
  540.         
  541.         return stats;
  542.     }
  543. };

  544. // =============================================================================
  545. // µÚÎ岿·Ö£ºÉ豸ÐÅÏ¢¶ÔÏó (DeviceInfo)
  546. // =============================================================================

  547. /**
  548. * É豸ÐÅÏ¢¶ÔÏó
  549. * ·â×°AIWROKµÄÉ豸ÐÅÏ¢²éѯ¹¦ÄÜ
  550. */
  551. var DeviceInfo = {
  552.     // ÊôÐÔ£º»º´æµÄÉ豸ÐÅÏ¢
  553.     cachedInfo: null,
  554.    
  555.     // ·½·¨£º»ñÈ¡É豸ÐÅÏ¢
  556.     getInfo: function() {
  557.         if (this.cachedInfo) {
  558.             return this.cachedInfo;
  559.         }
  560.         
  561.         try {
  562.             var info = {};
  563.             
  564.             // ³¢ÊÔ»ñÈ¡ÆÁÄ»ÐÅÏ¢
  565.             try {
  566.                 info.screenWidth = screen.getScreenWidth();
  567.                 info.screenHeight = screen.getScreenHeight();
  568.             } catch (e) {
  569.                 info.screenWidth = 'δ֪';
  570.                 info.screenHeight = 'δ֪';
  571.             }
  572.             
  573.             // ³¢ÊÔ»ñÈ¡µç³ØÐÅÏ¢
  574.             try {
  575.                 info.batteryLevel = device.getBattery();
  576.                 info.isCharging = device.isCharging();
  577.             } catch (e) {
  578.                 info.batteryLevel = 'δ֪';
  579.                 info.isCharging = false;
  580.             }
  581.             
  582.             // ³¢ÊÔ»ñÈ¡ÍøÂçÐÅÏ¢
  583.             try {
  584.                 info.networkType = device.getNetworkType();
  585.                 info.wifiSSID = device.getWifiSSID();
  586.             } catch (e) {
  587.                 info.networkType = 'δ֪';
  588.                 info.wifiSSID = 'δ֪';
  589.             }
  590.             
  591.             // ³¢ÊÔ»ñÈ¡É豸ÐÅÏ¢
  592.             try {
  593.                 info.deviceModel = device.getModel();
  594.                 info.androidVersion = device.getVersion();
  595.             } catch (e) {
  596.                 info.deviceModel = 'δ֪';
  597.                 info.androidVersion = 'δ֪';
  598.             }
  599.             
  600.             // ³¢ÊÔ»ñÈ¡ÄÚ´æÐÅÏ¢
  601.             try {
  602.                 info.memoryInfo = app.getMemory();
  603.                 info.memoryPercent = app.getMemoryPercent();
  604.             } catch (e) {
  605.                 info.memoryInfo = { Total: 'δ֪', Available: 'δ֪' };
  606.                 info.memoryPercent = 'δ֪';
  607.             }
  608.             
  609.             // ³¢ÊÔ»ñȡӦÓÃÐÅÏ¢
  610.             try {
  611.                 info.topPackage = app.getTopPackName();
  612.                 info.topAppName = app.getAppName(app.getTopPackName());
  613.             } catch (e) {
  614.                 info.topPackage = 'δ֪';
  615.                 info.topAppName = 'δ֪';
  616.             }
  617.             
  618.             // ʱ¼äÐÅÏ¢£¨×ÜÊÇ¿ÉÓã©
  619.             info.timestamp = new Date().getTime();
  620.             info.currentTime = new Date().toLocaleString();
  621.             
  622.             this.cachedInfo = info;
  623.             return info;
  624.         } catch (e) {
  625.             Logger.error('»ñÈ¡É豸ÐÅϢʧ°Ü: ' + e);
  626.             return null;
  627.         }
  628.     },
  629.    
  630.     // ·½·¨£ºË¢ÐÂÉ豸ÐÅÏ¢
  631.     refresh: function() {
  632.         this.cachedInfo = null;
  633.         return this.getInfo();
  634.     },
  635.    
  636.     // ·½·¨£º´òÓ¡É豸ÐÅÏ¢
  637.     printInfo: function() {
  638.         var info = this.getInfo();
  639.         if (!info) {
  640.             printl('ÎÞ·¨»ñÈ¡É豸ÐÅÏ¢');
  641.             return;
  642.         }
  643.         
  644.         printl('========== É豸ÐÅÏ¢ ==========');
  645.         printl('ÆÁÄ»·Ö±æÂÊ: ' + info.screenWidth + 'x' + info.screenHeight);
  646.         printl('µç³ØµçÁ¿: ' + info.batteryLevel + '%');
  647.         printl('³äµç״̬: ' + (info.isCharging ? '³äµçÖÐ' : 'δ³äµç'));
  648.         printl('ÍøÂçÀàÐÍ: ' + info.networkType);
  649.         printl('WiFiÃû³Æ: ' + info.wifiSSID);
  650.         printl('É豸ÐͺÅ: ' + info.deviceModel);
  651.         printl('°²×¿°æ±¾: ' + info.androidVersion);
  652.         printl('×ÜÄÚ´æ: ' + info.memoryInfo.Total);
  653.         printl('¿ÉÓÃÄÚ´æ: ' + info.memoryInfo.Available);
  654.         printl('ÄÚ´æÊ¹ÓÃÂÊ: ' + info.memoryPercent + '%');
  655.         printl('ǰ̨ӦÓÃ: ' + info.topAppName + ' (' + info.topPackage + ')');
  656.         printl('µ±Ç°Ê±¼ä: ' + info.currentTime);
  657.         printl('==============================');
  658.     }
  659. };

  660. // =============================================================================
  661. // µÚÁù²¿·Ö£ºÊµ¼ÊÓ¦ÓÃʾÀý
  662. // =============================================================================

  663. /**
  664. * ʾÀý1£º´´½¨²¢Ö´Ðмòµ¥ÈÎÎñ
  665. */
  666. function example1_SimpleTask() {
  667.     printl('========== ʾÀý1£º¼òµ¥ÈÎÎñ ==========');
  668.    
  669.     // ´´½¨ÈÎÎñ
  670.     var task = new Task('²âÊÔÈÎÎñ', 'ÕâÊÇÒ»¸ö¼òµ¥µÄ²âÊÔÈÎÎñ');
  671.    
  672.     // ÉèÖÃÖ´Ðк¯Êý
  673.     task.setExecuteFunction(function() {
  674.         Logger.info('ÕýÔÚÖ´ÐвâÊÔÈÎÎñ...');
  675.         sleep.second(2); // Ä£ÄâºÄʱ²Ù×÷
  676.         Logger.info('²âÊÔÈÎÎñÖ´ÐÐÍê±Ï');
  677.         return { success: true, message: '²âÊÔͨ¹ý' };
  678.     });
  679.    
  680.     // ÉèÖûص÷
  681.     task.setOnComplete(function(result) {
  682.         Logger.info('ÈÎÎñÍê³É»Øµ÷: ' + JSON.stringify(result));
  683.     });
  684.    
  685.     task.setOnError(function(error) {
  686.         Logger.error('ÈÎÎñ´íÎ󻨵÷: ' + error);
  687.     });
  688.    
  689.     // Ö´ÐÐÈÎÎñ
  690.     task.run();
  691.    
  692.     // ´òÓ¡ÈÎÎñÐÅÏ¢
  693.     task.printInfo();
  694. }

  695. /**
  696. * ʾÀý2£ºÊ¹ÓÃÈÎÎñ¹ÜÀíÆ÷¹ÜÀí¶à¸öÈÎÎñ
  697. */
  698. function example2_TaskManager() {
  699.     printl('');
  700.     printl('========== ʾÀý2£ºÈÎÎñ¹ÜÀíÆ÷ ==========');
  701.    
  702.     // ´´½¨¶à¸öÈÎÎñ
  703.     var task1 = new Task('Êý¾Ý±¸·Ý', '±¸·ÝÖØÒªÊý¾Ý');
  704.     task1.setExecuteFunction(function() {
  705.         Logger.info('ÕýÔÚ±¸·ÝÊý¾Ý...');
  706.         sleep.millisecond(1500);
  707.         Logger.info('Êý¾Ý±¸·ÝÍê³É');
  708.         return true;
  709.     });
  710.    
  711.     var task2 = new Task('ÇåÀí»º´æ', 'ÇåÀíÓ¦Óûº´æ');
  712.     task2.setExecuteFunction(function() {
  713.         Logger.info('ÕýÔÚÇåÀí»º´æ...');
  714.         sleep.second(1);
  715.         Logger.info('»º´æÇåÀíÍê³É');
  716.         return true;
  717.     });
  718.    
  719.     var task3 = new Task('ͬ²½Êý¾Ý', 'ͬ²½ÔƶËÊý¾Ý');
  720.     task3.setExecuteFunction(function() {
  721.         Logger.info('ÕýÔÚͬ²½Êý¾Ý...');
  722.         sleep.second(2);
  723.         Logger.info('Êý¾Ýͬ²½Íê³É');
  724.         return true;
  725.     });
  726.    
  727.     // Ìí¼Óµ½ÈÎÎñ¹ÜÀíÆ÷
  728.     TaskManager.addTask(task1);
  729.     TaskManager.addTask(task2);
  730.     TaskManager.addTask(task3);
  731.    
  732.     // ´òÓ¡ÈÎÎñ״̬
  733.     TaskManager.printAllStatus();
  734.    
  735.     // Ö´ÐÐËùÓÐÈÎÎñ
  736.     var result = TaskManager.executeAll();
  737.     printl('Ö´Ðнá¹û: ' + JSON.stringify(result));
  738.    
  739.     // ´òÓ¡×îÖÕ״̬
  740.     TaskManager.printAllStatus();
  741.    
  742.     // »ñȡͳ¼ÆÐÅÏ¢
  743.     var stats = TaskManager.getStatistics();
  744.     printl('ͳ¼ÆÐÅÏ¢: ' + JSON.stringify(stats));
  745. }

  746. /**
  747. * ʾÀý3£ºÊ¹ÓÃÅäÖùÜÀíÆ÷
  748. */
  749. function example3_ConfigManager() {
  750.     printl('');
  751.     printl('========== ʾÀý3£ºÅäÖùÜÀíÆ÷ ==========');
  752.    
  753.     // ³õʼ»¯ÅäÖùÜÀíÆ÷
  754.     ConfigManager.init();
  755.    
  756.     // дÈëÅäÖÃ
  757.     ConfigManager.set('app_name', 'AIWROK Demo');
  758.     ConfigManager.set('version', '1.0.0');
  759.     ConfigManager.set('debug_mode', 'true');
  760.     ConfigManager.set('max_retry', '3');
  761.    
  762.     // ¶ÁÈ¡ÅäÖÃ
  763.     var appName = ConfigManager.get('app_name', 'Unknown');
  764.     var version = ConfigManager.get('version', '0.0.0');
  765.     var debugMode = ConfigManager.get('debug_mode', 'false');
  766.    
  767.     printl('Ó¦ÓÃÃû³Æ: ' + appName);
  768.     printl('°æ±¾ºÅ: ' + version);
  769.     printl('µ÷ÊÔģʽ: ' + debugMode);
  770.    
  771.     // ÅúÁ¿¶ÁÈ¡
  772.     var allConfig = ConfigManager.loadAll(['app_name', 'version', 'debug_mode', 'max_retry']);
  773.     printl('ÅúÁ¿¶ÁÈ¡½á¹û: ' + JSON.stringify(allConfig));
  774.    
  775.     // ÅúÁ¿Ð´Èë
  776.     var newConfig = {
  777.         'theme': 'dark',
  778.         'language': 'zh-CN',
  779.         'auto_update': 'true'
  780.     };
  781.     ConfigManager.saveAll(newConfig);
  782.     printl('ÅúÁ¿Ð´ÈëÍê³É');
  783. }

  784. /**
  785. * ʾÀý4£ºÊ¹ÓÃÈÕÖ¾¹ÜÀíÆ÷
  786. */
  787. function example4_Logger() {
  788.     printl('');
  789.     printl('========== ʾÀý4£ºÈÕÖ¾¹ÜÀíÆ÷ ==========');
  790.    
  791.     // ÉèÖÃÈÕÖ¾¼¶±ð
  792.     Logger.setLevel(Logger.LEVEL_DEBUG);
  793.    
  794.     // Êä³ö²»Í¬¼¶±ðµÄÈÕÖ¾
  795.     Logger.debug('ÕâÊÇÒ»Ìõµ÷ÊÔÐÅÏ¢');
  796.     Logger.info('ÕâÊÇÒ»ÌõÆÕͨÐÅÏ¢');
  797.     Logger.warn('ÕâÊÇÒ»Ìõ¾¯¸æÐÅÏ¢');
  798.     Logger.error('ÕâÊÇÒ»Ìõ´íÎóÐÅÏ¢');
  799.    
  800.     // »ñÈ¡×î½üµÄÈÕÖ¾
  801.     var recentLogs = Logger.getRecentLogs(5);
  802.     printl('×î½ü5ÌõÈÕÖ¾:');
  803.     for (var i = 0; i < recentLogs.length; i++) {
  804.         var log = recentLogs[i];
  805.         printl('  [' + log.level + '] ' + log.message);
  806.     }
  807. }

  808. /**
  809. * ʾÀý5£º»ñÈ¡É豸ÐÅÏ¢
  810. */
  811. function example5_DeviceInfo() {
  812.     printl('');
  813.     printl('========== ʾÀý5£ºÉ豸ÐÅÏ¢ ==========');
  814.    
  815.     // ´òÓ¡É豸ÐÅÏ¢
  816.     DeviceInfo.printInfo();
  817.    
  818.     // »ñȡԭʼÐÅÏ¢¶ÔÏó
  819.     var info = DeviceInfo.getInfo();
  820.     if (info) {
  821.         printl('ÆÁÄ»¿í¶È: ' + info.screenWidth);
  822.         printl('ÆÁÄ»¸ß¶È: ' + info.screenHeight);
  823.         printl('µç³ØµçÁ¿: ' + info.batteryLevel + '%');
  824.     }
  825. }

  826. /**
  827. * ʾÀý6£º×ÛºÏÓ¦Óà - ×Ô¶¯»¯¹¤×÷Á÷
  828. */
  829. function example6_AutomationWorkflow() {
  830.     printl('');
  831.     printl('========== ʾÀý6£º×Ô¶¯»¯¹¤×÷Á÷ ==========');
  832.    
  833.     Logger.info('Æô¶¯×Ô¶¯»¯¹¤×÷Á÷...');
  834.    
  835.     // ²½Öè1£º¼ì²éÉ豸״̬
  836.     Logger.info('²½Öè1£º¼ì²éÉ豸״̬');
  837.     var deviceInfo = DeviceInfo.getInfo();
  838.     if (deviceInfo && deviceInfo.batteryLevel < 20) {
  839.         Logger.warn('µç³ØµçÁ¿µÍÓÚ20%£¬½¨Òé³äµç');
  840.     }
  841.    
  842.     // ²½Öè2£º¼ÓÔØÅäÖÃ
  843.     Logger.info('²½Öè2£º¼ÓÔØÅäÖÃ');
  844.     ConfigManager.init();
  845.     var config = ConfigManager.loadAll(['app_name', 'version', 'debug_mode']);
  846.     Logger.info('ÅäÖüÓÔØÍê³É: ' + JSON.stringify(config));
  847.    
  848.     // ²½Öè3£º´´½¨²¢Ö´ÐÐÈÎÎñ
  849.     Logger.info('²½Öè3£º´´½¨²¢Ö´ÐÐÈÎÎñ');
  850.    
  851.     var workflowTask = new Task('×Ô¶¯»¯¹¤×÷Á÷', 'ÍêÕûµÄ×Ô¶¯»¯¹¤×÷Á÷³Ì');
  852.     workflowTask.setExecuteFunction(function() {
  853.         Logger.info('Ö´Ðй¤×÷Á÷ÈÎÎñ...');
  854.         
  855.         // Ä£Äâ¶à¸ö²½Öè
  856.         Logger.info('  - ²½Öè1£ºÊý¾Ý×¼±¸');
  857.         sleep.millisecond(500);
  858.         
  859.         Logger.info('  - ²½Öè2£ºÊý¾Ý´¦Àí');
  860.         sleep.second(1);
  861.         
  862.         Logger.info('  - ²½Öè3£ºÊý¾Ý±£´æ');
  863.         sleep.millisecond(500);
  864.         
  865.         Logger.info('¹¤×÷Á÷ÈÎÎñÍê³É');
  866.         return { success: true, steps: 3 };
  867.     });
  868.    
  869.     workflowTask.setOnComplete(function(result) {
  870.         Logger.info('¹¤×÷Á÷Íê³É£¬½á¹û: ' + JSON.stringify(result));
  871.     });
  872.    
  873.     workflowTask.run();
  874.    
  875.     // ²½Öè4£º±£´æÖ´ÐмǼ
  876.     Logger.info('²½Öè4£º±£´æÖ´ÐмǼ');
  877.     ConfigManager.set('last_run_time', new Date().toLocaleString());
  878.     ConfigManager.set('last_run_status', 'success');
  879.    
  880.     Logger.info('×Ô¶¯»¯¹¤×÷Á÷Ö´ÐÐÍê±Ï');
  881. }

  882. // =============================================================================
  883. // µÚÆß²¿·Ö£ºÖ÷º¯Êý - ÔËÐÐËùÓÐʾÀý
  884. // =============================================================================

  885. /**
  886. * Ö÷º¯Êý£ºÔËÐÐËùÓÐʾÀý
  887. */
  888. function main() {
  889.     printl('========================================');
  890.     printl('  AIWROK JavaScript¶ÔÏó¸ß¼¶Ó¦ÓÃʵÀý');
  891.     printl('========================================');
  892.     printl('');
  893.    
  894.     // ÔËÐÐËùÓÐʾÀý
  895.     example1_SimpleTask();
  896.     sleep.second(2); // ʾÀý¼äÑÓʱ
  897.    
  898.     example2_TaskManager();
  899.     sleep.second(2); // ʾÀý¼äÑÓʱ
  900.    
  901.     example3_ConfigManager();
  902.     sleep.second(2); // ʾÀý¼äÑÓʱ
  903.    
  904.     example4_Logger();
  905.     sleep.second(2); // ʾÀý¼äÑÓʱ
  906.    
  907.     example5_DeviceInfo();
  908.     sleep.second(2); // ʾÀý¼äÑÓʱ
  909.    
  910.     example6_AutomationWorkflow();
  911.    
  912.     printl('');
  913.     printl('========================================');
  914.     printl('  ËùÓÐʾÀýÖ´ÐÐÍê³É£¡');
  915.     printl('========================================');
  916. }

  917. // Ö´ÐÐÖ÷º¯Êý
  918. main();
¸´ÖÆ´úÂë


AIWROK°²×¿½Å±¾¶ÔÏó¸ß¼¶ÊµÓÃʾÀý B2BÍøÂçÈí¼þ





»Ø¸´

ʹÓõÀ¾ß ¾Ù±¨

±¾°æ»ý·Ö¹æÔò

¹Ø±Õ

QQ|»ÓªÏúÈí¼þ×ÛºÏÌÖÂÛ|»ÓªÏúÈí¼þÓÐÎʱشð|»ÓªÏúÈí¼þ½Ì³Ì×¨Çø|»ÓªÏúÈí¼þPOST½Å±¾·ÖÏí|»ÓªÏúÈí¼þÆÕͨ½Å±¾·ÖÏí|»ÓªÏúÈí¼þÈí¼þ×ÊѶ|»ÓªÏúÈí¼þ¾«Æ·Èí¼þ|»ÓªÏúÈí¼þ¸üй«¸æ|ÓªÏúÈí¼þ|B2BÈí¼þ|B2BÍøÂçÈí¼þ ( ¾©ICP±¸09078825ºÅ )±¾ÍøÕ¾¿ª·¢µÄÓªÏúÈí¼þÊÇÒ»¿îеÄÍøÂçÓªÏúÈí¼þ£¬Õâ¿îÓªÏú¿ÉÒÔÈ¥ÍøÕ¾Èí¼þ£¬²©¿ÍÈí¼þ£¬B2BÈí¼þ£¬·ÖÀàÐÅÏ¢Íø·¢Ìù£¬¿ÉÒÔÇÀɳ·¢£¬¿ÉÒÔµ½°Ù¶ÈÎÄ¿âÉÏ´«WORDÎĵµ£¬¿ÉÒÔµ½Ò»Ð©ÊÇÏà²áÍøÕ¾×Ô¶¯ÉÏ´«Í¼Æ¬£¬Õâ¸ö×Ô¶¯·¢ÌûÈí¼þ×Ô´øÔÆÖ©Ö룬¼Ó¿ìÊÕ¼£¬ÓÐ6ÖÖ¶Ô½Ó´òÂë½Ó¿Ú£¬·½±ã£¬Ð§Âʸߣ¬Ëٶȿ죬¶øÇÒ¶ÔÍ϶¯µÄÑéÖ¤ÂëÈ«ÍøµÚÒ»¼Ò¶À¼ÒÖ§³Ö£¬È«²¿Ô­´´¼¼Êõ£¬¶À¼ÒÑз¢£¬Õý°æÔ­´´´ø°æÈ¨Èí¼þ¡£Ñ¡ÔñÍòÄÜÓªÏúÈí¼þ£¬¾ÍÑ¡ÔñÁËÒ»ÖÖ׬ǮµÄЧÂÊ£¬´ÓûÓб»³¬Ô½¹ý£¬Ò»Ö±ÔÚŬÁ¦Ñз¢Ð¼¼Êõ¡£·Å·ÉÃÎÏ룬½â·ÅË«ÊÖ£¬À´µã´´Ò⣬³É¾ÍÄãµÄÃÎÏ룬¾ÍÔÚÍòÄÜÓªÏúÈí¼þ¿ªÊ¼

map2

GMT+8, 2026-4-30 08:17 , Processed in 0.664168 second(s), 35 queries .

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí