fi-pool-server 0.1.0

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 (93) hide show
  1. package/README.md +26 -0
  2. package/dist/db/index.d.ts +18 -0
  3. package/dist/db/index.d.ts.map +1 -0
  4. package/dist/db/index.js +58 -0
  5. package/dist/db/index.js.map +1 -0
  6. package/dist/db/migrate.d.ts +11 -0
  7. package/dist/db/migrate.d.ts.map +1 -0
  8. package/dist/db/migrate.js +42 -0
  9. package/dist/db/migrate.js.map +1 -0
  10. package/dist/db/schema.d.ts +1101 -0
  11. package/dist/db/schema.d.ts.map +1 -0
  12. package/dist/db/schema.js +149 -0
  13. package/dist/db/schema.js.map +1 -0
  14. package/dist/index.d.ts +50 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +69 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/services/analysis.d.ts +62 -0
  19. package/dist/services/analysis.d.ts.map +1 -0
  20. package/dist/services/analysis.js +74 -0
  21. package/dist/services/analysis.js.map +1 -0
  22. package/dist/services/daily-info.d.ts +150 -0
  23. package/dist/services/daily-info.d.ts.map +1 -0
  24. package/dist/services/daily-info.js +293 -0
  25. package/dist/services/daily-info.js.map +1 -0
  26. package/dist/services/embedding.d.ts +89 -0
  27. package/dist/services/embedding.d.ts.map +1 -0
  28. package/dist/services/embedding.js +227 -0
  29. package/dist/services/embedding.js.map +1 -0
  30. package/dist/services/llm.d.ts +64 -0
  31. package/dist/services/llm.d.ts.map +1 -0
  32. package/dist/services/llm.js +109 -0
  33. package/dist/services/llm.js.map +1 -0
  34. package/dist/services/pipeline.d.ts +161 -0
  35. package/dist/services/pipeline.d.ts.map +1 -0
  36. package/dist/services/pipeline.js +844 -0
  37. package/dist/services/pipeline.js.map +1 -0
  38. package/dist/services/pool.d.ts +142 -0
  39. package/dist/services/pool.d.ts.map +1 -0
  40. package/dist/services/pool.js +208 -0
  41. package/dist/services/pool.js.map +1 -0
  42. package/dist/services/sentiment.d.ts +31 -0
  43. package/dist/services/sentiment.d.ts.map +1 -0
  44. package/dist/services/sentiment.js +76 -0
  45. package/dist/services/sentiment.js.map +1 -0
  46. package/dist/services/session.d.ts +117 -0
  47. package/dist/services/session.d.ts.map +1 -0
  48. package/dist/services/session.js +176 -0
  49. package/dist/services/session.js.map +1 -0
  50. package/dist/services/stock.d.ts +82 -0
  51. package/dist/services/stock.d.ts.map +1 -0
  52. package/dist/services/stock.js +99 -0
  53. package/dist/services/stock.js.map +1 -0
  54. package/dist/services/word-count.d.ts +61 -0
  55. package/dist/services/word-count.d.ts.map +1 -0
  56. package/dist/services/word-count.js +120 -0
  57. package/dist/services/word-count.js.map +1 -0
  58. package/dist/tools/auxiliary.d.ts +93 -0
  59. package/dist/tools/auxiliary.d.ts.map +1 -0
  60. package/dist/tools/auxiliary.js +204 -0
  61. package/dist/tools/auxiliary.js.map +1 -0
  62. package/dist/tools/command.d.ts +193 -0
  63. package/dist/tools/command.d.ts.map +1 -0
  64. package/dist/tools/command.js +263 -0
  65. package/dist/tools/command.js.map +1 -0
  66. package/dist/tools/execute.d.ts +109 -0
  67. package/dist/tools/execute.d.ts.map +1 -0
  68. package/dist/tools/execute.js +112 -0
  69. package/dist/tools/execute.js.map +1 -0
  70. package/dist/tools/manager.d.ts +150 -0
  71. package/dist/tools/manager.d.ts.map +1 -0
  72. package/dist/tools/manager.js +200 -0
  73. package/dist/tools/manager.js.map +1 -0
  74. package/dist/tools/query.d.ts +163 -0
  75. package/dist/tools/query.d.ts.map +1 -0
  76. package/dist/tools/query.js +190 -0
  77. package/dist/tools/query.js.map +1 -0
  78. package/dist/utils/http-client.d.ts +87 -0
  79. package/dist/utils/http-client.d.ts.map +1 -0
  80. package/dist/utils/http-client.js +211 -0
  81. package/dist/utils/http-client.js.map +1 -0
  82. package/dist/utils/indicators.d.ts +194 -0
  83. package/dist/utils/indicators.d.ts.map +1 -0
  84. package/dist/utils/indicators.js +395 -0
  85. package/dist/utils/indicators.js.map +1 -0
  86. package/dist/utils/signals.d.ts +65 -0
  87. package/dist/utils/signals.d.ts.map +1 -0
  88. package/dist/utils/signals.js +171 -0
  89. package/dist/utils/signals.js.map +1 -0
  90. package/drizzle/0000_equal_marvel_apes.sql +124 -0
  91. package/drizzle/meta/0000_snapshot.json +858 -0
  92. package/drizzle/meta/_journal.json +13 -0
  93. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/services/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * 股池(Pool)与股池-股票关联(PoolStock)管理服务
3
+ *
4
+ * 提供股池的 CRUD 操作,以及向股池添加/移除股票的功能。
5
+ * 删除股池时会级联删除关联的 pool_stock 记录(外键约束 CASCADE)。
6
+ *
7
+ * @module services/pool
8
+ */
9
+ /**
10
+ * 创建新的股池。
11
+ *
12
+ * @param name - 股池名称(必须唯一)
13
+ * @param desc - 可选描述,默认为空字符串
14
+ * @returns 包含新股池 id 的对象
15
+ *
16
+ * @example
17
+ * const { id } = await createPool('我的自选股', '日常关注');
18
+ */
19
+ export declare function createPool(name: string, desc?: string): Promise<{
20
+ id: number;
21
+ }>;
22
+ /**
23
+ * 删除指定股池及其关联的 pool_stock 记录。
24
+ *
25
+ * @param id - 股池 ID
26
+ *
27
+ * @example
28
+ * await deletePool(1);
29
+ */
30
+ export declare function deletePool(id: number): Promise<void>;
31
+ /**
32
+ * 更新股池的名称或描述。
33
+ * 仅提供需要更新的字段即可,未提供的字段保持不变。
34
+ *
35
+ * @param id - 股池 ID
36
+ * @param data - 包含 name 和/或 desc 的更新对象
37
+ *
38
+ * @example
39
+ * await updatePool(1, { name: '新名称', desc: '新描述' });
40
+ * await updatePool(1, { desc: '仅更新描述' });
41
+ */
42
+ export declare function updatePool(id: number, data: {
43
+ name?: string;
44
+ desc?: string;
45
+ }): Promise<void>;
46
+ /**
47
+ * 列出所有股池,附带每个股池中的股票数量。
48
+ *
49
+ * @returns 股池列表,每个元素包含股池全部字段和 stockCount
50
+ *
51
+ * @example
52
+ * const pools = await listPools();
53
+ * pools.forEach(p => console.log(p.name, p.stockCount));
54
+ */
55
+ export declare function listPools(): Promise<{
56
+ id: number;
57
+ name: string;
58
+ desc: string;
59
+ poolAnalysis: string;
60
+ poolSignal: number;
61
+ createdAt: string;
62
+ updatedAt: string;
63
+ stockCount: number;
64
+ }[]>;
65
+ /**
66
+ * 向指定股池批量添加股票代码。
67
+ * 已存在于该股池的股票会被跳过,不会重复添加。
68
+ *
69
+ * @param poolId - 股池 ID
70
+ * @param stockCodes - 要添加的股票代码数组
71
+ * @returns 实际添加的数量和跳过的数量
72
+ *
73
+ * @example
74
+ * const { added, skipped } = await addStocks(1, ['600519', '000001']);
75
+ * // added: 2, skipped: 0
76
+ */
77
+ export declare function addStocks(poolId: number, stockCodes: string[]): Promise<{
78
+ added: number;
79
+ skipped: number;
80
+ }>;
81
+ /**
82
+ * 从指定股池中移除一批股票代码。
83
+ *
84
+ * @param poolId - 股池 ID
85
+ * @param stockCodes - 要移除的股票代码数组
86
+ * @returns 实际移除的数量
87
+ *
88
+ * @example
89
+ * const { removed } = await removeStocks(1, ['600519']);
90
+ * // removed: 1
91
+ */
92
+ export declare function removeStocks(poolId: number, stockCodes: string[]): Promise<{
93
+ removed: number;
94
+ }>;
95
+ /**
96
+ * 获取指定股池中的所有股票详情。
97
+ * 返回的列表包含股票代码、名称、当前价格以及加入时间。
98
+ *
99
+ * @param poolId - 股池 ID
100
+ * @returns 股池中的股票列表
101
+ *
102
+ * @example
103
+ * const stocks = await getPoolStocks(1);
104
+ * stocks.forEach(s => console.log(s.code, s.name));
105
+ */
106
+ export declare function getPoolStocks(poolId: number): Promise<{
107
+ code: string;
108
+ name: string;
109
+ currentPrice: number;
110
+ addedAt: string;
111
+ }[]>;
112
+ /**
113
+ * 设置股池的看多/看空/中性信号。
114
+ *
115
+ * @param poolId - 股池 ID
116
+ * @param signal - 信号值:-1 看空, 0 中性, 1 看多
117
+ *
118
+ * @example
119
+ * await setPoolSignal(1, 1); // 看多
120
+ * await setPoolSignal(1, -1); // 看空
121
+ */
122
+ export declare function setPoolSignal(poolId: number, signal: number): Promise<void>;
123
+ /**
124
+ * 根据 ID 获取单个股池信息。
125
+ *
126
+ * @param id - 股池 ID
127
+ * @returns 股池对象,未找到时返回 null
128
+ *
129
+ * @example
130
+ * const p = await getPoolById(1);
131
+ * if (p) console.log(p.name);
132
+ */
133
+ export declare function getPoolById(id: number): Promise<{
134
+ id: number;
135
+ name: string;
136
+ desc: string;
137
+ poolAnalysis: string;
138
+ poolSignal: number;
139
+ createdAt: string;
140
+ updatedAt: string;
141
+ }>;
142
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/services/pool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;;GAU3D;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,iBAM1C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,iBASvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS;;;;;;;;;KAkB9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;;;GA2BnE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE;;GAetE;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM;;;;;KAcjD;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBASjE;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM;;;;;;;;GAI3C"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * 股池(Pool)与股池-股票关联(PoolStock)管理服务
3
+ *
4
+ * 提供股池的 CRUD 操作,以及向股池添加/移除股票的功能。
5
+ * 删除股池时会级联删除关联的 pool_stock 记录(外键约束 CASCADE)。
6
+ *
7
+ * @module services/pool
8
+ */
9
+ import { getDatabase } from '../db/index.js';
10
+ import { pool, poolStock, stock } from '../db/schema.js';
11
+ import { eq, and, inArray, sql } from 'drizzle-orm';
12
+ /**
13
+ * 创建新的股池。
14
+ *
15
+ * @param name - 股池名称(必须唯一)
16
+ * @param desc - 可选描述,默认为空字符串
17
+ * @returns 包含新股池 id 的对象
18
+ *
19
+ * @example
20
+ * const { id } = await createPool('我的自选股', '日常关注');
21
+ */
22
+ export async function createPool(name, desc) {
23
+ const db = getDatabase();
24
+ const result = db
25
+ .insert(pool)
26
+ .values({ name, desc: desc ?? '' })
27
+ .run();
28
+ // 获取自增 ID
29
+ const id = Number(result.lastInsertRowid);
30
+ return { id };
31
+ }
32
+ /**
33
+ * 删除指定股池及其关联的 pool_stock 记录。
34
+ *
35
+ * @param id - 股池 ID
36
+ *
37
+ * @example
38
+ * await deletePool(1);
39
+ */
40
+ export async function deletePool(id) {
41
+ const db = getDatabase();
42
+ // 先删除关联记录
43
+ db.delete(poolStock).where(eq(poolStock.poolId, id)).run();
44
+ // 再删除股池
45
+ db.delete(pool).where(eq(pool.id, id)).run();
46
+ }
47
+ /**
48
+ * 更新股池的名称或描述。
49
+ * 仅提供需要更新的字段即可,未提供的字段保持不变。
50
+ *
51
+ * @param id - 股池 ID
52
+ * @param data - 包含 name 和/或 desc 的更新对象
53
+ *
54
+ * @example
55
+ * await updatePool(1, { name: '新名称', desc: '新描述' });
56
+ * await updatePool(1, { desc: '仅更新描述' });
57
+ */
58
+ export async function updatePool(id, data) {
59
+ const db = getDatabase();
60
+ const updateData = { updatedAt: sql `datetime('now')` };
61
+ if (data.name !== undefined)
62
+ updateData.name = data.name;
63
+ if (data.desc !== undefined)
64
+ updateData.desc = data.desc;
65
+ db.update(pool).set(updateData).where(eq(pool.id, id)).run();
66
+ }
67
+ /**
68
+ * 列出所有股池,附带每个股池中的股票数量。
69
+ *
70
+ * @returns 股池列表,每个元素包含股池全部字段和 stockCount
71
+ *
72
+ * @example
73
+ * const pools = await listPools();
74
+ * pools.forEach(p => console.log(p.name, p.stockCount));
75
+ */
76
+ export async function listPools() {
77
+ const db = getDatabase();
78
+ return db
79
+ .select({
80
+ id: pool.id,
81
+ name: pool.name,
82
+ desc: pool.desc,
83
+ poolAnalysis: pool.poolAnalysis,
84
+ poolSignal: pool.poolSignal,
85
+ createdAt: pool.createdAt,
86
+ updatedAt: pool.updatedAt,
87
+ stockCount: sql `cast(count(${poolStock.id}) as integer)`,
88
+ })
89
+ .from(pool)
90
+ .leftJoin(poolStock, eq(poolStock.poolId, pool.id))
91
+ .groupBy(pool.id)
92
+ .orderBy(pool.id)
93
+ .all();
94
+ }
95
+ /**
96
+ * 向指定股池批量添加股票代码。
97
+ * 已存在于该股池的股票会被跳过,不会重复添加。
98
+ *
99
+ * @param poolId - 股池 ID
100
+ * @param stockCodes - 要添加的股票代码数组
101
+ * @returns 实际添加的数量和跳过的数量
102
+ *
103
+ * @example
104
+ * const { added, skipped } = await addStocks(1, ['600519', '000001']);
105
+ * // added: 2, skipped: 0
106
+ */
107
+ export async function addStocks(poolId, stockCodes) {
108
+ if (stockCodes.length === 0)
109
+ return { added: 0, skipped: 0 };
110
+ const db = getDatabase();
111
+ // 查询已存在于该股池中的股票
112
+ const existing = db
113
+ .select({ stockCode: poolStock.stockCode })
114
+ .from(poolStock)
115
+ .where(and(eq(poolStock.poolId, poolId), inArray(poolStock.stockCode, stockCodes)))
116
+ .all();
117
+ const existingCodes = new Set(existing.map((r) => r.stockCode));
118
+ const toAdd = stockCodes.filter((c) => !existingCodes.has(c));
119
+ if (toAdd.length > 0) {
120
+ db.insert(poolStock)
121
+ .values(toAdd.map((c) => ({ poolId, stockCode: c })))
122
+ .run();
123
+ }
124
+ return { added: toAdd.length, skipped: stockCodes.length - toAdd.length };
125
+ }
126
+ /**
127
+ * 从指定股池中移除一批股票代码。
128
+ *
129
+ * @param poolId - 股池 ID
130
+ * @param stockCodes - 要移除的股票代码数组
131
+ * @returns 实际移除的数量
132
+ *
133
+ * @example
134
+ * const { removed } = await removeStocks(1, ['600519']);
135
+ * // removed: 1
136
+ */
137
+ export async function removeStocks(poolId, stockCodes) {
138
+ if (stockCodes.length === 0)
139
+ return { removed: 0 };
140
+ const db = getDatabase();
141
+ const info = db
142
+ .delete(poolStock)
143
+ .where(and(eq(poolStock.poolId, poolId), inArray(poolStock.stockCode, stockCodes)))
144
+ .run();
145
+ return { removed: Number(info.changes) };
146
+ }
147
+ /**
148
+ * 获取指定股池中的所有股票详情。
149
+ * 返回的列表包含股票代码、名称、当前价格以及加入时间。
150
+ *
151
+ * @param poolId - 股池 ID
152
+ * @returns 股池中的股票列表
153
+ *
154
+ * @example
155
+ * const stocks = await getPoolStocks(1);
156
+ * stocks.forEach(s => console.log(s.code, s.name));
157
+ */
158
+ export async function getPoolStocks(poolId) {
159
+ const db = getDatabase();
160
+ return db
161
+ .select({
162
+ code: stock.code,
163
+ name: stock.name,
164
+ currentPrice: stock.currentPrice,
165
+ addedAt: poolStock.addedAt,
166
+ })
167
+ .from(poolStock)
168
+ .innerJoin(stock, eq(poolStock.stockCode, stock.code))
169
+ .where(eq(poolStock.poolId, poolId))
170
+ .orderBy(stock.code)
171
+ .all();
172
+ }
173
+ /**
174
+ * 设置股池的看多/看空/中性信号。
175
+ *
176
+ * @param poolId - 股池 ID
177
+ * @param signal - 信号值:-1 看空, 0 中性, 1 看多
178
+ *
179
+ * @example
180
+ * await setPoolSignal(1, 1); // 看多
181
+ * await setPoolSignal(1, -1); // 看空
182
+ */
183
+ export async function setPoolSignal(poolId, signal) {
184
+ const db = getDatabase();
185
+ db.update(pool)
186
+ .set({
187
+ poolSignal: signal,
188
+ updatedAt: sql `datetime('now')`,
189
+ })
190
+ .where(eq(pool.id, poolId))
191
+ .run();
192
+ }
193
+ /**
194
+ * 根据 ID 获取单个股池信息。
195
+ *
196
+ * @param id - 股池 ID
197
+ * @returns 股池对象,未找到时返回 null
198
+ *
199
+ * @example
200
+ * const p = await getPoolById(1);
201
+ * if (p) console.log(p.name);
202
+ */
203
+ export async function getPoolById(id) {
204
+ const db = getDatabase();
205
+ const rows = db.select().from(pool).where(eq(pool.id, id)).all();
206
+ return rows[0] ?? null;
207
+ }
208
+ //# sourceMappingURL=pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/services/pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * 舆情搜索服务 — DashScope (阿里云百炼)
3
+ *
4
+ * 通过 DashScope 的 OpenAI 兼容接口调用 qwen 模型
5
+ * 并启用联网搜索(enable_search=true)获取股票舆情信息。
6
+ *
7
+ * @module services/sentiment
8
+ */
9
+ /**
10
+ * 获取指定股票的舆情信息。
11
+ *
12
+ * 调用 DashScope API 搜索最近三天的新闻和市场舆情,
13
+ * 返回摘要报告和信息来源列表。
14
+ *
15
+ * 当 DASHSCOPE_API_KEY 未配置时,跳过搜索并返回提示信息,
16
+ * 而非抛出异常。
17
+ *
18
+ * @param code - 六位股票代码(如 '600519')
19
+ * @param name - 股票名称(如 '贵州茅台')
20
+ * @returns 包含报告文本和来源 URL 列表的对象
21
+ *
22
+ * @example
23
+ * const { report, sources } = await fetchSentiment('600519', '贵州茅台');
24
+ * console.log(report);
25
+ * sources.forEach(url => console.log(url));
26
+ */
27
+ export declare function fetchSentiment(code: string, name: string): Promise<{
28
+ report: string;
29
+ sources: string[];
30
+ }>;
31
+ //# sourceMappingURL=sentiment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentiment.d.ts","sourceRoot":"","sources":["../../src/services/sentiment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyBH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA4DhD"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * 舆情搜索服务 — DashScope (阿里云百炼)
3
+ *
4
+ * 通过 DashScope 的 OpenAI 兼容接口调用 qwen 模型
5
+ * 并启用联网搜索(enable_search=true)获取股票舆情信息。
6
+ *
7
+ * @module services/sentiment
8
+ */
9
+ import { fetchJson, fetchWithRetry } from '../utils/http-client.js';
10
+ // ─── 公开 API ────────────────────────────────────────────────────
11
+ /**
12
+ * 获取指定股票的舆情信息。
13
+ *
14
+ * 调用 DashScope API 搜索最近三天的新闻和市场舆情,
15
+ * 返回摘要报告和信息来源列表。
16
+ *
17
+ * 当 DASHSCOPE_API_KEY 未配置时,跳过搜索并返回提示信息,
18
+ * 而非抛出异常。
19
+ *
20
+ * @param code - 六位股票代码(如 '600519')
21
+ * @param name - 股票名称(如 '贵州茅台')
22
+ * @returns 包含报告文本和来源 URL 列表的对象
23
+ *
24
+ * @example
25
+ * const { report, sources } = await fetchSentiment('600519', '贵州茅台');
26
+ * console.log(report);
27
+ * sources.forEach(url => console.log(url));
28
+ */
29
+ export async function fetchSentiment(code, name) {
30
+ const apiKey = process.env.DASHSCOPE_API_KEY;
31
+ if (!apiKey || apiKey.trim() === '') {
32
+ return {
33
+ report: '舆情搜索未配置(DASHSCOPE_API_KEY 未设置)',
34
+ sources: [],
35
+ };
36
+ }
37
+ const baseUrl = process.env.DASHSCOPE_BASE_URL ||
38
+ 'https://dashscope.aliyuncs.com/compatible-mode/v1';
39
+ const model = process.env.DASHSCOPE_MODEL || 'qwen3.5-flash';
40
+ const url = `${baseUrl}/chat/completions`;
41
+ const prompt = `搜索 ${code} ${name} 最近三天的相关新闻和市场舆情信息,总结成简要报告并列出信息来源`;
42
+ try {
43
+ const data = await fetchWithRetry(() => fetchJson(url, {
44
+ method: 'POST',
45
+ headers: {
46
+ 'Content-Type': 'application/json',
47
+ Authorization: `Bearer ${apiKey}`,
48
+ },
49
+ body: JSON.stringify({
50
+ model,
51
+ messages: [{ role: 'user', content: prompt }],
52
+ enable_search: true,
53
+ stream: false,
54
+ }),
55
+ }), 1, // 重试 1 次(共 2 次)
56
+ 2000);
57
+ if (!data.choices || data.choices.length === 0) {
58
+ console.warn(`[sentiment] DashScope 返回空 choices (${code} ${name})`);
59
+ return { report: '舆情搜索返回空结果', sources: [] };
60
+ }
61
+ const content = data.choices[0].message?.content || '';
62
+ // 从返回内容中提取可能的来源 URL
63
+ const urlRegex = /https?:\/\/[^\s,。、\n'"))]+/g;
64
+ const sources = content.match(urlRegex) || [];
65
+ return { report: content, sources };
66
+ }
67
+ catch (err) {
68
+ const message = err instanceof Error ? err.message : String(err);
69
+ console.warn(`[sentiment] 舆情搜索失败 (${code} ${name}): ${message}`);
70
+ return {
71
+ report: `舆情搜索失败: ${message}`,
72
+ sources: [],
73
+ };
74
+ }
75
+ }
76
+ //# sourceMappingURL=sentiment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentiment.js","sourceRoot":"","sources":["../../src/services/sentiment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAqBpE,kEAAkE;AAElE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAAY;IAEZ,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO;YACL,MAAM,EAAE,gCAAgC;YACxC,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GACX,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,mDAAmD,CAAC;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,eAAe,CAAC;IAC7D,MAAM,GAAG,GAAG,GAAG,OAAO,mBAAmB,CAAC;IAE1C,MAAM,MAAM,GAAG,MAAM,IAAI,IAAI,IAAI,kCAAkC,CAAC;IAEpE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAC/B,GAAG,EAAE,CACH,SAAS,CACP,GAAG,EACH;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC7C,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,KAAK;aACd,CAAC;SACH,CACF,EACH,CAAC,EAAI,gBAAgB;QACrB,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,sCAAsC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;YACpE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QAEvD,oBAAoB;QACpB,MAAM,QAAQ,GAAG,6BAA6B,CAAC;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE9C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC;QACjE,OAAO;YACL,MAAM,EAAE,WAAW,OAAO,EAAE;YAC5B,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * LLM 会话管理(运行时内存存储)
3
+ *
4
+ * 管理多角色 LLM 分析过程中的会话状态。
5
+ * 每个会话存储一系列消息,支持自动裁剪以避免超出上下文窗口。
6
+ * 会话数据不持久化,仅在内存中维护。
7
+ *
8
+ * @module services/session
9
+ */
10
+ /**
11
+ * 单条消息结构。
12
+ */
13
+ export interface SessionMessage {
14
+ /** 消息来源角色,如 'user'、'assistant'、'system' 或具体角色名 */
15
+ role: string;
16
+ /** 消息文本内容 */
17
+ content: string;
18
+ }
19
+ /**
20
+ * 会话结构。
21
+ */
22
+ export interface Session {
23
+ /** 会话唯一标识 */
24
+ id: string;
25
+ /** 创建时间 ISO 字符串 */
26
+ createdAt: string;
27
+ /** 消息列表 */
28
+ messages: SessionMessage[];
29
+ }
30
+ /**
31
+ * 创建一个新的空会话并将其设为当前会话。
32
+ *
33
+ * @returns 新会话的 ID
34
+ *
35
+ * @example
36
+ * const sessionId = createSession();
37
+ * console.log(sessionId); // 'a1b2c3d4'
38
+ */
39
+ export declare function createSession(): string;
40
+ /**
41
+ * 切换到指定会话作为当前会话。
42
+ * 如果指定 ID 不存在则会自动创建新会话。
43
+ *
44
+ * @param sessionId - 目标会话 ID
45
+ * @returns 包含当前会话 ID 和上一个会话 ID 的对象
46
+ *
47
+ * @example
48
+ * const { sessionId, previousId } = switchSession('a1b2c3d4');
49
+ * // 如果之前有活动会话,previousId 是其 ID
50
+ */
51
+ export declare function switchSession(sessionId: string): {
52
+ sessionId: string;
53
+ previousId?: string;
54
+ };
55
+ /**
56
+ * 向指定会话追加一条消息。
57
+ * 如果会话消息数超过 MAX_MESSAGES,自动裁剪最早的非系统消息。
58
+ *
59
+ * @param sessionId - 目标会话 ID
60
+ * @param role - 消息角色
61
+ * @param content - 消息内容
62
+ *
63
+ * @example
64
+ * appendMessage('a1b2c3d4', 'user', '分析贵州茅台');
65
+ * appendMessage('a1b2c3d4', 'assistant', '贵州茅台最新股价...');
66
+ */
67
+ export declare function appendMessage(sessionId: string, role: string, content: string): void;
68
+ /**
69
+ * 获取指定会话的完整数据。
70
+ *
71
+ * @param sessionId - 会话 ID
72
+ * @returns 会话对象,不存在返回 undefined
73
+ *
74
+ * @example
75
+ * const session = getSession('a1b2c3d4');
76
+ * if (session) console.log(session.messages.length);
77
+ */
78
+ export declare function getSession(sessionId: string): Session | undefined;
79
+ /**
80
+ * 列出所有已创建的会话(摘要信息)。
81
+ *
82
+ * @returns 会话摘要列表,包含 id 和 createdAt
83
+ *
84
+ * @example
85
+ * const list = listSessions();
86
+ * list.forEach(s => console.log(s.id, s.createdAt));
87
+ */
88
+ export declare function listSessions(): {
89
+ id: string;
90
+ createdAt: string;
91
+ }[];
92
+ /**
93
+ * 获取当前激活的会话。
94
+ *
95
+ * @returns 当前会话对象,无活动会话时返回 undefined
96
+ *
97
+ * @example
98
+ * const session = getCurrentSession();
99
+ * if (session) console.log(session.id);
100
+ */
101
+ export declare function getCurrentSession(): Session | undefined;
102
+ /**
103
+ * 清空会话消息。
104
+ *
105
+ * - 不指定 sessionId:清空所有会话(重置整个内存存储)
106
+ * - 指定 sessionId:仅清空该会话的消息列表(会话保留)
107
+ *
108
+ * @param sessionId - 可选的目标会话 ID
109
+ *
110
+ * @example
111
+ * // 清空特定会话
112
+ * clearSession('a1b2c3d4');
113
+ * // 清空全部
114
+ * clearSession();
115
+ */
116
+ export declare function clearSession(sessionId?: string): void;
117
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/services/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,aAAa;IACb,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAUtC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAeA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,IAAI,CAqBN;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,IAAI;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,CAKlE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,GAAG,SAAS,CAGvD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAUrD"}