autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
57 lines (56 loc) • 1.84 kB
TypeScript
/**
* PanoramaScanner — 全景数据内置扫描器
*
* 在全景数据缺失时自动运行轻量级结构扫描(Phase 1→2.1),
* 填充 code_entities + knowledge_edges,使 PanoramaService 能产生有效数据。
*
* 非 MCP 操作,而是 PanoramaService 的内置依赖。
* 调用时机:
* - PanoramaService 发现 DB 中无 code_entities 时自动触发
* - 手动调用 invalidate + getResult 时检查并补充
*
* @module PanoramaScanner
*/
import type { CodeEntityRepositoryImpl } from '../../repository/code/CodeEntityRepository.js';
import type { KnowledgeEdgeRepositoryImpl } from '../../repository/knowledge/KnowledgeEdgeRepository.js';
export interface PanoramaScannerOptions {
projectRoot: string;
container: ScannerContainer;
entityRepo: CodeEntityRepositoryImpl;
edgeRepo: KnowledgeEdgeRepositoryImpl;
logger?: ScannerLogger;
}
export interface ScannerContainer {
get(name: string): any;
}
export interface ScannerLogger {
info(...args: unknown[]): void;
warn(...args: unknown[]): void;
}
export interface ScanResult {
entities: number;
edges: number;
modules: number;
durationMs: number;
}
export declare class PanoramaScanner {
#private;
constructor(opts: PanoramaScannerOptions);
/**
* 检测 DB 中是否已有该项目的 code_entities 数据
*/
hasData(): Promise<boolean>;
/**
* 确保全景数据存在。无数据时自动执行扫描。
* 幂等:扫描过一次后不再重复(重启进程或手动 reset 可重新触发)。
*/
ensureData(): Promise<ScanResult | null>;
/**
* 执行完整扫描(强制,不检查缓存)
*/
scan(): Promise<ScanResult>;
/**
* 重置扫描状态(允许下次 ensureData 重新扫描)
*/
reset(): void;
}