speccore 6.72.0 → 6.74.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.
@@ -0,0 +1,531 @@
1
+ "use strict";
2
+ /**
3
+ * ai-impact-analyzer — AI 影响分析器(v6.73.0)
4
+ *
5
+ * 分层 AI + 知识图谱联动的变更影响分析引擎:
6
+ * 1. 检索层(零 LLM 成本): unifiedSearch 语义检索 + 知识图谱查询
7
+ * 2. 推理层(1 次 LLM 调用): 将检索结果送入 LLM,输出结构化影响分析
8
+ * 3. 生成层(合并到同 1 次 LLM 调用): 生成 CHANGE_TODO / 代码变更清单
9
+ *
10
+ * 降级策略:LLM 不可用时,回退到基于规则的分级(语义相关度阈值)
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.semanticImpactAnalysis = semanticImpactAnalysis;
14
+ exports.analyzeWithKnowledgeGraph = analyzeWithKnowledgeGraph;
15
+ exports.groupByTask = groupByTask;
16
+ exports.classifyByThreshold = classifyByThreshold;
17
+ exports.aiImpactAnalysis = aiImpactAnalysis;
18
+ exports.generateChangeTodo = generateChangeTodo;
19
+ const logger_1 = require("../utils/logger");
20
+ const unified_retrieval_1 = require("./unified-retrieval");
21
+ const knowledge_graph_1 = require("./knowledge-graph");
22
+ // ── 1. 检索层(零 LLM 成本)──
23
+ /**
24
+ * 语义检索:替代关键词匹配,使用 unifiedSearch 做真正的语义检索
25
+ */
26
+ async function semanticImpactAnalysis(desc, iteration, options = {}) {
27
+ const cwd = process.cwd();
28
+ // 1. 文档语义检索(迭代级)
29
+ const docResult = await (0, unified_retrieval_1.unifiedSearch)(cwd, {
30
+ query: desc,
31
+ iteration,
32
+ });
33
+ // 2. 代码语义检索(如果 withCode)
34
+ let codeResult = null;
35
+ if (options.withCode) {
36
+ codeResult = await (0, unified_retrieval_1.unifiedSearch)(cwd, {
37
+ query: desc,
38
+ iteration,
39
+ sourceScope: 'code',
40
+ });
41
+ }
42
+ logger_1.logger.debug(`语义检索: 文档 ${docResult.stats.docChunksFound} chunks, 代码 ${codeResult?.stats.codeSlicesFound || 0} slices`);
43
+ return { docResult, codeResult };
44
+ }
45
+ /**
46
+ * 知识图谱查询:获取变更相关的实体和关联关系
47
+ */
48
+ async function analyzeWithKnowledgeGraph(desc, iteration, matchedTaskIds) {
49
+ const graph = await (0, knowledge_graph_1.loadKnowledgeGraph)(process.cwd());
50
+ if (!graph) {
51
+ logger_1.logger.debug('知识图谱未构建,跳过图谱分析');
52
+ return { entities: [], relations: [] };
53
+ }
54
+ const entities = [];
55
+ const relations = [];
56
+ const seen = new Set();
57
+ // 1. 找到与匹配任务相关的实体
58
+ for (const taskId of matchedTaskIds) {
59
+ const entity = graph.entities[taskId];
60
+ if (!entity || seen.has(taskId))
61
+ continue;
62
+ entities.push(entity);
63
+ seen.add(taskId);
64
+ // 2. 获取 1-hop 邻居关系
65
+ for (const rel of graph.relations) {
66
+ if (rel.from === taskId || rel.to === taskId) {
67
+ relations.push(rel);
68
+ // 3. 获取关联实体
69
+ const otherId = rel.from === taskId ? rel.to : rel.from;
70
+ if (!seen.has(otherId) && graph.entities[otherId]) {
71
+ entities.push(graph.entities[otherId]);
72
+ seen.add(otherId);
73
+ }
74
+ }
75
+ }
76
+ }
77
+ logger_1.logger.debug(`知识图谱: ${entities.length} 实体, ${relations.length} 关系`);
78
+ return { entities, relations };
79
+ }
80
+ /**
81
+ * 按任务分组,计算语义相关度
82
+ */
83
+ function groupByTask(docResult, allTasks) {
84
+ const taskMap = new Map();
85
+ for (const chunk of docResult.documentChunks) {
86
+ // 从 chunk.filePath 提取任务 ID
87
+ const taskIdMatch = chunk.filePath.match(/(Task-\d+)/);
88
+ if (!taskIdMatch)
89
+ continue;
90
+ const taskId = taskIdMatch[1];
91
+ const taskInfo = allTasks.find(t => t.id === taskId);
92
+ if (!taskMap.has(taskId)) {
93
+ taskMap.set(taskId, {
94
+ taskId,
95
+ taskName: taskInfo?.name || taskId,
96
+ status: taskInfo?.status || 'unknown',
97
+ score: chunk.relevanceScore || 0,
98
+ matchedContext: chunk.content.slice(0, 200),
99
+ files: [chunk.filePath],
100
+ });
101
+ }
102
+ else {
103
+ const existing = taskMap.get(taskId);
104
+ existing.score = Math.max(existing.score, chunk.relevanceScore || 0);
105
+ if (!existing.files.includes(chunk.filePath)) {
106
+ existing.files.push(chunk.filePath);
107
+ }
108
+ }
109
+ }
110
+ // 按相关度排序
111
+ return Array.from(taskMap.values()).sort((a, b) => b.score - a.score);
112
+ }
113
+ /**
114
+ * 基于相关度阈值分类任务影响级别
115
+ * 降级策略:LLM 不可用时使用
116
+ */
117
+ function classifyByThreshold(matches, graphContent) {
118
+ const direct = [];
119
+ const indirect = [];
120
+ for (const match of matches) {
121
+ if (match.score >= 0.75) {
122
+ direct.push(match);
123
+ }
124
+ else if (match.score >= 0.40) {
125
+ indirect.push(match);
126
+ }
127
+ }
128
+ const affectedIds = new Set([...direct.map(d => d.taskId), ...indirect.map(i => i.taskId)]);
129
+ const unaffected = matches.filter(m => !affectedIds.has(m.taskId));
130
+ return { direct, indirect, unaffected };
131
+ }
132
+ // ── 2. 推理层 + 生成层(LLM 1 次调用)──
133
+ /**
134
+ * AI 影响分析主入口
135
+ * 合并检索 → LLM 推理 → 生成实施计划 为一次调用
136
+ *
137
+ * 降级:LLM 不可用时返回基于阈值的分类结果
138
+ */
139
+ async function aiImpactAnalysis(desc, category, iteration, allTasks, options = {}) {
140
+ const cwd = process.cwd();
141
+ // Step 1: 语义检索
142
+ const { docResult, codeResult } = await semanticImpactAnalysis(desc, iteration, options);
143
+ // Step 2: 按任务分组
144
+ const taskMatches = groupByTask(docResult, allTasks);
145
+ // Step 3: 知识图谱查询
146
+ const topTaskIds = taskMatches.slice(0, 8).map(m => m.taskId);
147
+ const kgResult = await analyzeWithKnowledgeGraph(desc, iteration, topTaskIds);
148
+ // Step 4: LLM 分析(如果启用且可用)
149
+ if (options.useLlm !== false) {
150
+ try {
151
+ const llmResult = await callLlmForImpactAnalysis(desc, category, taskMatches, codeResult, kgResult);
152
+ if (llmResult) {
153
+ return llmResult;
154
+ }
155
+ }
156
+ catch (e) {
157
+ logger_1.logger.warn(`LLM 分析失败,降级到规则引擎: ${e.message}`);
158
+ }
159
+ }
160
+ // 降级:基于阈值的规则分类
161
+ logger_1.logger.info('🔄 使用规则引擎进行影响分析(语义检索 + 阈值分级)');
162
+ const classified = classifyByThreshold(taskMatches, '');
163
+ return {
164
+ thinking: '基于语义检索相关度阈值分类(LLM 不可用时的降级策略)',
165
+ taskImpacts: classified,
166
+ codeImpacts: [],
167
+ globalImpacts: inferGlobalImpacts(category),
168
+ crossIterationImpacts: [],
169
+ executionPlan: {
170
+ steps: [`基于规则分析: ${classified.direct.length} 个直接受影响任务需更新`, `${classified.indirect.length} 个间接影响任务需回归验证`],
171
+ regressionTests: classified.indirect.map(i => `验证 ${i.taskId} 是否受影响`),
172
+ globalRefreshSuggestions: inferGlobalImpacts(category).map(g => g.suggestedAction),
173
+ },
174
+ };
175
+ }
176
+ /**
177
+ * 调用 LLM 进行影响分析和实施计划生成
178
+ */
179
+ async function callLlmForImpactAnalysis(desc, category, taskMatches, codeResult, kgResult) {
180
+ const prompt = buildImpactAnalysisPrompt(desc, category, taskMatches, codeResult, kgResult);
181
+ const response = await callLlm(prompt);
182
+ if (!response)
183
+ return null;
184
+ return parseImpactAnalysisResponse(response);
185
+ }
186
+ /**
187
+ * 构建影响分析 Prompt
188
+ */
189
+ function buildImpactAnalysisPrompt(desc, category, taskMatches, codeResult, kgResult) {
190
+ const sections = [];
191
+ sections.push('你是一位资深软件架构师,正在分析一个需求变更的影响范围。');
192
+ sections.push('');
193
+ // 变更描述
194
+ sections.push('## 变更描述');
195
+ sections.push(desc);
196
+ sections.push('');
197
+ // 意图分类
198
+ sections.push('## 意图分类');
199
+ sections.push(`- 类别: ${category}`);
200
+ sections.push('');
201
+ // 语义检索到的相关任务
202
+ sections.push('## 检索到的相关任务(按相关度排序)');
203
+ for (const m of taskMatches.slice(0, 10)) {
204
+ sections.push(`- ${m.taskId} [相关度 ${(m.score * 100).toFixed(0)}%] — ${m.taskName} [状态: ${m.status}]`);
205
+ sections.push(` 匹配上下文: ${m.matchedContext.slice(0, 100)}`);
206
+ }
207
+ sections.push('');
208
+ // 代码检索结果
209
+ if (codeResult && codeResult.codeSlices.length > 0) {
210
+ sections.push('## 检索到的相关代码');
211
+ for (const slice of codeResult.codeSlices.slice(0, 8)) {
212
+ sections.push(`- ${slice.filePath}`);
213
+ sections.push(` \`\`\`${slice.body.slice(0, 200)}\`\`\``);
214
+ }
215
+ sections.push('');
216
+ }
217
+ // 知识图谱关联
218
+ if (kgResult.entities.length > 0) {
219
+ sections.push('## 知识图谱关联');
220
+ for (const rel of kgResult.relations.slice(0, 10)) {
221
+ const from = kgResult.entities.find(e => e.id === rel.from);
222
+ const to = kgResult.entities.find(e => e.id === rel.to);
223
+ sections.push(`- ${from?.title || rel.from} --[${rel.type}]--> ${to?.title || rel.to}`);
224
+ }
225
+ sections.push('');
226
+ }
227
+ // 输出要求
228
+ sections.push('## 你的任务');
229
+ sections.push('请分析这个变更的影响范围,输出 JSON 格式。注意:');
230
+ sections.push('1. 只输出 JSON,不要其他内容');
231
+ sections.push('2. 基于证据判断,confidence 必须合理');
232
+ sections.push('3. 如果信息不足,标注 "insufficient_data"');
233
+ sections.push('4. 代码级影响需给出具体文件名和变更建议');
234
+ sections.push('');
235
+ sections.push('```json');
236
+ sections.push('{');
237
+ sections.push(' "thinking": "你的推理过程(中文)",');
238
+ sections.push(' "taskImpacts": {');
239
+ sections.push(' "direct": [{ "taskId": "Task-001", "taskName": "名称", "score": 0.92, "reason": "为什么直接影响", "files": ["REQ.md"] }],');
240
+ sections.push(' "indirect": [{ "taskId": "Task-005", "taskName": "名称", "score": 0.45, "reason": "为什么间接影响" }],');
241
+ sections.push(' "unaffected": []');
242
+ sections.push(' },');
243
+ sections.push(' "codeImpacts": [');
244
+ sections.push(' { "file": "User.java", "currentImplementation": "phone: String(11)", "suggestedChange": "phone: String(20); countryCode: String(5)", "reason": "字段长度需要扩展" }');
245
+ sections.push(' ],');
246
+ sections.push(' "globalImpacts": [');
247
+ sections.push(' { "artifact": "API_CONTRACT.yaml", "reason": "phone 字段格式定义需更新", "suggestedAction": "运行 speccore analyze --global --withCode" }');
248
+ sections.push(' ],');
249
+ sections.push(' "crossIterationImpacts": [],');
250
+ sections.push(' "executionPlan": {');
251
+ sections.push(' "steps": ["更新 Task-001 的 REQ.md", "修改 User.java 字段定义"],');
252
+ sections.push(' "regressionTests": ["验证 Task-005 注册流程"],');
253
+ sections.push(' "globalRefreshSuggestions": ["刷新 API_CONTRACT.yaml"]');
254
+ sections.push(' }');
255
+ sections.push('}');
256
+ sections.push('```');
257
+ return sections.join('\n');
258
+ }
259
+ // ── LLM 调用 ──
260
+ /**
261
+ * 调用 LLM
262
+ * 复制自 ask-llm.ts 的 callLlm,适配本模块的 prompt 格式
263
+ */
264
+ async function callLlm(userPrompt) {
265
+ const systemPrompt = '你是 SpecCore CLI 的资深架构师助手,擅长分析软件变更的影响范围。请基于提供的检索结果和知识图谱,给出精确的影响分析。只输出 JSON,不要解释。';
266
+ // 方案1: OpenAI 兼容接口
267
+ const endpoint = process.env.SPECCORE_LLM_ENDPOINT || 'https://api.openai.com/v1/chat/completions';
268
+ const apiKey = process.env.SPECCORE_LLM_KEY || process.env.OPENAI_API_KEY;
269
+ if (!apiKey) {
270
+ logger_1.logger.debug('未配置 LLM API Key,跳过 LLM 分析');
271
+ return null;
272
+ }
273
+ try {
274
+ const res = await fetch(endpoint, {
275
+ method: 'POST',
276
+ headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${apiKey}` },
277
+ body: JSON.stringify({
278
+ model: process.env.SPECCORE_LLM_MODEL || 'gpt-4o-mini',
279
+ messages: [
280
+ { role: 'system', content: systemPrompt },
281
+ { role: 'user', content: userPrompt },
282
+ ],
283
+ temperature: 0.2,
284
+ max_tokens: 3000,
285
+ }),
286
+ });
287
+ if (!res.ok) {
288
+ logger_1.logger.debug(`LLM API 返回错误: ${res.status}`);
289
+ return null;
290
+ }
291
+ const data = await res.json();
292
+ return data?.choices?.[0]?.message?.content || null;
293
+ }
294
+ catch (e) {
295
+ logger_1.logger.debug(`LLM 调用失败: ${e.message}`);
296
+ return null;
297
+ }
298
+ }
299
+ /**
300
+ * 解析 LLM 返回的影响分析 JSON
301
+ */
302
+ function parseImpactAnalysisResponse(response) {
303
+ try {
304
+ // 尝试直接解析
305
+ const parsed = JSON.parse(response);
306
+ return normalizeAnalysisResult(parsed);
307
+ }
308
+ catch {
309
+ // 尝试提取 JSON 块
310
+ const match = response.match(/\{[\s\S]*\}/);
311
+ if (match) {
312
+ try {
313
+ const parsed = JSON.parse(match[0]);
314
+ return normalizeAnalysisResult(parsed);
315
+ }
316
+ catch { }
317
+ }
318
+ }
319
+ return null;
320
+ }
321
+ /**
322
+ * 规范化分析结果(处理 LLM 可能的不一致输出)
323
+ */
324
+ function normalizeAnalysisResult(parsed) {
325
+ return {
326
+ thinking: String(parsed.thinking || 'AI 推理过程未提供'),
327
+ taskImpacts: {
328
+ direct: (parsed.taskImpacts?.direct || []).map((t) => ({
329
+ taskId: String(t.taskId || t.id || ''),
330
+ taskName: String(t.taskName || t.name || ''),
331
+ status: String(t.status || 'unknown'),
332
+ score: Number(t.score || 0.8),
333
+ matchedContext: String(t.reason || ''),
334
+ files: Array.isArray(t.files) ? t.files : [],
335
+ })),
336
+ indirect: (parsed.taskImpacts?.indirect || []).map((t) => ({
337
+ taskId: String(t.taskId || t.id || ''),
338
+ taskName: String(t.taskName || t.name || ''),
339
+ status: String(t.status || 'unknown'),
340
+ score: Number(t.score || 0.5),
341
+ matchedContext: String(t.reason || ''),
342
+ files: Array.isArray(t.files) ? t.files : [],
343
+ })),
344
+ unaffected: (parsed.taskImpacts?.unaffected || []).map((t) => ({
345
+ taskId: String(t.taskId || t.id || ''),
346
+ taskName: String(t.taskName || t.name || ''),
347
+ status: String(t.status || 'unknown'),
348
+ score: Number(t.score || 0),
349
+ matchedContext: '',
350
+ files: [],
351
+ })),
352
+ },
353
+ codeImpacts: (parsed.codeImpacts || []).map((c) => ({
354
+ file: String(c.file || ''),
355
+ currentImplementation: String(c.currentImplementation || c.current || ''),
356
+ suggestedChange: String(c.suggestedChange || c.suggested || ''),
357
+ reason: String(c.reason || ''),
358
+ platform: c.platform ? String(c.platform) : undefined,
359
+ })),
360
+ globalImpacts: (parsed.globalImpacts || []).map((g) => ({
361
+ artifact: String(g.artifact || ''),
362
+ reason: String(g.reason || ''),
363
+ suggestedAction: String(g.suggestedAction || g.action || ''),
364
+ })),
365
+ crossIterationImpacts: (parsed.crossIterationImpacts || []).map((c) => ({
366
+ iteration: String(c.iteration || ''),
367
+ taskId: String(c.taskId || ''),
368
+ reason: String(c.reason || ''),
369
+ severity: (c.severity === 'critical' ? 'critical' : 'warning'),
370
+ })),
371
+ executionPlan: {
372
+ steps: Array.isArray(parsed.executionPlan?.steps) ? parsed.executionPlan.steps.map(String) : [],
373
+ regressionTests: Array.isArray(parsed.executionPlan?.regressionTests) ? parsed.executionPlan.regressionTests.map(String) : [],
374
+ globalRefreshSuggestions: Array.isArray(parsed.executionPlan?.globalRefreshSuggestions) ? parsed.executionPlan.globalRefreshSuggestions.map(String) : [],
375
+ },
376
+ };
377
+ }
378
+ // ── 辅助函数 ──
379
+ /**
380
+ * 根据变更类别推断全局层影响(规则层,零成本)
381
+ */
382
+ function inferGlobalImpacts(category) {
383
+ const impacts = [];
384
+ switch (category) {
385
+ case 'field-change':
386
+ impacts.push({
387
+ artifact: 'API_CONTRACT.yaml',
388
+ reason: '字段类型/长度/格式变更需同步到接口契约',
389
+ suggestedAction: '运行 speccore analyze --global --withCode',
390
+ });
391
+ impacts.push({
392
+ artifact: 'CONSISTENCY_CHECK.md',
393
+ reason: '前后端字段定义需保持一致',
394
+ suggestedAction: '运行 speccore analyze --global --focus consistency',
395
+ });
396
+ break;
397
+ case 'api-change':
398
+ impacts.push({
399
+ artifact: 'API_CONTRACT.yaml',
400
+ reason: '接口 URL/参数/返回值变更',
401
+ suggestedAction: '运行 speccore analyze --global --withCode',
402
+ });
403
+ impacts.push({
404
+ artifact: 'FUNCTION_MAP.md',
405
+ reason: '接口列表变更',
406
+ suggestedAction: '运行 speccore analyze --global',
407
+ });
408
+ break;
409
+ case 'flow-change':
410
+ impacts.push({
411
+ artifact: '各端 TECH.md',
412
+ reason: '流程顺序变更可能影响多端',
413
+ suggestedAction: '检查各端 TECH.md 中的流程描述',
414
+ });
415
+ break;
416
+ case 'ui-change':
417
+ impacts.push({
418
+ artifact: 'COMPONENT_TREE.md',
419
+ reason: 'UI 组件变更',
420
+ suggestedAction: '更新前端组件树文档',
421
+ });
422
+ break;
423
+ case 'logic-change':
424
+ impacts.push({
425
+ artifact: '各端 TEST.md',
426
+ reason: '业务逻辑变更需同步测试用例',
427
+ suggestedAction: '检查各端测试文档',
428
+ });
429
+ break;
430
+ case 'config-change':
431
+ impacts.push({
432
+ artifact: 'ARCHITECTURE.md',
433
+ reason: '配置项变更需记录到架构文档',
434
+ suggestedAction: '更新架构配置说明',
435
+ });
436
+ break;
437
+ case 'feature':
438
+ impacts.push({
439
+ artifact: 'FUNCTION_MAP.md',
440
+ reason: '新增功能单元',
441
+ suggestedAction: '追加新功能单元到 FUNCTION_MAP',
442
+ });
443
+ impacts.push({
444
+ artifact: 'REQUIREMENT.md',
445
+ reason: '新增需求章节',
446
+ suggestedAction: '追加需求描述到 REQUIREMENT.md',
447
+ });
448
+ break;
449
+ }
450
+ return impacts;
451
+ }
452
+ /**
453
+ * 生成 CHANGE_TODO.md 内容
454
+ */
455
+ function generateChangeTodo(changeDesc, category, analysis, changeId) {
456
+ const lines = [];
457
+ const now = new Date().toISOString().split('T')[0];
458
+ lines.push(`# 变更实施清单: ${changeId || 'Change-XXX'}`);
459
+ lines.push('');
460
+ lines.push('## 变更描述');
461
+ lines.push(changeDesc);
462
+ lines.push('');
463
+ lines.push('## 意图分类');
464
+ lines.push(`- 类型: ${analysis.taskImpacts.direct.length > 0 ? 'change' : 'new'}`);
465
+ lines.push(`- 类别: ${category}`);
466
+ lines.push('');
467
+ // 影响分析
468
+ if (analysis.taskImpacts.direct.length > 0) {
469
+ lines.push(`## 直接影响任务(${analysis.taskImpacts.direct.length} 个)`);
470
+ lines.push('');
471
+ lines.push('| 任务 | 相关度 | 需要更新 | 代码需改 | 优先级 |');
472
+ lines.push('| :--- | :--- | :--- | :--- | :--- |');
473
+ for (const t of analysis.taskImpacts.direct) {
474
+ const hasCode = analysis.codeImpacts.some(c => c.file.includes(t.taskId));
475
+ lines.push(`| ${t.taskId} ${t.taskName} | ${(t.score * 100).toFixed(0)}% | 是 | ${hasCode ? '是' : '否'} | P0 |`);
476
+ }
477
+ lines.push('');
478
+ }
479
+ if (analysis.taskImpacts.indirect.length > 0) {
480
+ lines.push(`## 间接影响任务(${analysis.taskImpacts.indirect.length} 个)`);
481
+ lines.push('');
482
+ lines.push('| 任务 | 相关度 | 需要更新 | 代码需改 | 优先级 |');
483
+ lines.push('| :--- | :--- | :--- | :--- | :--- |');
484
+ for (const t of analysis.taskImpacts.indirect) {
485
+ lines.push(`| ${t.taskId} ${t.taskName} | ${(t.score * 100).toFixed(0)}% | 检查 | 否 | P1 |`);
486
+ }
487
+ lines.push('');
488
+ }
489
+ // 全局层刷新项
490
+ if (analysis.globalImpacts.length > 0) {
491
+ lines.push('## 全局层刷新项');
492
+ lines.push('');
493
+ for (const g of analysis.globalImpacts) {
494
+ lines.push(`- [ ] \`${g.artifact}\` — ${g.reason}`);
495
+ lines.push(` - 建议: ${g.suggestedAction}`);
496
+ }
497
+ lines.push('');
498
+ }
499
+ // 代码级变更项
500
+ if (analysis.codeImpacts.length > 0) {
501
+ lines.push('## 代码级变更项');
502
+ lines.push('');
503
+ lines.push('| 文件 | 当前实现 | AI 建议变更 | 优先级 |');
504
+ lines.push('| :--- | :--- | :--- | :--- |');
505
+ for (const c of analysis.codeImpacts) {
506
+ lines.push(`| \`${c.file}\` | ${c.currentImplementation.slice(0, 40)} | ${c.suggestedChange.slice(0, 60)} | P0 |`);
507
+ }
508
+ lines.push('');
509
+ }
510
+ // 回归验证项
511
+ if (analysis.executionPlan.regressionTests.length > 0) {
512
+ lines.push('## 回归验证项');
513
+ lines.push('');
514
+ for (const test of analysis.executionPlan.regressionTests) {
515
+ lines.push(`- [ ] ${test}`);
516
+ }
517
+ lines.push('');
518
+ }
519
+ // 实施步骤
520
+ if (analysis.executionPlan.steps.length > 0) {
521
+ lines.push('## 实施步骤');
522
+ lines.push('');
523
+ for (let i = 0; i < analysis.executionPlan.steps.length; i++) {
524
+ lines.push(`${i + 1}. ${analysis.executionPlan.steps[i]}`);
525
+ }
526
+ lines.push('');
527
+ }
528
+ lines.push(`---\n*生成时间: ${now} by SpecCore AI Impact Analyzer v6.73.0*`);
529
+ return lines.join('\n');
530
+ }
531
+ //# sourceMappingURL=ai-impact-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-impact-analyzer.js","sourceRoot":"","sources":["../../src/core/ai-impact-analyzer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AA4EH,wDA0BC;AAKD,8DAyCC;AAKD,kCAkCC;AAMD,kDAmBC;AAUD,4CA+CC;AA0TD,gDAyFC;AA5pBD,4CAAyC;AACzC,2DAAmE;AACnE,uDAAmG;AAiEnG,wBAAwB;AAExB;;GAEG;AACI,KAAK,UAAU,sBAAsB,CAC1C,IAAY,EACZ,SAAiB,EACjB,UAAkC,EAAE;IAEpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,iBAAiB;IACjB,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAa,EAAC,GAAG,EAAE;QACzC,KAAK,EAAE,IAAI;QACX,SAAS;KACV,CAAC,CAAC;IAEH,yBAAyB;IACzB,IAAI,UAAU,GAAyB,IAAI,CAAC;IAC5C,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,UAAU,GAAG,MAAM,IAAA,iCAAa,EAAC,GAAG,EAAE;YACpC,KAAK,EAAE,IAAI;YACX,SAAS;YACT,WAAW,EAAE,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,YAAY,SAAS,CAAC,KAAK,CAAC,cAAc,eAAe,UAAU,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC;IAEvH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,yBAAyB,CAC7C,IAAY,EACZ,SAAiB,EACjB,cAAwB;IAExB,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAkB,EAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,eAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC/B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,kBAAkB;IAClB,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAE1C,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEjB,mBAAmB;QACnB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;gBAC7C,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEpB,YAAY;gBACZ,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;gBACxD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAClD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBACvC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,eAAM,CAAC,KAAK,CAAC,SAAS,QAAQ,CAAC,MAAM,QAAQ,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;IAEpE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,SAAwB,EACxB,QAAwD;IAExD,MAAM,OAAO,GAAG,IAAI,GAAG,EAA6B,CAAC;IAErD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QAC7C,2BAA2B;QAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;gBAClB,MAAM;gBACN,QAAQ,EAAE,QAAQ,EAAE,IAAI,IAAI,MAAM;gBAClC,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,SAAS;gBACrC,KAAK,EAAE,KAAK,CAAC,cAAc,IAAI,CAAC;gBAChC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC3C,KAAK,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;aACxB,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;YACtC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7C,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS;IACT,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CACjC,OAA4B,EAC5B,YAAoB;IAEpB,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAwB,EAAE,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC/B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC;AAED,+BAA+B;AAE/B;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CACpC,IAAY,EACZ,QAAwB,EACxB,SAAiB,EACjB,QAAwD,EACxD,UAAoD,EAAE;IAEtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,eAAe;IACf,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,MAAM,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEzF,gBAAgB;IAChB,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAErD,iBAAiB;IACjB,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAE9E,0BAA0B;IAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;YACpG,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,eAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,eAAe;IACf,eAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,mBAAmB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAExD,OAAO;QACL,QAAQ,EAAE,8BAA8B;QACxC,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,kBAAkB,CAAC,QAAQ,CAAC;QAC3C,qBAAqB,EAAE,EAAE;QACzB,aAAa,EAAE;YACb,KAAK,EAAE,CAAC,WAAW,UAAU,CAAC,MAAM,CAAC,MAAM,cAAc,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,eAAe,CAAC;YACxG,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,QAAQ,CAAC;YACrE,wBAAwB,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;SACnF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,wBAAwB,CACrC,IAAY,EACZ,QAAwB,EACxB,WAAgC,EAChC,UAAgC,EAChC,QAAiE;IAEjE,MAAM,MAAM,GAAG,yBAAyB,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE5F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,OAAO,2BAA2B,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,IAAY,EACZ,QAAwB,EACxB,WAAgC,EAChC,UAAgC,EAChC,QAAiE;IAEjE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,OAAO;IACP,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,OAAO;IACP,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,aAAa;IACb,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACtG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,SAAS;IACT,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,SAAS;IACT,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,IAAI,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,OAAO;IACP,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAC3C,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,sHAAsH,CAAC,CAAC;IACtI,QAAQ,CAAC,IAAI,CAAC,mGAAmG,CAAC,CAAC;IACnH,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,iKAAiK,CAAC,CAAC;IACjL,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,oIAAoI,CAAC,CAAC;IACpJ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC7E,QAAQ,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC1E,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAErB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,eAAe;AAEf;;;GAGG;AACH,KAAK,UAAU,OAAO,CAAC,UAAkB;IACvC,MAAM,YAAY,GAAG,iFAAiF,CAAC;IAEvG,mBAAmB;IACnB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,4CAA4C,CAAC;IACnG,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAE1E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,eAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,UAAU,MAAM,EAAE,EAAE;YACpF,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,aAAa;gBACtD,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;oBACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;iBACtC;gBACD,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,IAAI;aACjB,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,eAAM,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAQ,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;IACtD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,eAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,2BAA2B,CAAC,QAAgB;IACnD,IAAI,CAAC;QACH,SAAS;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;QACd,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,MAAW;IAC1C,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC;QACjD,WAAW,EAAE;YACX,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAC1D,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACtC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC5C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;gBACrC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;gBAC7B,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBACtC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;aAC7C,CAAC,CAAC;YACH,QAAQ,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAC9D,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACtC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC5C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;gBACrC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC;gBAC7B,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBACtC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;aAC7C,CAAC,CAAC;YACH,UAAU,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBAClE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;gBACtC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC5C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC;gBACrC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC3B,cAAc,EAAE,EAAE;gBAClB,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;SACJ;QACD,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC1B,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YACzE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;YAC/D,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YAC9B,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SACtD,CAAC,CAAC;QACH,aAAa,EAAE,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC3D,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YAC9B,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;SAC7D,CAAC,CAAC;QACH,qBAAqB,EAAE,CAAC,MAAM,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YAC3E,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;YACpC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;YAC9B,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAA2B;SACzF,CAAC,CAAC;QACH,aAAa,EAAE;YACb,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/F,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7H,wBAAwB,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;SACzJ;KACF,CAAC;AACJ,CAAC;AAED,aAAa;AAEb;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAAwB;IAClD,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,cAAc;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,mBAAmB;gBAC7B,MAAM,EAAE,sBAAsB;gBAC9B,eAAe,EAAE,yCAAyC;aAC3D,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,sBAAsB;gBAChC,MAAM,EAAE,cAAc;gBACtB,eAAe,EAAE,kDAAkD;aACpE,CAAC,CAAC;YACH,MAAM;QACR,KAAK,YAAY;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,mBAAmB;gBAC7B,MAAM,EAAE,iBAAiB;gBACzB,eAAe,EAAE,yCAAyC;aAC3D,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,iBAAiB;gBAC3B,MAAM,EAAE,QAAQ;gBAChB,eAAe,EAAE,8BAA8B;aAChD,CAAC,CAAC;YACH,MAAM;QACR,KAAK,aAAa;YAChB,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,cAAc;gBACtB,eAAe,EAAE,qBAAqB;aACvC,CAAC,CAAC;YACH,MAAM;QACR,KAAK,WAAW;YACd,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,mBAAmB;gBAC7B,MAAM,EAAE,SAAS;gBACjB,eAAe,EAAE,WAAW;aAC7B,CAAC,CAAC;YACH,MAAM;QACR,KAAK,cAAc;YACjB,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,YAAY;gBACtB,MAAM,EAAE,eAAe;gBACvB,eAAe,EAAE,UAAU;aAC5B,CAAC,CAAC;YACH,MAAM;QACR,KAAK,eAAe;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,iBAAiB;gBAC3B,MAAM,EAAE,eAAe;gBACvB,eAAe,EAAE,UAAU;aAC5B,CAAC,CAAC;YACH,MAAM;QACR,KAAK,SAAS;YACZ,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,iBAAiB;gBAC3B,MAAM,EAAE,QAAQ;gBAChB,eAAe,EAAE,uBAAuB;aACzC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,gBAAgB;gBAC1B,MAAM,EAAE,QAAQ;gBAChB,eAAe,EAAE,wBAAwB;aAC1C,CAAC,CAAC;YACH,MAAM;IACV,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,UAAkB,EAClB,QAAwB,EACxB,QAA0B,EAC1B,QAAiB;IAEjB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnD,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,IAAI,YAAY,EAAE,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACjF,KAAK,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO;IACP,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QACjE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACjH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC7F,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,SAAS;IACT,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,SAAS;IACT,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QACrH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,QAAQ;IACR,IAAI,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO;IACP,IAAI,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,0CAA0C,CAAC,CAAC;IAEzE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,80 @@
1
+ /** 变更文件条目 */
2
+ export interface ChangeInboxFileEntry {
3
+ name: string;
4
+ path: string;
5
+ size: number;
6
+ mtime: string;
7
+ type: 'text' | 'excel' | 'image' | 'other';
8
+ content: string;
9
+ }
10
+ /** 变更收件箱扫描结果 */
11
+ export interface ChangeInboxScanResult {
12
+ newFiles: ChangeInboxFileEntry[];
13
+ modifiedFiles: ChangeInboxFileEntry[];
14
+ skippedFiles: string[];
15
+ allFiles: ChangeInboxFileEntry[];
16
+ }
17
+ /** 变更清单中的单个条目 */
18
+ export interface ChangeManifestEntry {
19
+ status: 'pending' | 'processing' | 'processed' | 'failed';
20
+ addedAt: string;
21
+ mtime: string;
22
+ processedAt?: string;
23
+ archivedAt?: string;
24
+ changeId?: string;
25
+ linkedTo: string[];
26
+ action: 'change' | 'new' | 'unknown';
27
+ iteration?: string;
28
+ error?: string;
29
+ }
30
+ /** 变更清单 */
31
+ export interface ChangeInboxManifest {
32
+ files: Record<string, ChangeManifestEntry>;
33
+ lastScan: string;
34
+ }
35
+ /** 归档策略 */
36
+ export type ArchiveStrategy = 'archive' | 'delete' | 'keep';
37
+ /**
38
+ * 确保变更收件箱目录结构存在
39
+ */
40
+ export declare function ensureChangeInboxDir(): Promise<void>;
41
+ /**
42
+ * 读取变更清单
43
+ */
44
+ export declare function readChangeManifest(): Promise<ChangeInboxManifest>;
45
+ /**
46
+ * 写入变更清单
47
+ */
48
+ export declare function writeChangeManifest(manifest: ChangeInboxManifest): Promise<void>;
49
+ /**
50
+ * 扫描变更收件箱 pending/ 目录
51
+ */
52
+ export declare function scanChangeInbox(options?: {
53
+ reprocess?: boolean;
54
+ }): Promise<ChangeInboxScanResult>;
55
+ /**
56
+ * 标记文件已处理
57
+ */
58
+ export declare function markChangeProcessed(files: ChangeInboxFileEntry[], action: 'change' | 'new', linkedTo: string[], changeId?: string): Promise<void>;
59
+ /**
60
+ * 标记文件处理失败
61
+ */
62
+ export declare function markChangeFailed(fileName: string, error: string): Promise<void>;
63
+ /**
64
+ * 归档已处理的文件
65
+ * @param strategy 'archive' | 'delete' | 'keep'
66
+ */
67
+ export declare function archiveProcessedFiles(files: ChangeInboxFileEntry[], strategy?: ArchiveStrategy): Promise<void>;
68
+ /**
69
+ * 从指定目录加载变更文件(--dir 模式)
70
+ */
71
+ export declare function loadChangeFilesFromDir(dirPath: string): Promise<ChangeInboxFileEntry[]>;
72
+ /**
73
+ * 从指定文件加载变更需求(--file 模式)
74
+ */
75
+ export declare function loadChangeFile(filePath: string): Promise<ChangeInboxFileEntry | null>;
76
+ /**
77
+ * 格式化扫描结果为终端输出
78
+ */
79
+ export declare function logChangeInboxScan(result: ChangeInboxScanResult): void;
80
+ //# sourceMappingURL=change-inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change-inbox.d.ts","sourceRoot":"","sources":["../../src/core/change-inbox.ts"],"names":[],"mappings":"AAcA,aAAa;AACb,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,gBAAgB;AAChB,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,aAAa,EAAE,oBAAoB,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,iBAAiB;AACjB,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,WAAW;AACX,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,WAAW;AACX,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAyB5D;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAWvE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAKtF;AAgDD;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqD3G;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,oBAAoB,EAAE,EAC7B,MAAM,EAAE,QAAQ,GAAG,KAAK,EACxB,QAAQ,EAAE,MAAM,EAAE,EAClB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,oBAAoB,EAAE,EAC7B,QAAQ,GAAE,eAA2B,GACpC,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA6B7F;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAmB3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CA8BtE"}