@zhin.js/http 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @zhin.js/http
2
2
 
3
+ ## 1.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - d291005: fix: 更新 cli,更新 http
8
+
3
9
  ## 1.0.1
4
10
 
5
11
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,MAAM,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,cAAc,aAAa,CAAC;AAE5B,OAAO,QAAQ,gBAAgB,CAAA;IAC7B,UAAU,aAAa;QACrB,GAAG,EAAE,GAAG,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAA;KACf;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,MAAM,EAAE,MAAM,MAAM,CAAC;AAE5C,OAAO,GAAG,MAAM,KAAK,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,cAAc,aAAa,CAAC;AAE5B,OAAO,QAAQ,gBAAgB,CAAA;IAC7B,UAAU,aAAa;QACrB,GAAG,EAAE,GAAG,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAA;KACf;CACF"}
package/lib/index.js CHANGED
@@ -1,5 +1,6 @@
1
- import { register, useApp } from '@zhin.js/core';
1
+ import { register, useApp, useDatabase } from '@zhin.js/core';
2
2
  import { createServer } from 'http';
3
+ import os from 'node:os';
3
4
  import Koa from 'koa';
4
5
  import auth from 'koa-basic-auth';
5
6
  import KoaBodyParser from 'koa-bodyparser';
@@ -9,9 +10,32 @@ export * from './router.js';
9
10
  const koa = new Koa();
10
11
  const server = createServer(koa.callback());
11
12
  const router = new Router(server, { prefix: process.env.routerPrefix || '' });
12
- const username = process.env.username || 'admin';
13
- const password = process.env.password || '123456';
13
+ // 获取当前计算机登录用户名
14
+ const getCurrentUsername = () => {
15
+ try {
16
+ return os.userInfo().username;
17
+ }
18
+ catch {
19
+ return 'admin'; // 如果获取失败,使用默认用户名
20
+ }
21
+ };
22
+ // 生成6位随机密码
23
+ const generateRandomPassword = () => {
24
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
25
+ let result = '';
26
+ for (let i = 0; i < 6; i++) {
27
+ result += chars.charAt(Math.floor(Math.random() * chars.length));
28
+ }
29
+ return result;
30
+ };
31
+ const username = process.env.username || getCurrentUsername();
32
+ const password = process.env.password || generateRandomPassword();
14
33
  const app = useApp();
34
+ // 输出生成的认证信息
35
+ console.log(`🔐 HTTP 认证信息:`);
36
+ console.log(` 用户名: ${username}`);
37
+ console.log(` 密码: ${password}`);
38
+ console.log(` 访问地址: http://localhost:${process.env.PORT || 3000}`);
15
39
  koa.use(auth({
16
40
  name: username,
17
41
  pass: password,
@@ -48,6 +72,52 @@ router.get('/api/health', async (ctx) => {
48
72
  timestamp: new Date().toISOString()
49
73
  };
50
74
  });
75
+ // 统计信息 API
76
+ router.get('/api/stats', async (ctx) => {
77
+ try {
78
+ // 统计插件数量
79
+ const pluginCount = app.dependencyList.length;
80
+ const activePluginCount = app.dependencyList.filter(dep => dep.mounted).length;
81
+ // 统计机器人数量
82
+ let botCount = 0;
83
+ let onlineBotCount = 0;
84
+ for (const context of app.contextList) {
85
+ const adapter = app.getContext(context.name);
86
+ if (adapter && typeof adapter === 'object' && 'bots' in adapter) {
87
+ const adapterBots = adapter.bots;
88
+ if (adapterBots && adapterBots instanceof Map) {
89
+ botCount += adapterBots.size;
90
+ for (const bot of adapterBots.values()) {
91
+ if (bot.$connected)
92
+ onlineBotCount++;
93
+ }
94
+ }
95
+ }
96
+ }
97
+ // 统计命令和组件
98
+ let commandCount = 0;
99
+ let componentCount = 0;
100
+ for (const dep of app.dependencyList) {
101
+ commandCount += dep.commands.length;
102
+ componentCount += dep.components.size;
103
+ }
104
+ ctx.body = {
105
+ success: true,
106
+ data: {
107
+ plugins: { total: pluginCount, active: activePluginCount },
108
+ bots: { total: botCount, online: onlineBotCount },
109
+ commands: commandCount,
110
+ components: componentCount,
111
+ uptime: process.uptime(),
112
+ memory: process.memoryUsage().heapUsed / 1024 / 1024, // MB
113
+ }
114
+ };
115
+ }
116
+ catch (error) {
117
+ ctx.status = 500;
118
+ ctx.body = { success: false, error: error.message };
119
+ }
120
+ });
51
121
  // 插件管理 API
52
122
  router.get('/api/plugins', async (ctx) => {
53
123
  try {
@@ -55,30 +125,118 @@ router.get('/api/plugins', async (ctx) => {
55
125
  const plugins = app.dependencyList.map(dep => {
56
126
  return {
57
127
  name: dep.name,
58
- command_count: dep.commands.length,
59
- component_count: dep.components.size,
60
- middleware_count: dep.middlewares.length,
61
- context_count: dep.contexts.size,
128
+ status: dep.mounted ? 'active' : 'inactive',
129
+ commandCount: dep.commands.length,
130
+ componentCount: dep.components.size,
131
+ middlewareCount: dep.middlewares.length,
132
+ contextCount: dep.contexts.size,
133
+ description: dep.description || '无描述',
62
134
  };
63
135
  });
64
- ctx.body = { success: true, data: plugins };
136
+ ctx.body = { success: true, data: plugins, total: plugins.length };
65
137
  }
66
138
  catch (error) {
67
139
  ctx.status = 500;
68
140
  ctx.body = { success: false, error: error.message };
69
141
  }
70
142
  });
71
- // 适配器管理 API
72
- router.get('/api/adapters', async (ctx) => {
143
+ // 插件详情 API
144
+ router.get('/api/plugins/:name', async (ctx) => {
73
145
  try {
74
- // 模拟适配器数据
75
- const adapters = app.contextList.map(ctx => {
76
- return {
77
- name: ctx.name,
78
- desc: ctx.description,
79
- };
80
- });
81
- ctx.body = { success: true, data: adapters };
146
+ const pluginName = ctx.params.name;
147
+ const plugin = app.dependencyList.find(dep => dep.name === pluginName);
148
+ if (!plugin) {
149
+ ctx.status = 404;
150
+ ctx.body = { success: false, error: '插件不存在' };
151
+ return;
152
+ }
153
+ // 获取命令详情
154
+ const commands = plugin.commands.map(cmd => ({
155
+ name: cmd.name || 'unknown',
156
+ pattern: cmd.pattern?.toString() || '',
157
+ description: cmd.description || '无描述',
158
+ alias: cmd.alias || [],
159
+ examples: cmd.examples || []
160
+ }));
161
+ // 获取组件详情
162
+ const components = Array.from(plugin.components.entries()).map(([name, comp]) => ({
163
+ name,
164
+ props: comp.props || {},
165
+ type: typeof comp
166
+ }));
167
+ // 获取中间件详情
168
+ const middlewares = plugin.middlewares.map((_, index) => ({
169
+ id: `middleware-${index}`,
170
+ type: 'function'
171
+ }));
172
+ // 获取上下文详情
173
+ const contexts = Array.from(plugin.contexts.entries()).map(([name, ctx]) => ({
174
+ name,
175
+ description: ctx.description || '无描述'
176
+ }));
177
+ // 获取定时任务详情
178
+ const crons = plugin.crons.map((cron, index) => ({
179
+ id: `cron-${index}`,
180
+ pattern: cron.pattern || 'unknown',
181
+ running: cron.running || false
182
+ }));
183
+ // 获取数据模型详情
184
+ const schemas = Array.from(plugin.schemas.entries()).map(([name, schema]) => ({
185
+ name,
186
+ fields: Object.keys(schema.fields || {})
187
+ }));
188
+ ctx.body = {
189
+ success: true,
190
+ data: {
191
+ name: plugin.name,
192
+ filename: plugin.filename,
193
+ status: plugin.mounted ? 'active' : 'inactive',
194
+ description: plugin.description || '无描述',
195
+ commands,
196
+ components,
197
+ middlewares,
198
+ contexts,
199
+ crons,
200
+ schemas,
201
+ statistics: {
202
+ commandCount: commands.length,
203
+ componentCount: components.length,
204
+ middlewareCount: middlewares.length,
205
+ contextCount: contexts.length,
206
+ cronCount: crons.length,
207
+ schemaCount: schemas.length
208
+ }
209
+ }
210
+ };
211
+ }
212
+ catch (error) {
213
+ ctx.status = 500;
214
+ ctx.body = { success: false, error: error.message };
215
+ }
216
+ });
217
+ // 适配器和机器人状态 API
218
+ router.get('/api/bots', async (ctx) => {
219
+ try {
220
+ const bots = [];
221
+ // 遍历所有上下文,查找适配器
222
+ for (const context of app.contextList) {
223
+ const adapter = app.getContext(context.name);
224
+ if (adapter && typeof adapter === 'object' && 'bots' in adapter) {
225
+ const adapterBots = adapter.bots;
226
+ if (adapterBots && adapterBots instanceof Map) {
227
+ for (const [botName, bot] of adapterBots.entries()) {
228
+ bots.push({
229
+ name: botName,
230
+ adapter: context.name,
231
+ connected: bot.$connected || false,
232
+ status: bot.$connected ? 'online' : 'offline'
233
+ // 移除 config 字段以保护隐私
234
+ });
235
+ }
236
+ }
237
+ }
238
+ }
239
+ ctx.body = { success: true, data: bots, total: bots.length };
82
240
  }
83
241
  catch (error) {
84
242
  ctx.status = 500;
@@ -122,37 +280,177 @@ router.post('/api/message/send', async (ctx) => {
122
280
  ctx.body = { success: false, error: error.message };
123
281
  }
124
282
  });
125
- // 日志 API
283
+ // 日志 API - 获取日志
126
284
  router.get('/api/logs', async (ctx) => {
127
285
  try {
128
- // 模拟日志数据
129
- const logs = [
130
- {
131
- level: 'info',
132
- message: 'HTTP服务器启动成功',
133
- timestamp: new Date(Date.now() - 60000).toISOString(),
134
- source: 'http'
135
- },
136
- {
137
- level: 'info',
138
- message: 'Web控制台已就绪',
139
- timestamp: new Date(Date.now() - 50000).toISOString(),
140
- source: 'console'
141
- },
142
- {
143
- level: 'warn',
144
- message: 'KOOK适配器连接不稳定',
145
- timestamp: new Date(Date.now() - 30000).toISOString(),
146
- source: 'kook'
147
- },
148
- {
149
- level: 'error',
150
- message: 'ICQQ登录失败',
151
- timestamp: new Date(Date.now() - 20000).toISOString(),
152
- source: 'icqq'
286
+ const database = useDatabase();
287
+ if (!database) {
288
+ ctx.status = 503;
289
+ ctx.body = { success: false, error: 'Database not available' };
290
+ return;
291
+ }
292
+ // 获取查询参数
293
+ const limit = parseInt(ctx.query.limit) || 100;
294
+ const level = ctx.query.level;
295
+ const LogModel = database.model('SystemLog');
296
+ if (!LogModel) {
297
+ ctx.status = 500;
298
+ ctx.body = { success: false, error: 'SystemLog model not found' };
299
+ return;
300
+ }
301
+ // 查询日志
302
+ let selection = LogModel.select();
303
+ // 按级别过滤
304
+ if (level && level !== 'all') {
305
+ selection = selection.where({ level });
306
+ }
307
+ // 按时间倒序,限制数量
308
+ const logs = await selection.orderBy('timestamp', 'DESC').limit(limit);
309
+ // 格式化返回数据
310
+ const formattedLogs = logs.map((log) => ({
311
+ level: log.level,
312
+ name: log.name,
313
+ message: log.message,
314
+ source: log.source,
315
+ timestamp: log.timestamp instanceof Date ? log.timestamp.toISOString() : log.timestamp
316
+ }));
317
+ ctx.body = {
318
+ success: true,
319
+ data: formattedLogs,
320
+ total: formattedLogs.length
321
+ };
322
+ }
323
+ catch (error) {
324
+ ctx.status = 500;
325
+ ctx.body = { success: false, error: error.message };
326
+ }
327
+ });
328
+ // 日志 API - 清空日志
329
+ router.delete('/api/logs', async (ctx) => {
330
+ try {
331
+ const database = useDatabase();
332
+ if (!database) {
333
+ ctx.status = 503;
334
+ ctx.body = { success: false, error: 'Database not available' };
335
+ return;
336
+ }
337
+ const LogModel = database.model('SystemLog');
338
+ if (!LogModel) {
339
+ ctx.status = 500;
340
+ ctx.body = { success: false, error: 'SystemLog model not found' };
341
+ return;
342
+ }
343
+ // 删除所有日志
344
+ await LogModel.delete({});
345
+ ctx.body = {
346
+ success: true,
347
+ message: '日志已清空'
348
+ };
349
+ }
350
+ catch (error) {
351
+ ctx.status = 500;
352
+ ctx.body = { success: false, error: error.message };
353
+ }
354
+ });
355
+ // 日志 API - 获取日志统计
356
+ router.get('/api/logs/stats', async (ctx) => {
357
+ try {
358
+ const database = useDatabase();
359
+ if (!database) {
360
+ ctx.status = 503;
361
+ ctx.body = { success: false, error: 'Database not available' };
362
+ return;
363
+ }
364
+ const LogModel = database.model('SystemLog');
365
+ if (!LogModel) {
366
+ ctx.status = 500;
367
+ ctx.body = { success: false, error: 'SystemLog model not found' };
368
+ return;
369
+ }
370
+ // 获取总日志数
371
+ const total = await LogModel.select();
372
+ const totalCount = total.length;
373
+ // 获取各级别日志数
374
+ const levels = ['info', 'warn', 'error'];
375
+ const levelCounts = {};
376
+ for (const level of levels) {
377
+ const count = await LogModel
378
+ .select()
379
+ .where({ level });
380
+ levelCounts[level] = count.length;
381
+ }
382
+ // 获取最旧日志时间
383
+ const oldestLog = await LogModel
384
+ .select('timestamp')
385
+ .orderBy('timestamp', 'ASC')
386
+ .limit(1);
387
+ const oldestTimestamp = oldestLog.length > 0
388
+ ? (oldestLog[0].timestamp instanceof Date
389
+ ? oldestLog[0].timestamp.toISOString()
390
+ : oldestLog[0].timestamp)
391
+ : null;
392
+ ctx.body = {
393
+ success: true,
394
+ data: {
395
+ total: totalCount,
396
+ byLevel: levelCounts,
397
+ oldestTimestamp
153
398
  }
154
- ];
155
- ctx.body = { success: true, data: logs };
399
+ };
400
+ }
401
+ catch (error) {
402
+ ctx.status = 500;
403
+ ctx.body = { success: false, error: error.message };
404
+ }
405
+ });
406
+ // 日志 API - 清理旧日志(手动触发)
407
+ router.post('/api/logs/cleanup', async (ctx) => {
408
+ try {
409
+ const database = useDatabase();
410
+ if (!database) {
411
+ ctx.status = 503;
412
+ ctx.body = { success: false, error: 'Database not available' };
413
+ return;
414
+ }
415
+ const LogModel = database.model('SystemLog');
416
+ if (!LogModel) {
417
+ ctx.status = 500;
418
+ ctx.body = { success: false, error: 'SystemLog model not found' };
419
+ return;
420
+ }
421
+ const { days, maxRecords } = ctx.request.body || {};
422
+ let deletedCount = 0;
423
+ // 按天数清理
424
+ if (days && typeof days === 'number' && days > 0) {
425
+ const cutoffDate = new Date();
426
+ cutoffDate.setDate(cutoffDate.getDate() - days);
427
+ const deleted = await LogModel
428
+ .delete({ timestamp: { $lt: cutoffDate } });
429
+ deletedCount += deleted || 0;
430
+ }
431
+ // 按数量清理
432
+ if (maxRecords && typeof maxRecords === 'number' && maxRecords > 0) {
433
+ const totalCount = await LogModel.select();
434
+ if (totalCount.length > maxRecords) {
435
+ const excessCount = totalCount - maxRecords;
436
+ const oldestLogs = await LogModel
437
+ .select('id', 'timestamp')
438
+ .orderBy('timestamp', 'ASC')
439
+ .limit(excessCount);
440
+ const idsToDelete = oldestLogs.map((log) => log.id);
441
+ if (idsToDelete.length > 0) {
442
+ const deleted = await LogModel
443
+ .delete()
444
+ .where({ id: { $in: idsToDelete } });
445
+ deletedCount += deleted || 0;
446
+ }
447
+ }
448
+ }
449
+ ctx.body = {
450
+ success: true,
451
+ message: `已清理 ${deletedCount} 条日志`,
452
+ deletedCount
453
+ };
156
454
  }
157
455
  catch (error) {
158
456
  ctx.status = 500;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAC,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAU,MAAM,MAAM,CAAC;AAC5C,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,IAAI,MAAM,gBAAgB,CAAC;AAClC,OAAO,aAAa,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,cAAc,aAAa,CAAC;AAU5B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;AAC3C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC;AAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC;AACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC;AAClD,MAAM,GAAG,GAAC,MAAM,EAAE,CAAA;AAClB,GAAG,CAAC,GAAG,CACL,IAAI,CAAC;IACH,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,QAAQ;CACf,CAAC,CACH,CAAC;AAEF,+EAA+E;AAC/E,SAAS;AACT,+EAA+E;AAE/E,WAAW;AACX,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7C,IAAI,CAAC;QACH,GAAG,CAAC,IAAI,GAAG;YACT,OAAO,EAAE,IAAI;YACb,IAAI,EAAE;gBACJ,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;gBACxB,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE;gBAC7B,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE;gBACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,WAAW,EAAE,OAAO,CAAC,OAAO;gBAC5B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,GAAG,GAAG,CAAA;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,WAAW;AACX,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACtC,GAAG,CAAC,IAAI,GAAG;QACT,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,WAAW;AACX,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACvC,IAAI,CAAC;QACH,YAAY;QACZ,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC3C,OAAO;gBACL,IAAI,EAAC,GAAG,CAAC,IAAI;gBACb,aAAa,EAAC,GAAG,CAAC,QAAQ,CAAC,MAAM;gBACjC,eAAe,EAAC,GAAG,CAAC,UAAU,CAAC,IAAI;gBACnC,gBAAgB,EAAC,GAAG,CAAC,WAAW,CAAC,MAAM;gBACvC,aAAa,EAAC,GAAG,CAAC,QAAQ,CAAC,IAAI;aAChC,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,GAAG,GAAG,CAAA;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,YAAY;AACZ,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACxC,IAAI,CAAC;QACH,UAAU;QACV,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAA,EAAE;YACxC,OAAO;gBACL,IAAI,EAAC,GAAG,CAAC,IAAI;gBACb,IAAI,EAAC,GAAG,CAAC,WAAW;aACrB,CAAA;QACH,CAAC,CAAC,CAAA;QAEF,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,GAAG,GAAG,CAAA;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,aAAa;AACb,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAA;QAE9B,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,GAAG,GAAG,CAAA;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,WAAW;AACX,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IAC7C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAW,CAAA;QACpC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;QAEhD,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjD,GAAG,CAAC,MAAM,GAAG,GAAG,CAAA;YAChB,GAAG,CAAC,IAAI,GAAG;gBACT,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,0DAA0D;aAClE,CAAA;YACD,OAAM;QACR,CAAC;QAED,qCAAqC;QACrC,qBAAqB;QAErB,GAAG,CAAC,IAAI,GAAG;YACT,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,2BAA2B;YACpC,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;SAC/E,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,GAAG,GAAG,CAAA;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,SAAS;AACT,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;IACpC,IAAI,CAAC;QACH,SAAS;QACT,MAAM,IAAI,GAAG;YACX;gBACE,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,aAAa;gBACtB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE;gBACrD,MAAM,EAAE,MAAM;aACf;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,WAAW;gBACpB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE;gBACrD,MAAM,EAAE,SAAS;aAClB;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,cAAc;gBACvB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE;gBACrD,MAAM,EAAE,MAAM;aACf;YACD;gBACE,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,WAAW,EAAE;gBACrD,MAAM,EAAE,MAAM;aACf;SACF,CAAA;QAED,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,GAAG,GAAG,CAAA;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,+EAA+E;AAC/E,QAAQ;AACR,+EAA+E;AAE/E,QAAQ,CAAC;IACP,IAAI,EAAE,QAAQ;IACd,WAAW,EAAC,aAAa;IACzB,OAAO,CAAC,CAAC;QACP,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YACrC,MAAM,CAAC,MAAM,CACX;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;aAC5C,EACD,GAAG,EAAE;gBACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO;oBAAE,OAAO;gBACrB,MAAM,YAAY,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBAClG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;gBAC7D,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;gBAC7C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;gBAC7C,OAAO,CAAC,MAAM,CAAC,CAAA;YACjB,CAAC,CACF,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;QACP,CAAC,CAAC,KAAK,EAAE,CAAA;IACX,CAAC;CACF,CAAC,CAAA;AAEF,QAAQ,CAAC;IACP,IAAI,EAAE,KAAK;IACX,WAAW,EAAC,cAAc;IAC1B,KAAK,EAAE,GAAG;CACX,CAAC,CAAA;AAEF,QAAQ,CAAC;IACP,IAAI,EAAE,QAAQ;IACd,WAAW,EAAC,YAAY;IACxB,KAAK,EAAE,MAAM;CACd,CAAC,CAAA;AAEF,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/http",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Zhin机器人框架HTTP工具",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -19,7 +19,7 @@
19
19
  "koa-bodyparser": "latest"
20
20
  },
21
21
  "peerDependencies": {
22
- "@zhin.js/core": "^1.0.1"
22
+ "@zhin.js/core": "^1.0.4"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@types/koa": "latest",
@@ -27,7 +27,7 @@
27
27
  "@types/koa-bodyparser": "latest",
28
28
  "@types/koa__router": "latest",
29
29
  "@types/ws": "latest",
30
- "@zhin.js/types": "^1.0.1"
30
+ "@zhin.js/types": "^1.0.2"
31
31
  },
32
32
  "scripts": {
33
33
  "build": "tsc",
package/src/index.ts CHANGED
@@ -1,5 +1,6 @@
1
- import {register, useApp} from '@zhin.js/core';
1
+ import {register, useApp,onDispose,onDatabaseReady,useDatabase} from '@zhin.js/core';
2
2
  import { createServer, Server } from 'http';
3
+ import os from 'node:os';
3
4
  import Koa from 'koa';
4
5
  import auth from 'koa-basic-auth';
5
6
  import KoaBodyParser from 'koa-bodyparser';
@@ -19,16 +20,41 @@ declare module '@zhin.js/types'{
19
20
  const koa = new Koa();
20
21
  const server = createServer(koa.callback())
21
22
  const router = new Router(server, { prefix: process.env.routerPrefix || '' });
22
- const username = process.env.username || 'admin';
23
- const password = process.env.password || '123456';
23
+ // 获取当前计算机登录用户名
24
+ const getCurrentUsername = () => {
25
+ try {
26
+ return os.userInfo().username;
27
+ } catch {
28
+ return 'admin'; // 如果获取失败,使用默认用户名
29
+ }
30
+ };
31
+
32
+ // 生成6位随机密码
33
+ const generateRandomPassword = () => {
34
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
35
+ let result = '';
36
+ for (let i = 0; i < 6; i++) {
37
+ result += chars.charAt(Math.floor(Math.random() * chars.length));
38
+ }
39
+ return result;
40
+ };
41
+
42
+ const username = process.env.username || getCurrentUsername();
43
+ const password = process.env.password || generateRandomPassword();
24
44
  const app=useApp()
45
+
46
+ // 输出生成的认证信息
47
+ console.log(`🔐 HTTP 认证信息:`);
48
+ console.log(` 用户名: ${username}`);
49
+ console.log(` 密码: ${password}`);
50
+ console.log(` 访问地址: http://localhost:${process.env.PORT || 3000}`);
51
+
25
52
  koa.use(
26
53
  auth({
27
54
  name: username,
28
55
  pass: password,
29
56
  }),
30
57
  );
31
-
32
58
  // ============================================================================
33
59
  // API 路由
34
60
  // ============================================================================
@@ -63,39 +89,184 @@ router.get('/api/health', async (ctx) => {
63
89
  }
64
90
  })
65
91
 
92
+ // 统计信息 API
93
+ router.get('/api/stats', async (ctx) => {
94
+ try {
95
+ // 统计插件数量
96
+ const pluginCount = app.dependencyList.length
97
+ const activePluginCount = app.dependencyList.filter(dep => (dep as any).mounted).length
98
+
99
+ // 统计机器人数量
100
+ let botCount = 0
101
+ let onlineBotCount = 0
102
+ for (const context of app.contextList) {
103
+ const adapter = app.getContext(context.name)
104
+ if (adapter && typeof adapter === 'object' && 'bots' in adapter) {
105
+ const adapterBots = (adapter as any).bots
106
+ if (adapterBots && adapterBots instanceof Map) {
107
+ botCount += adapterBots.size
108
+ for (const bot of adapterBots.values()) {
109
+ if (bot.$connected) onlineBotCount++
110
+ }
111
+ }
112
+ }
113
+ }
114
+
115
+ // 统计命令和组件
116
+ let commandCount = 0
117
+ let componentCount = 0
118
+ for (const dep of app.dependencyList) {
119
+ commandCount += dep.commands.length
120
+ componentCount += dep.components.size
121
+ }
122
+
123
+ ctx.body = {
124
+ success: true,
125
+ data: {
126
+ plugins: { total: pluginCount, active: activePluginCount },
127
+ bots: { total: botCount, online: onlineBotCount },
128
+ commands: commandCount,
129
+ components: componentCount,
130
+ uptime: process.uptime(),
131
+ memory: process.memoryUsage().heapUsed / 1024 / 1024, // MB
132
+ }
133
+ }
134
+ } catch (error) {
135
+ ctx.status = 500
136
+ ctx.body = { success: false, error: (error as Error).message }
137
+ }
138
+ })
139
+
66
140
  // 插件管理 API
67
141
  router.get('/api/plugins', async (ctx) => {
68
142
  try {
69
143
  // 获取详细的插件数据
70
144
  const plugins = app.dependencyList.map(dep => {
71
145
  return {
72
- name:dep.name,
73
- command_count:dep.commands.length,
74
- component_count:dep.components.size,
75
- middleware_count:dep.middlewares.length,
76
- context_count:dep.contexts.size,
146
+ name: dep.name,
147
+ status: (dep as any).mounted ? 'active' : 'inactive',
148
+ commandCount: dep.commands.length,
149
+ componentCount: dep.components.size,
150
+ middlewareCount: dep.middlewares.length,
151
+ contextCount: dep.contexts.size,
152
+ description: (dep as any).description || '无描述',
77
153
  }
78
154
  })
79
155
 
80
- ctx.body = { success: true, data: plugins }
156
+ ctx.body = { success: true, data: plugins, total: plugins.length }
81
157
  } catch (error) {
82
158
  ctx.status = 500
83
159
  ctx.body = { success: false, error: (error as Error).message }
84
160
  }
85
161
  })
86
162
 
87
- // 适配器管理 API
88
- router.get('/api/adapters', async (ctx) => {
163
+ // 插件详情 API
164
+ router.get('/api/plugins/:name', async (ctx) => {
89
165
  try {
90
- // 模拟适配器数据
91
- const adapters = app.contextList.map(ctx=>{
92
- return {
93
- name:ctx.name,
94
- desc:ctx.description,
166
+ const pluginName = ctx.params.name
167
+ const plugin = app.dependencyList.find(dep => dep.name === pluginName)
168
+
169
+ if (!plugin) {
170
+ ctx.status = 404
171
+ ctx.body = { success: false, error: '插件不存在' }
172
+ return
173
+ }
174
+
175
+ // 获取命令详情
176
+ const commands = plugin.commands.map(cmd => ({
177
+ name: (cmd as any).name || 'unknown',
178
+ pattern: (cmd as any).pattern?.toString() || '',
179
+ description: (cmd as any).description || '无描述',
180
+ alias: (cmd as any).alias || [],
181
+ examples: (cmd as any).examples || []
182
+ }))
183
+
184
+ // 获取组件详情
185
+ const components = Array.from(plugin.components.entries()).map(([name, comp]) => ({
186
+ name,
187
+ props: (comp as any).props || {},
188
+ type: typeof comp
189
+ }))
190
+
191
+ // 获取中间件详情
192
+ const middlewares = plugin.middlewares.map((_, index) => ({
193
+ id: `middleware-${index}`,
194
+ type: 'function'
195
+ }))
196
+
197
+ // 获取上下文详情
198
+ const contexts = Array.from(plugin.contexts.entries()).map(([name, ctx]) => ({
199
+ name,
200
+ description: (ctx as any).description || '无描述'
201
+ }))
202
+
203
+ // 获取定时任务详情
204
+ const crons = plugin.crons.map((cron, index) => ({
205
+ id: `cron-${index}`,
206
+ pattern: (cron as any).pattern || 'unknown',
207
+ running: (cron as any).running || false
208
+ }))
209
+
210
+ // 获取数据模型详情
211
+ const schemas = Array.from(plugin.schemas.entries()).map(([name, schema]) => ({
212
+ name,
213
+ fields: Object.keys((schema as any).fields || {})
214
+ }))
215
+
216
+ ctx.body = {
217
+ success: true,
218
+ data: {
219
+ name: plugin.name,
220
+ filename: plugin.filename,
221
+ status: (plugin as any).mounted ? 'active' : 'inactive',
222
+ description: (plugin as any).description || '无描述',
223
+ commands,
224
+ components,
225
+ middlewares,
226
+ contexts,
227
+ crons,
228
+ schemas,
229
+ statistics: {
230
+ commandCount: commands.length,
231
+ componentCount: components.length,
232
+ middlewareCount: middlewares.length,
233
+ contextCount: contexts.length,
234
+ cronCount: crons.length,
235
+ schemaCount: schemas.length
236
+ }
95
237
  }
96
- })
238
+ }
239
+ } catch (error) {
240
+ ctx.status = 500
241
+ ctx.body = { success: false, error: (error as Error).message }
242
+ }
243
+ })
244
+
245
+ // 适配器和机器人状态 API
246
+ router.get('/api/bots', async (ctx) => {
247
+ try {
248
+ const bots: any[] = []
249
+
250
+ // 遍历所有上下文,查找适配器
251
+ for (const context of app.contextList) {
252
+ const adapter = app.getContext(context.name)
253
+ if (adapter && typeof adapter === 'object' && 'bots' in adapter) {
254
+ const adapterBots = (adapter as any).bots
255
+ if (adapterBots && adapterBots instanceof Map) {
256
+ for (const [botName, bot] of adapterBots.entries()) {
257
+ bots.push({
258
+ name: botName,
259
+ adapter: context.name,
260
+ connected: bot.$connected || false,
261
+ status: bot.$connected ? 'online' : 'offline'
262
+ // 移除 config 字段以保护隐私
263
+ })
264
+ }
265
+ }
266
+ }
267
+ }
97
268
 
98
- ctx.body = { success: true, data: adapters }
269
+ ctx.body = { success: true, data: bots, total: bots.length }
99
270
  } catch (error) {
100
271
  ctx.status = 500
101
272
  ctx.body = { success: false, error: (error as Error).message }
@@ -143,38 +314,206 @@ router.post('/api/message/send', async (ctx) => {
143
314
  }
144
315
  })
145
316
 
146
- // 日志 API
317
+ // 日志 API - 获取日志
147
318
  router.get('/api/logs', async (ctx) => {
148
319
  try {
149
- // 模拟日志数据
150
- const logs = [
151
- {
152
- level: 'info',
153
- message: 'HTTP服务器启动成功',
154
- timestamp: new Date(Date.now() - 60000).toISOString(),
155
- source: 'http'
156
- },
157
- {
158
- level: 'info',
159
- message: 'Web控制台已就绪',
160
- timestamp: new Date(Date.now() - 50000).toISOString(),
161
- source: 'console'
162
- },
163
- {
164
- level: 'warn',
165
- message: 'KOOK适配器连接不稳定',
166
- timestamp: new Date(Date.now() - 30000).toISOString(),
167
- source: 'kook'
168
- },
169
- {
170
- level: 'error',
171
- message: 'ICQQ登录失败',
172
- timestamp: new Date(Date.now() - 20000).toISOString(),
173
- source: 'icqq'
320
+ const database = useDatabase()
321
+ if (!database) {
322
+ ctx.status = 503
323
+ ctx.body = { success: false, error: 'Database not available' }
324
+ return
325
+ }
326
+
327
+ // 获取查询参数
328
+ const limit = parseInt(ctx.query.limit as string) || 100
329
+ const level = ctx.query.level as string
330
+
331
+ const LogModel = database.model('SystemLog')
332
+ if (!LogModel) {
333
+ ctx.status = 500
334
+ ctx.body = { success: false, error: 'SystemLog model not found' }
335
+ return
336
+ }
337
+
338
+ // 查询日志
339
+ let selection = LogModel.select()
340
+
341
+ // 按级别过滤
342
+ if (level && level !== 'all') {
343
+ selection = selection.where({ level })
344
+ }
345
+
346
+ // 按时间倒序,限制数量
347
+ const logs = await selection.orderBy('timestamp', 'DESC').limit(limit)
348
+
349
+ // 格式化返回数据
350
+ const formattedLogs = logs.map((log: any) => ({
351
+ level: log.level,
352
+ name: log.name,
353
+ message: log.message,
354
+ source: log.source,
355
+ timestamp: log.timestamp instanceof Date ? log.timestamp.toISOString() : log.timestamp
356
+ }))
357
+
358
+ ctx.body = {
359
+ success: true,
360
+ data: formattedLogs,
361
+ total: formattedLogs.length
362
+ }
363
+ } catch (error) {
364
+ ctx.status = 500
365
+ ctx.body = { success: false, error: (error as Error).message }
366
+ }
367
+ })
368
+
369
+ // 日志 API - 清空日志
370
+ router.delete('/api/logs', async (ctx) => {
371
+ try {
372
+ const database = useDatabase()
373
+ if (!database) {
374
+ ctx.status = 503
375
+ ctx.body = { success: false, error: 'Database not available' }
376
+ return
377
+ }
378
+
379
+ const LogModel = database.model('SystemLog')
380
+ if (!LogModel) {
381
+ ctx.status = 500
382
+ ctx.body = { success: false, error: 'SystemLog model not found' }
383
+ return
384
+ }
385
+
386
+ // 删除所有日志
387
+ await (LogModel as any).delete({})
388
+
389
+ ctx.body = {
390
+ success: true,
391
+ message: '日志已清空'
392
+ }
393
+ } catch (error) {
394
+ ctx.status = 500
395
+ ctx.body = { success: false, error: (error as Error).message }
396
+ }
397
+ })
398
+
399
+ // 日志 API - 获取日志统计
400
+ router.get('/api/logs/stats', async (ctx) => {
401
+ try {
402
+ const database = useDatabase()
403
+ if (!database) {
404
+ ctx.status = 503
405
+ ctx.body = { success: false, error: 'Database not available' }
406
+ return
407
+ }
408
+
409
+ const LogModel = database.model('SystemLog')
410
+ if (!LogModel) {
411
+ ctx.status = 500
412
+ ctx.body = { success: false, error: 'SystemLog model not found' }
413
+ return
414
+ }
415
+
416
+ // 获取总日志数
417
+ const total = await LogModel.select()
418
+ const totalCount = total.length
419
+ // 获取各级别日志数
420
+ const levels = ['info', 'warn', 'error']
421
+ const levelCounts: Record<string, number> = {}
422
+
423
+ for (const level of levels) {
424
+ const count = await LogModel
425
+ .select()
426
+ .where({ level })
427
+ levelCounts[level] = count.length
428
+ }
429
+
430
+ // 获取最旧日志时间
431
+ const oldestLog = await LogModel
432
+ .select('timestamp')
433
+ .orderBy('timestamp', 'ASC')
434
+ .limit(1)
435
+
436
+ const oldestTimestamp = oldestLog.length > 0
437
+ ? (oldestLog[0].timestamp instanceof Date
438
+ ? oldestLog[0].timestamp.toISOString()
439
+ : oldestLog[0].timestamp)
440
+ : null
441
+
442
+ ctx.body = {
443
+ success: true,
444
+ data: {
445
+ total:totalCount,
446
+ byLevel: levelCounts,
447
+ oldestTimestamp
174
448
  }
175
- ]
449
+ }
450
+ } catch (error) {
451
+ ctx.status = 500
452
+ ctx.body = { success: false, error: (error as Error).message }
453
+ }
454
+ })
455
+
456
+ // 日志 API - 清理旧日志(手动触发)
457
+ router.post('/api/logs/cleanup', async (ctx) => {
458
+ try {
459
+ const database = useDatabase()
460
+ if (!database) {
461
+ ctx.status = 503
462
+ ctx.body = { success: false, error: 'Database not available' }
463
+ return
464
+ }
465
+
466
+ const LogModel = database.model('SystemLog')
467
+ if (!LogModel) {
468
+ ctx.status = 500
469
+ ctx.body = { success: false, error: 'SystemLog model not found' }
470
+ return
471
+ }
472
+
473
+ const { days, maxRecords } = ctx.request.body as any || {}
176
474
 
177
- ctx.body = { success: true, data: logs }
475
+ let deletedCount = 0
476
+
477
+ // 按天数清理
478
+ if (days && typeof days === 'number' && days > 0) {
479
+ const cutoffDate = new Date()
480
+ cutoffDate.setDate(cutoffDate.getDate() - days)
481
+
482
+ const deleted = await LogModel
483
+ .delete({ timestamp: { $lt: cutoffDate } })
484
+
485
+ deletedCount += deleted || 0
486
+ }
487
+
488
+ // 按数量清理
489
+ if (maxRecords && typeof maxRecords === 'number' && maxRecords > 0) {
490
+ const totalCount = await (LogModel as any).select()
491
+
492
+ if (totalCount.length > maxRecords) {
493
+ const excessCount = totalCount - maxRecords
494
+
495
+ const oldestLogs = await LogModel
496
+ .select('id','timestamp')
497
+ .orderBy('timestamp', 'ASC')
498
+ .limit(excessCount)
499
+
500
+ const idsToDelete = oldestLogs.map((log: any) => log.id)
501
+
502
+ if (idsToDelete.length > 0) {
503
+ const deleted = await (LogModel as any)
504
+ .delete()
505
+ .where({ id: { $in: idsToDelete } })
506
+
507
+ deletedCount += deleted || 0
508
+ }
509
+ }
510
+ }
511
+
512
+ ctx.body = {
513
+ success: true,
514
+ message: `已清理 ${deletedCount} 条日志`,
515
+ deletedCount
516
+ }
178
517
  } catch (error) {
179
518
  ctx.status = 500
180
519
  ctx.body = { success: false, error: (error as Error).message }