koishi-plugin-group-analysis-mx 1.0.1

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.
Files changed (94) hide show
  1. package/lib/config.d.ts +53 -0
  2. package/lib/config.d.ts.map +1 -0
  3. package/lib/config.js +376 -0
  4. package/lib/config.js.map +1 -0
  5. package/lib/cron.d.ts +8 -0
  6. package/lib/cron.d.ts.map +1 -0
  7. package/lib/cron.js +62 -0
  8. package/lib/cron.js.map +1 -0
  9. package/lib/index.d.ts +6 -0
  10. package/lib/index.d.ts.map +1 -0
  11. package/lib/index.js +51 -0
  12. package/lib/index.js.map +1 -0
  13. package/lib/onebot/cqcode.d.ts +14 -0
  14. package/lib/onebot/cqcode.d.ts.map +1 -0
  15. package/lib/onebot/cqcode.js +92 -0
  16. package/lib/onebot/cqcode.js.map +1 -0
  17. package/lib/plugin.d.ts +4 -0
  18. package/lib/plugin.d.ts.map +1 -0
  19. package/lib/plugin.js +41 -0
  20. package/lib/plugin.js.map +1 -0
  21. package/lib/plugins/command.d.ts +9 -0
  22. package/lib/plugins/command.d.ts.map +1 -0
  23. package/lib/plugins/command.js +196 -0
  24. package/lib/plugins/command.js.map +1 -0
  25. package/lib/service/analysis.d.ts +48 -0
  26. package/lib/service/analysis.d.ts.map +1 -0
  27. package/lib/service/analysis.js +714 -0
  28. package/lib/service/analysis.js.map +1 -0
  29. package/lib/service/llm.d.ts +43 -0
  30. package/lib/service/llm.d.ts.map +1 -0
  31. package/lib/service/llm.js +160 -0
  32. package/lib/service/llm.js.map +1 -0
  33. package/lib/service/message.d.ts +55 -0
  34. package/lib/service/message.d.ts.map +1 -0
  35. package/lib/service/message.js +527 -0
  36. package/lib/service/message.js.map +1 -0
  37. package/lib/service/renderer.d.ts +23 -0
  38. package/lib/service/renderer.d.ts.map +1 -0
  39. package/lib/service/renderer.js +298 -0
  40. package/lib/service/renderer.js.map +1 -0
  41. package/lib/skins/anime.d.ts +19 -0
  42. package/lib/skins/anime.d.ts.map +1 -0
  43. package/lib/skins/anime.js +138 -0
  44. package/lib/skins/anime.js.map +1 -0
  45. package/lib/skins/art.d.ts +19 -0
  46. package/lib/skins/art.d.ts.map +1 -0
  47. package/lib/skins/art.js +146 -0
  48. package/lib/skins/art.js.map +1 -0
  49. package/lib/skins/index.d.ts +50 -0
  50. package/lib/skins/index.d.ts.map +1 -0
  51. package/lib/skins/index.js +84 -0
  52. package/lib/skins/index.js.map +1 -0
  53. package/lib/skins/md3.d.ts +19 -0
  54. package/lib/skins/md3.d.ts.map +1 -0
  55. package/lib/skins/md3.js +147 -0
  56. package/lib/skins/md3.js.map +1 -0
  57. package/lib/skins/newspaper.d.ts +19 -0
  58. package/lib/skins/newspaper.d.ts.map +1 -0
  59. package/lib/skins/newspaper.js +141 -0
  60. package/lib/skins/newspaper.js.map +1 -0
  61. package/lib/skins/scrapbook.d.ts +20 -0
  62. package/lib/skins/scrapbook.d.ts.map +1 -0
  63. package/lib/skins/scrapbook.js +207 -0
  64. package/lib/skins/scrapbook.js.map +1 -0
  65. package/lib/skins/types.d.ts +69 -0
  66. package/lib/skins/types.d.ts.map +1 -0
  67. package/lib/skins/types.js +12 -0
  68. package/lib/skins/types.js.map +1 -0
  69. package/lib/types.d.ts +170 -0
  70. package/lib/types.d.ts.map +1 -0
  71. package/lib/types.js +3 -0
  72. package/lib/types.js.map +1 -0
  73. package/lib/utils.d.ts +55 -0
  74. package/lib/utils.d.ts.map +1 -0
  75. package/lib/utils.js +334 -0
  76. package/lib/utils.js.map +1 -0
  77. package/package.json +48 -0
  78. package/resources/anime/css/template_group.css +470 -0
  79. package/resources/anime/images/decoration_br.svg +19 -0
  80. package/resources/anime/images/decoration_tl.svg +24 -0
  81. package/resources/anime/template_group.html +108 -0
  82. package/resources/anime/template_user.html +99 -0
  83. package/resources/art/css/template_group.css +484 -0
  84. package/resources/art/template_group.html +77 -0
  85. package/resources/art/template_user.html +63 -0
  86. package/resources/md3/css/template_group.css +880 -0
  87. package/resources/md3/template_group.html +189 -0
  88. package/resources/md3/template_user.html +175 -0
  89. package/resources/newspaper/css/template_group.css +568 -0
  90. package/resources/newspaper/template_group.html +133 -0
  91. package/resources/newspaper/template_user.html +119 -0
  92. package/resources/scrapbook/css/style.css +1094 -0
  93. package/resources/scrapbook/template_group.html +115 -0
  94. package/resources/scrapbook/template_user.html +119 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"art.js","sourceRoot":"","sources":["../../src/skins/art.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { SkinRenderer } from './types';
2
+ /**
3
+ * Skin registry
4
+ * Manages all available skin renderers
5
+ */
6
+ declare class SkinRegistry {
7
+ private skins;
8
+ constructor();
9
+ /**
10
+ * Register a skin renderer
11
+ * @param skin Skin renderer instance
12
+ */
13
+ register(skin: SkinRenderer): void;
14
+ /**
15
+ * Get a skin renderer by ID
16
+ * @param id Skin ID
17
+ * @returns Skin renderer or undefined if not found
18
+ */
19
+ get(id: string): SkinRenderer | undefined;
20
+ /**
21
+ * Get a skin renderer by ID, falling back to default if not found
22
+ * @param id Skin ID
23
+ * @returns Skin renderer (never undefined, falls back to md3)
24
+ */
25
+ getSafe(id: string): SkinRenderer;
26
+ /**
27
+ * Check if a skin exists
28
+ * @param id Skin ID
29
+ * @returns True if skin exists
30
+ */
31
+ has(id: string): boolean;
32
+ /**
33
+ * Get all registered skin IDs
34
+ * @returns Array of skin IDs
35
+ */
36
+ getAllIds(): string[];
37
+ /**
38
+ * Get all registered skin renderers
39
+ * @returns Array of skin renderers
40
+ */
41
+ getAll(): SkinRenderer[];
42
+ }
43
+ export declare const skinRegistry: SkinRegistry;
44
+ export { SkinRenderer, getAvatarUrl } from './types';
45
+ export { Md3SkinRenderer } from './md3';
46
+ export { AnimeSkinRenderer } from './anime';
47
+ export { NewspaperSkinRenderer } from './newspaper';
48
+ export { ArtSkinRenderer } from './art';
49
+ export { ScrapbookSkinRenderer } from './scrapbook';
50
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAOtC;;;GAGG;AACH,cAAM,YAAY;IACd,OAAO,CAAC,KAAK,CAAuC;;IAWpD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIlC;;;;OAIG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIzC;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY;IAIjC;;;;OAIG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;OAGG;IACH,SAAS,IAAI,MAAM,EAAE;IAIrB;;;OAGG;IACH,MAAM,IAAI,YAAY,EAAE;CAG3B;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScrapbookSkinRenderer = exports.ArtSkinRenderer = exports.NewspaperSkinRenderer = exports.AnimeSkinRenderer = exports.Md3SkinRenderer = exports.getAvatarUrl = exports.skinRegistry = void 0;
4
+ const md3_1 = require("./md3");
5
+ const anime_1 = require("./anime");
6
+ const newspaper_1 = require("./newspaper");
7
+ const art_1 = require("./art");
8
+ const scrapbook_1 = require("./scrapbook");
9
+ /**
10
+ * Skin registry
11
+ * Manages all available skin renderers
12
+ */
13
+ class SkinRegistry {
14
+ skins = new Map();
15
+ constructor() {
16
+ // Register built-in skins
17
+ this.register(new md3_1.Md3SkinRenderer());
18
+ this.register(new anime_1.AnimeSkinRenderer());
19
+ this.register(new newspaper_1.NewspaperSkinRenderer());
20
+ this.register(new art_1.ArtSkinRenderer());
21
+ this.register(new scrapbook_1.ScrapbookSkinRenderer());
22
+ }
23
+ /**
24
+ * Register a skin renderer
25
+ * @param skin Skin renderer instance
26
+ */
27
+ register(skin) {
28
+ this.skins.set(skin.id, skin);
29
+ }
30
+ /**
31
+ * Get a skin renderer by ID
32
+ * @param id Skin ID
33
+ * @returns Skin renderer or undefined if not found
34
+ */
35
+ get(id) {
36
+ return this.skins.get(id);
37
+ }
38
+ /**
39
+ * Get a skin renderer by ID, falling back to default if not found
40
+ * @param id Skin ID
41
+ * @returns Skin renderer (never undefined, falls back to md3)
42
+ */
43
+ getSafe(id) {
44
+ return this.skins.get(id) || this.skins.get('md3');
45
+ }
46
+ /**
47
+ * Check if a skin exists
48
+ * @param id Skin ID
49
+ * @returns True if skin exists
50
+ */
51
+ has(id) {
52
+ return this.skins.has(id);
53
+ }
54
+ /**
55
+ * Get all registered skin IDs
56
+ * @returns Array of skin IDs
57
+ */
58
+ getAllIds() {
59
+ return Array.from(this.skins.keys());
60
+ }
61
+ /**
62
+ * Get all registered skin renderers
63
+ * @returns Array of skin renderers
64
+ */
65
+ getAll() {
66
+ return Array.from(this.skins.values());
67
+ }
68
+ }
69
+ // Export singleton instance
70
+ exports.skinRegistry = new SkinRegistry();
71
+ // Re-export types and individual skins
72
+ var types_1 = require("./types");
73
+ Object.defineProperty(exports, "getAvatarUrl", { enumerable: true, get: function () { return types_1.getAvatarUrl; } });
74
+ var md3_2 = require("./md3");
75
+ Object.defineProperty(exports, "Md3SkinRenderer", { enumerable: true, get: function () { return md3_2.Md3SkinRenderer; } });
76
+ var anime_2 = require("./anime");
77
+ Object.defineProperty(exports, "AnimeSkinRenderer", { enumerable: true, get: function () { return anime_2.AnimeSkinRenderer; } });
78
+ var newspaper_2 = require("./newspaper");
79
+ Object.defineProperty(exports, "NewspaperSkinRenderer", { enumerable: true, get: function () { return newspaper_2.NewspaperSkinRenderer; } });
80
+ var art_2 = require("./art");
81
+ Object.defineProperty(exports, "ArtSkinRenderer", { enumerable: true, get: function () { return art_2.ArtSkinRenderer; } });
82
+ var scrapbook_2 = require("./scrapbook");
83
+ Object.defineProperty(exports, "ScrapbookSkinRenderer", { enumerable: true, get: function () { return scrapbook_2.ScrapbookSkinRenderer; } });
84
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skins/index.ts"],"names":[],"mappings":";;;AACA,+BAAuC;AACvC,mCAA2C;AAC3C,2CAAmD;AACnD,+BAAuC;AACvC,2CAAmD;AAEnD;;;GAGG;AACH,MAAM,YAAY;IACN,KAAK,GAA8B,IAAI,GAAG,EAAE,CAAA;IAEpD;QACI,0BAA0B;QAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,qBAAe,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,yBAAiB,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,iCAAqB,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,qBAAe,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI,iCAAqB,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,IAAkB;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IACjC,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,EAAU;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,EAAU;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAE,CAAA;IACvD,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,EAAU;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED;;;OAGG;IACH,SAAS;QACL,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IAED;;;OAGG;IACH,MAAM;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1C,CAAC;CACJ;AAED,4BAA4B;AACf,QAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;AAE9C,uCAAuC;AACvC,iCAAoD;AAA7B,qGAAA,YAAY,OAAA;AACnC,6BAAuC;AAA9B,sGAAA,eAAe,OAAA;AACxB,iCAA2C;AAAlC,0GAAA,iBAAiB,OAAA;AAC1B,yCAAmD;AAA1C,kHAAA,qBAAqB,OAAA;AAC9B,6BAAuC;AAA9B,sGAAA,eAAe,OAAA;AACxB,yCAAmD;AAA1C,kHAAA,qBAAqB,OAAA"}
@@ -0,0 +1,19 @@
1
+ import { SkinRenderer } from './types';
2
+ import { GroupAnalysisResult, UserStats } from '../types';
3
+ /**
4
+ * Material Design 3 (MD3) skin renderer
5
+ * This is the default skin with a clean, modern Material Design aesthetic
6
+ */
7
+ export declare class Md3SkinRenderer implements SkinRenderer {
8
+ readonly id = "md3";
9
+ readonly name = "Material Design 3";
10
+ readonly containerSelector = ".container";
11
+ formatUserStats(userStats: UserStats[]): string;
12
+ formatGoldenQuotes(quotes: GroupAnalysisResult['goldenQuotes']): string;
13
+ formatUserTitles(userTitles: GroupAnalysisResult['userTitles']): string;
14
+ formatTopics(topics: GroupAnalysisResult['topics']): string;
15
+ generateActiveHoursChart(activeHours: Record<number, number>): string;
16
+ formatTags(tags: string[] | undefined): string;
17
+ formatEvidence(items: string[] | '无' | undefined): string;
18
+ }
19
+ //# sourceMappingURL=md3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md3.d.ts","sourceRoot":"","sources":["../../src/skins/md3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzD;;;GAGG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAChD,QAAQ,CAAC,EAAE,SAAQ;IACnB,QAAQ,CAAC,IAAI,uBAAsB;IACnC,QAAQ,CAAC,iBAAiB,gBAAe;IAEzC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM;IAyB/C,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,MAAM;IAoBvE,gBAAgB,CAAC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,GAAG,MAAM;IAqBvE,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,MAAM;IAkB3D,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IA+CrE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM;IAQ9C,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,SAAS,GAAG,MAAM;CAsB5D"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Md3SkinRenderer = void 0;
4
+ const types_1 = require("./types");
5
+ /**
6
+ * Material Design 3 (MD3) skin renderer
7
+ * This is the default skin with a clean, modern Material Design aesthetic
8
+ */
9
+ class Md3SkinRenderer {
10
+ id = 'md3';
11
+ name = 'Material Design 3';
12
+ containerSelector = '.container';
13
+ formatUserStats(userStats) {
14
+ if (!userStats || userStats.length === 0) {
15
+ return '<div class="empty-state">暂无用户统计信息</div>';
16
+ }
17
+ return userStats
18
+ .map((user) => `
19
+ <div class="user-stat-card">
20
+ <img src="${(0, types_1.getAvatarUrl)(user.userId)}" alt="avatar" class="avatar">
21
+ <div class="user-details">
22
+ <div class="nickname">${user.nickname}</div>
23
+ <div class="stats-grid">
24
+ <span>发言数: <strong>${user.messageCount}</strong></span>
25
+ <span>字数: <strong>${user.charCount}</strong></span>
26
+ <span>回复率: <strong>${(user.replyRatio * 100).toFixed(0)}%</strong></span>
27
+ <span>夜猫子: <strong>${(user.nightRatio * 100).toFixed(0)}%</strong></span>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ `)
32
+ .join('');
33
+ }
34
+ formatGoldenQuotes(quotes) {
35
+ if (!quotes || quotes.length === 0) {
36
+ return '<div class="empty-state">本次未发现逆天神人发言</div>';
37
+ }
38
+ return quotes
39
+ .map((quote) => `
40
+ <div class="quote-card">
41
+ <div class="quote-content">"${quote.content}"</div>
42
+ <div class="quote-footer">
43
+ <span class="quote-sender">— ${quote.sender}</span>
44
+ <p class="quote-reason"><strong>逆天理由:</strong> ${quote.reason}</p>
45
+ </div>
46
+ </div>
47
+ `)
48
+ .join('');
49
+ }
50
+ formatUserTitles(userTitles) {
51
+ if (!userTitles || userTitles.length === 0) {
52
+ return '<div class="empty-state">本次无人获得特殊称号</div>';
53
+ }
54
+ return userTitles
55
+ .map((title) => `
56
+ <div class="title-card">
57
+ <img src="${(0, types_1.getAvatarUrl)(title.id)}" alt="avatar" class="avatar">
58
+ <div class="title-details">
59
+ <div class="nickname">${title.name}</div>
60
+ <div class="title-badge">${title.mbti && title.mbti !== 'N/A' ? `${title.title} | ${title.mbti}` : title.title}</div>
61
+ <p class="title-reason">${title.reason}</p>
62
+ </div>
63
+ </div>
64
+ `)
65
+ .join('');
66
+ }
67
+ formatTopics(topics) {
68
+ if (!topics || topics.length === 0) {
69
+ return '<div class="empty-state">本次无明显讨论话题</div>';
70
+ }
71
+ return topics
72
+ .map((topic) => `
73
+ <div class="topic-card">
74
+ <div class="topic-title">${topic.topic}</div>
75
+ <div class="topic-contributors">主要参与者: ${topic.contributors.join(', ')}</div>
76
+ <p class="topic-detail">${topic.detail}</p>
77
+ </div>
78
+ `)
79
+ .join('');
80
+ }
81
+ generateActiveHoursChart(activeHours) {
82
+ const values = Object.values(activeHours);
83
+ const maxCount = values.length > 0 ? Math.max(...values) : 0;
84
+ const chartBars = [];
85
+ // The container `.activity-bar` is 180px tall.
86
+ // The label at the bottom is approx 20px.
87
+ // The count at the top is approx 15px.
88
+ // Max available height for the bar is 180 - 20 - 15 = 145px.
89
+ const maxBarHeight = 145;
90
+ for (let i = 0; i < 24; i++) {
91
+ const count = activeHours[i] || 0;
92
+ let barHeight = maxCount > 0 ? (count / maxCount) * maxBarHeight : 0;
93
+ if (count > 0 && barHeight < 3) {
94
+ barHeight = 3; // 最小可见高度
95
+ }
96
+ const percentage = maxCount > 0 ? Math.round((count / maxCount) * 100) : 0;
97
+ const barStyle = barHeight > 0
98
+ ? `style="height: ${barHeight}px !important;"`
99
+ : `style="height: 0px !important;"`;
100
+ chartBars.push(`
101
+ <div class="activity-bar" title="${i}:00 - ${count} 条消息 (${percentage}%)">
102
+ <div class="activity-bar-count">${count > 0 ? count : ''}</div>
103
+ <div class="activity-bar-bar" ${barStyle}></div>
104
+ <span class="activity-bar-label">${String(i).padStart(2, '0')}</span>
105
+ </div>
106
+ `);
107
+ }
108
+ return `
109
+ <div class="activity-chart-container">
110
+ <div class="activity-chart">
111
+ ${chartBars.join('')}
112
+ </div>
113
+ <div class="chart-legend">
114
+ <span class="legend-text">24小时活跃度分布 (峰值: ${maxCount} 条消息)</span>
115
+ </div>
116
+ </div>
117
+ `;
118
+ }
119
+ formatTags(tags) {
120
+ if (!tags || tags.length === 0) {
121
+ return '<div class="empty-state">暂无数据</div>';
122
+ }
123
+ return tags.map((tag) => `<div class="chip">${tag}</div>`).join('');
124
+ }
125
+ formatEvidence(items) {
126
+ if (!items || items.length === 0 || items === '无') {
127
+ return '<div class="empty-state">暂无事实依据</div>';
128
+ }
129
+ const cards = items
130
+ .map((item) => {
131
+ const quoteHtml = (item || '')
132
+ .split('\n')
133
+ .map((line) => line.trim())
134
+ .filter(Boolean)
135
+ .join('<br/>');
136
+ return `
137
+ <div class="card outlined-card evidence-card">
138
+ <p>${quoteHtml}</p>
139
+ </div>
140
+ `;
141
+ })
142
+ .join('');
143
+ return `<div class="card-grid">${cards}</div>`;
144
+ }
145
+ }
146
+ exports.Md3SkinRenderer = Md3SkinRenderer;
147
+ //# sourceMappingURL=md3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md3.js","sourceRoot":"","sources":["../../src/skins/md3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { SkinRenderer } from './types';
2
+ import { GroupAnalysisResult, UserStats } from '../types';
3
+ /**
4
+ * Newspaper skin renderer
5
+ * Traditional Chinese Newspaper Style (Minguo/Vintage)
6
+ */
7
+ export declare class NewspaperSkinRenderer implements SkinRenderer {
8
+ readonly id = "newspaper";
9
+ readonly name = "\u62A5\u7EB8\u98CE\u683C";
10
+ readonly containerSelector = ".paper-container";
11
+ formatUserStats(userStats: UserStats[]): string;
12
+ formatGoldenQuotes(quotes: GroupAnalysisResult['goldenQuotes']): string;
13
+ formatUserTitles(userTitles: GroupAnalysisResult['userTitles']): string;
14
+ formatTopics(topics: GroupAnalysisResult['topics']): string;
15
+ generateActiveHoursChart(activeHours: Record<number, number>): string;
16
+ formatTags(tags: string[] | undefined): string;
17
+ formatEvidence(items: string[] | '无' | undefined): string;
18
+ }
19
+ //# sourceMappingURL=newspaper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newspaper.d.ts","sourceRoot":"","sources":["../../src/skins/newspaper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzD;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IACtD,QAAQ,CAAC,EAAE,eAAc;IACzB,QAAQ,CAAC,IAAI,8BAAS;IACtB,QAAQ,CAAC,iBAAiB,sBAAqB;IAE/C,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM;IA2B/C,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,MAAM;IAmBvE,gBAAgB,CAAC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,GAAG,MAAM;IAqBvE,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,MAAM;IAkB3D,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAsCrE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM;IAU9C,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,SAAS,GAAG,MAAM;CAqB5D"}
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NewspaperSkinRenderer = void 0;
4
+ const types_1 = require("./types");
5
+ /**
6
+ * Newspaper skin renderer
7
+ * Traditional Chinese Newspaper Style (Minguo/Vintage)
8
+ */
9
+ class NewspaperSkinRenderer {
10
+ id = 'newspaper';
11
+ name = '报纸风格';
12
+ containerSelector = '.paper-container';
13
+ formatUserStats(userStats) {
14
+ if (!userStats || userStats.length === 0) {
15
+ return '<div class="empty-news">暂无人物报道</div>';
16
+ }
17
+ return userStats
18
+ .map((user, index) => `
19
+ <div class="news-profile">
20
+ <div class="profile-rank">NO.${index + 1}</div>
21
+ <div class="profile-main">
22
+ <img src="${(0, types_1.getAvatarUrl)(user.userId)}" alt="avatar" class="profile-avatar">
23
+ <div class="profile-info">
24
+ <div class="profile-name">${user.nickname}</div>
25
+ <div class="profile-data">
26
+ <span class="data-item">发言: ${user.messageCount}</span>
27
+ <span class="data-item">字数: ${user.charCount}</span>
28
+ <span class="data-item">回复率: ${(user.replyRatio * 100).toFixed(0)}%</span>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ `)
34
+ .join('');
35
+ }
36
+ formatGoldenQuotes(quotes) {
37
+ if (!quotes || quotes.length === 0) {
38
+ return '<div class="empty-news">本期无金句收录</div>';
39
+ }
40
+ return quotes
41
+ .map((quote) => `
42
+ <div class="news-snippet">
43
+ <div class="snippet-content">“${quote.content}”</div>
44
+ <div class="snippet-source">
45
+ —— ${quote.sender} <span class="snippet-comment">(${quote.reason})</span>
46
+ </div>
47
+ </div>
48
+ `)
49
+ .join('');
50
+ }
51
+ formatUserTitles(userTitles) {
52
+ if (!userTitles || userTitles.length === 0) {
53
+ return '<div class="empty-news">本期无特殊称号</div>';
54
+ }
55
+ return userTitles
56
+ .map((title) => `
57
+ <div class="title-item">
58
+ <div class="title-header">
59
+ <span class="title-name">${title.name}</span>
60
+ <span class="title-badge">${title.title}</span>
61
+ </div>
62
+ <div class="title-desc">${title.reason}</div>
63
+ ${title.mbti && title.mbti !== 'N/A' ? `<div class="title-mbti">MBTI: ${title.mbti}</div>` : ''}
64
+ </div>
65
+ `)
66
+ .join('');
67
+ }
68
+ formatTopics(topics) {
69
+ if (!topics || topics.length === 0) {
70
+ return '<div class="empty-news">本期无重大新闻</div>';
71
+ }
72
+ return topics
73
+ .map((topic) => `
74
+ <div class="news-article">
75
+ <h3 class="article-title">${topic.topic}</h3>
76
+ <div class="article-meta">参与者: ${topic.contributors.join(', ')}</div>
77
+ <div class="article-body">${topic.detail}</div>
78
+ </div>
79
+ `)
80
+ .join('');
81
+ }
82
+ generateActiveHoursChart(activeHours) {
83
+ const values = Object.values(activeHours);
84
+ const maxCount = values.length > 0 ? Math.max(...values) : 0;
85
+ const chartBars = [];
86
+ // The container height
87
+ const maxBarHeight = 150;
88
+ for (let i = 0; i < 24; i++) {
89
+ const count = activeHours[i] || 0;
90
+ let barHeight = maxCount > 0 ? (count / maxCount) * maxBarHeight : 0;
91
+ if (count > 0 && barHeight < 2) {
92
+ barHeight = 2; // Min height
93
+ }
94
+ const percentage = maxCount > 0 ? Math.round((count / maxCount) * 100) : 0;
95
+ const barStyle = barHeight > 0
96
+ ? `style="height: ${barHeight}px !important;"`
97
+ : `style="height: 0px !important;"`;
98
+ chartBars.push(`
99
+ <div class="chart-col" title="${i}:00 - ${count} 条 (${percentage}%)">
100
+ <div class="chart-bar" ${barStyle}></div>
101
+ <span class="chart-axis">${i}</span>
102
+ </div>
103
+ `);
104
+ }
105
+ return `
106
+ <div class="news-chart">
107
+ ${chartBars.join('')}
108
+ </div>
109
+ `;
110
+ }
111
+ formatTags(tags) {
112
+ if (!tags || tags.length === 0) {
113
+ return '';
114
+ }
115
+ return tags
116
+ .map((tag) => `<span class="news-tag">${tag}</span>`)
117
+ .join('');
118
+ }
119
+ formatEvidence(items) {
120
+ if (!items || items.length === 0 || items === '无') {
121
+ return '<div class="empty-news">暂无依据</div>';
122
+ }
123
+ const listItems = items
124
+ .map((item) => {
125
+ const quoteHtml = (item || '')
126
+ .split('\n')
127
+ .map((line) => line.trim())
128
+ .filter(Boolean)
129
+ .join('<br/>');
130
+ return `
131
+ <li class="evidence-line">
132
+ ${quoteHtml}
133
+ </li>
134
+ `;
135
+ })
136
+ .join('');
137
+ return `<ul class="evidence-list">${listItems}</ul>`;
138
+ }
139
+ }
140
+ exports.NewspaperSkinRenderer = NewspaperSkinRenderer;
141
+ //# sourceMappingURL=newspaper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newspaper.js","sourceRoot":"","sources":["../../src/skins/newspaper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { SkinRenderer } from './types';
2
+ import { GroupAnalysisResult, UserStats } from '../types';
3
+ /**
4
+ * Scrapbook Skin Renderer
5
+ * Ported from AstrBot's scrapbook template.
6
+ * Features a hand-drawn, colorful, and playful aesthetic.
7
+ */
8
+ export declare class ScrapbookSkinRenderer implements SkinRenderer {
9
+ readonly id = "scrapbook";
10
+ readonly name = "Scrapbook";
11
+ readonly containerSelector = ".container";
12
+ formatUserStats(userStats: UserStats[]): string;
13
+ formatGoldenQuotes(quotes: GroupAnalysisResult['goldenQuotes']): string;
14
+ formatUserTitles(userTitles: GroupAnalysisResult['userTitles']): string;
15
+ formatTopics(topics: GroupAnalysisResult['topics']): string;
16
+ formatTags(tags: string[]): string;
17
+ formatEvidence(evidence: string[]): string;
18
+ generateActiveHoursChart(activeHours: Record<number, number>): string;
19
+ }
20
+ //# sourceMappingURL=scrapbook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrapbook.d.ts","sourceRoot":"","sources":["../../src/skins/scrapbook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,YAAY,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzD;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IACtD,QAAQ,CAAC,EAAE,eAAc;IACzB,QAAQ,CAAC,IAAI,eAAc;IAC3B,QAAQ,CAAC,iBAAiB,gBAAe;IAEzC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM;IAQ/C,kBAAkB,CAAC,MAAM,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,MAAM;IA2CvE,gBAAgB,CAAC,UAAU,EAAE,mBAAmB,CAAC,YAAY,CAAC,GAAG,MAAM;IA6CvE,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,MAAM;IA8C3D,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM;IASlC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM;IAa1C,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;CA2CxE"}