memento-mcp-server 1.15.0-c → 1.16.0-a

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 (56) hide show
  1. package/dist/domains/relation/tools/visualize-relations-tool.d.ts +2 -2
  2. package/dist/infrastructure/database/database/migration/migrations/009-quality-assurance-schema.d.ts +60 -0
  3. package/dist/infrastructure/database/database/migration/migrations/009-quality-assurance-schema.d.ts.map +1 -0
  4. package/dist/infrastructure/database/database/migration/migrations/009-quality-assurance-schema.js +276 -0
  5. package/dist/infrastructure/database/database/migration/migrations/009-quality-assurance-schema.js.map +1 -0
  6. package/dist/infrastructure/database/database/migration/migrations/009-quality-assurance-schema.sql +128 -0
  7. package/dist/infrastructure/scheduler/batch-scheduler.d.ts +17 -0
  8. package/dist/infrastructure/scheduler/batch-scheduler.d.ts.map +1 -1
  9. package/dist/infrastructure/scheduler/batch-scheduler.js +124 -0
  10. package/dist/infrastructure/scheduler/batch-scheduler.js.map +1 -1
  11. package/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.d.ts +108 -0
  12. package/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.d.ts.map +1 -0
  13. package/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.js +184 -0
  14. package/dist/infrastructure/scheduler/jobs/quality-measurement-batch-job.js.map +1 -0
  15. package/dist/server/http-server.d.ts.map +1 -1
  16. package/dist/server/http-server.js +3 -0
  17. package/dist/server/http-server.js.map +1 -1
  18. package/dist/server/routes/quality.routes.d.ts +14 -0
  19. package/dist/server/routes/quality.routes.d.ts.map +1 -0
  20. package/dist/server/routes/quality.routes.js +460 -0
  21. package/dist/server/routes/quality.routes.js.map +1 -0
  22. package/dist/services/quality-assurance/quality-assurance-service.d.ts +207 -0
  23. package/dist/services/quality-assurance/quality-assurance-service.d.ts.map +1 -0
  24. package/dist/services/quality-assurance/quality-assurance-service.js +247 -0
  25. package/dist/services/quality-assurance/quality-assurance-service.js.map +1 -0
  26. package/dist/services/quality-assurance/quality-evaluator.d.ts +163 -0
  27. package/dist/services/quality-assurance/quality-evaluator.d.ts.map +1 -0
  28. package/dist/services/quality-assurance/quality-evaluator.js +256 -0
  29. package/dist/services/quality-assurance/quality-evaluator.js.map +1 -0
  30. package/dist/services/quality-assurance/quality-metrics-collector.d.ts +219 -0
  31. package/dist/services/quality-assurance/quality-metrics-collector.d.ts.map +1 -0
  32. package/dist/services/quality-assurance/quality-metrics-collector.js +725 -0
  33. package/dist/services/quality-assurance/quality-metrics-collector.js.map +1 -0
  34. package/dist/services/quality-assurance/quality-recorder.d.ts +108 -0
  35. package/dist/services/quality-assurance/quality-recorder.d.ts.map +1 -0
  36. package/dist/services/quality-assurance/quality-recorder.js +281 -0
  37. package/dist/services/quality-assurance/quality-recorder.js.map +1 -0
  38. package/dist/services/quality-assurance/quality-reporter.d.ts +189 -0
  39. package/dist/services/quality-assurance/quality-reporter.d.ts.map +1 -0
  40. package/dist/services/quality-assurance/quality-reporter.js +558 -0
  41. package/dist/services/quality-assurance/quality-reporter.js.map +1 -0
  42. package/dist/services/quality-assurance/quality-threshold-manager.d.ts +102 -0
  43. package/dist/services/quality-assurance/quality-threshold-manager.d.ts.map +1 -0
  44. package/dist/services/quality-assurance/quality-threshold-manager.js +252 -0
  45. package/dist/services/quality-assurance/quality-threshold-manager.js.map +1 -0
  46. package/dist/test/helpers/search-quality-metrics.d.ts +96 -0
  47. package/dist/test/helpers/search-quality-metrics.d.ts.map +1 -0
  48. package/dist/test/helpers/search-quality-metrics.js +185 -0
  49. package/dist/test/helpers/search-quality-metrics.js.map +1 -0
  50. package/dist/test/helpers/vector-search-quality-metrics.d.ts +1287 -0
  51. package/dist/test/helpers/vector-search-quality-metrics.d.ts.map +1 -0
  52. package/dist/test/helpers/vector-search-quality-metrics.js +2214 -0
  53. package/dist/test/helpers/vector-search-quality-metrics.js.map +1 -0
  54. package/package.json +4 -1
  55. package/scripts/quality-report.ts +166 -0
  56. package/scripts/quality-thresholds.ts +279 -0
@@ -16,8 +16,8 @@ declare const VisualizeRelationsSchema: z.ZodObject<{
16
16
  show_relation_types: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
17
17
  }, "strip", z.ZodTypeAny, {
18
18
  memory_id: string;
19
- max_depth: number;
20
19
  format: "text" | "json" | "subgraph" | "simple";
20
+ max_depth: number;
21
21
  show_memory_ids: boolean;
22
22
  show_confidence: boolean;
23
23
  show_relation_types: boolean;
@@ -25,8 +25,8 @@ declare const VisualizeRelationsSchema: z.ZodObject<{
25
25
  relation_types?: ("CAUSES" | "DEPENDS_ON" | "FOLLOWS" | "CONTRASTS_WITH" | "REFERENCES" | "BELONGS_TO")[] | undefined;
26
26
  }, {
27
27
  memory_id: string;
28
- max_depth?: number | undefined;
29
28
  format?: "text" | "json" | "subgraph" | "simple" | undefined;
29
+ max_depth?: number | undefined;
30
30
  min_confidence?: number | undefined;
31
31
  relation_types?: ("CAUSES" | "DEPENDS_ON" | "FOLLOWS" | "CONTRASTS_WITH" | "REFERENCES" | "BELONGS_TO")[] | undefined;
32
32
  show_memory_ids?: boolean | undefined;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Migration: 009 - Quality Assurance Schema
3
+ * Description: Create quality measurement tables for quality assurance system
4
+ * Version: 9.0
5
+ * Date: 2025-01-XX
6
+ */
7
+ import type Database from 'better-sqlite3';
8
+ import type { Migration } from '../types.js';
9
+ /**
10
+ * Quality Assurance Schema Migration
11
+ *
12
+ * This migration:
13
+ * 1. Creates quality_measurement_history table for tracking quality measurement history
14
+ * 2. Creates quality_metrics table for storing latest quality metric values
15
+ * 3. Creates quality_thresholds table for managing quality thresholds
16
+ * 4. Creates indexes for efficient queries
17
+ */
18
+ export declare class QualityAssuranceSchemaMigration implements Migration {
19
+ version: string;
20
+ name: string;
21
+ description: string;
22
+ /**
23
+ * Load SQL file content
24
+ */
25
+ private loadSQLFile;
26
+ /**
27
+ * Execute SQL script
28
+ * Removes transaction commands (BEGIN TRANSACTION, COMMIT) as MigrationRunner manages transactions
29
+ */
30
+ private executeSQL;
31
+ /**
32
+ * Check if table exists
33
+ */
34
+ private tableExists;
35
+ /**
36
+ * Check if index exists
37
+ */
38
+ private indexExists;
39
+ /**
40
+ * Check if column exists in table
41
+ */
42
+ private columnExists;
43
+ /**
44
+ * Validate before migration
45
+ */
46
+ validateBefore(db: Database.Database): Promise<void>;
47
+ /**
48
+ * Execute migration (Up)
49
+ */
50
+ up(db: Database.Database): Promise<void>;
51
+ /**
52
+ * Rollback migration (Down)
53
+ */
54
+ down(db: Database.Database): Promise<void>;
55
+ /**
56
+ * Validate after migration
57
+ */
58
+ validateAfter(db: Database.Database): Promise<void>;
59
+ }
60
+ //# sourceMappingURL=009-quality-assurance-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"009-quality-assurance-schema.d.ts","sourceRoot":"","sources":["../../../../../../src/infrastructure/database/database/migration/migrations/009-quality-assurance-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAI3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C;;;;;;;;GAQG;AACH,qBAAa,+BAAgC,YAAW,SAAS;IAC/D,OAAO,SAAS;IAChB,IAAI,SAA8B;IAClC,WAAW,SAAoE;IAE/E;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAsBlB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B1D;;OAEG;IACG,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9C;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BhD;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CA6J1D"}
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Migration: 009 - Quality Assurance Schema
3
+ * Description: Create quality measurement tables for quality assurance system
4
+ * Version: 9.0
5
+ * Date: 2025-01-XX
6
+ */
7
+ import { readFileSync } from 'fs';
8
+ import { join, dirname } from 'path';
9
+ import { fileURLToPath } from 'url';
10
+ import { DependencyValidator } from '../dependency-validator.js';
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ /**
14
+ * Quality Assurance Schema Migration
15
+ *
16
+ * This migration:
17
+ * 1. Creates quality_measurement_history table for tracking quality measurement history
18
+ * 2. Creates quality_metrics table for storing latest quality metric values
19
+ * 3. Creates quality_thresholds table for managing quality thresholds
20
+ * 4. Creates indexes for efficient queries
21
+ */
22
+ export class QualityAssuranceSchemaMigration {
23
+ version = '9.0';
24
+ name = 'quality-assurance-schema';
25
+ description = 'Create quality measurement tables for quality assurance system';
26
+ /**
27
+ * Load SQL file content
28
+ */
29
+ loadSQLFile(filename) {
30
+ const filePath = join(__dirname, filename);
31
+ return readFileSync(filePath, 'utf-8');
32
+ }
33
+ /**
34
+ * Execute SQL script
35
+ * Removes transaction commands (BEGIN TRANSACTION, COMMIT) as MigrationRunner manages transactions
36
+ */
37
+ executeSQL(db, sql) {
38
+ // MigrationRunner가 트랜잭션을 관리하므로 SQL에서 트랜잭션 명령 제거
39
+ let cleanedSQL = sql
40
+ // BEGIN TRANSACTION 제거
41
+ .replace(/BEGIN\s+TRANSACTION\s*;/gi, '')
42
+ // COMMIT 제거
43
+ .replace(/COMMIT\s*;/gi, '')
44
+ // PRAGMA foreign_keys 명령은 유지 (트랜잭션 외부에서도 작동)
45
+ .trim();
46
+ // 빈 줄 제거 및 정리
47
+ cleanedSQL = cleanedSQL
48
+ .split('\n')
49
+ .map(line => line.trim())
50
+ .filter(line => line.length > 0)
51
+ .join('\n');
52
+ if (cleanedSQL.length > 0) {
53
+ db.exec(cleanedSQL);
54
+ }
55
+ }
56
+ /**
57
+ * Check if table exists
58
+ */
59
+ tableExists(db, tableName) {
60
+ const result = db.prepare(`
61
+ SELECT name FROM sqlite_master
62
+ WHERE type='table' AND name=?
63
+ `).get(tableName);
64
+ return !!result;
65
+ }
66
+ /**
67
+ * Check if index exists
68
+ */
69
+ indexExists(db, indexName) {
70
+ const result = db.prepare(`
71
+ SELECT name FROM sqlite_master
72
+ WHERE type='index' AND name=?
73
+ `).get(indexName);
74
+ return !!result;
75
+ }
76
+ /**
77
+ * Check if column exists in table
78
+ */
79
+ columnExists(db, tableName, columnName) {
80
+ const columns = db.prepare(`PRAGMA table_info(${tableName})`).all();
81
+ return columns.some(col => col.name === columnName);
82
+ }
83
+ /**
84
+ * Validate before migration
85
+ */
86
+ async validateBefore(db) {
87
+ // Check if migration has already been applied
88
+ if (this.tableExists(db, 'memento_schema_version')) {
89
+ const version = db.prepare(`
90
+ SELECT version FROM memento_schema_version WHERE version = ?
91
+ `).get('9.0');
92
+ if (version) {
93
+ throw new Error('Migration 009 has already been applied. Current schema version: 9.0');
94
+ }
95
+ }
96
+ // Check if quality_measurement_history table already exists (should not exist)
97
+ if (this.tableExists(db, 'quality_measurement_history')) {
98
+ throw new Error('quality_measurement_history table already exists. Migration may have been partially applied.');
99
+ }
100
+ // Check if quality_metrics table already exists (should not exist)
101
+ if (this.tableExists(db, 'quality_metrics')) {
102
+ throw new Error('quality_metrics table already exists. Migration may have been partially applied.');
103
+ }
104
+ // Check if quality_thresholds table already exists (should not exist)
105
+ if (this.tableExists(db, 'quality_thresholds')) {
106
+ throw new Error('quality_thresholds table already exists. Migration may have been partially applied.');
107
+ }
108
+ }
109
+ /**
110
+ * Execute migration (Up)
111
+ */
112
+ async up(db) {
113
+ // Load and execute SQL script
114
+ const sqlScript = this.loadSQLFile('009-quality-assurance-schema.sql');
115
+ this.executeSQL(db, sqlScript);
116
+ // Note: Schema version is recorded by MigrationRunner, not here
117
+ // MigrationRunner.recordVersion() will be called after successful migration
118
+ }
119
+ /**
120
+ * Rollback migration (Down)
121
+ */
122
+ async down(db) {
123
+ // Drop indexes first
124
+ const indexes = [
125
+ 'idx_quality_measurement_history_measured_at',
126
+ 'idx_quality_measurement_history_type',
127
+ 'idx_quality_measurement_history_status',
128
+ 'idx_quality_metrics_namespace_key',
129
+ 'idx_quality_metrics_context',
130
+ 'idx_quality_metrics_status',
131
+ 'idx_quality_metrics_measured_at',
132
+ 'idx_quality_thresholds_namespace_key',
133
+ 'idx_quality_thresholds_context'
134
+ ];
135
+ for (const indexName of indexes) {
136
+ db.exec(`DROP INDEX IF EXISTS ${indexName}`);
137
+ }
138
+ // Drop tables
139
+ db.exec('DROP TABLE IF EXISTS quality_measurement_history');
140
+ db.exec('DROP TABLE IF EXISTS quality_metrics');
141
+ db.exec('DROP TABLE IF EXISTS quality_thresholds');
142
+ // Remove schema version record
143
+ db.prepare('DELETE FROM memento_schema_version WHERE version = ?').run('9.0');
144
+ }
145
+ /**
146
+ * Validate after migration
147
+ */
148
+ async validateAfter(db) {
149
+ // Verify quality_measurement_history table exists
150
+ if (!this.tableExists(db, 'quality_measurement_history')) {
151
+ throw new Error('quality_measurement_history table was not created');
152
+ }
153
+ // Verify quality_metrics table exists
154
+ if (!this.tableExists(db, 'quality_metrics')) {
155
+ throw new Error('quality_metrics table was not created');
156
+ }
157
+ // Verify quality_thresholds table exists
158
+ if (!this.tableExists(db, 'quality_thresholds')) {
159
+ throw new Error('quality_thresholds table was not created');
160
+ }
161
+ // Verify quality_measurement_history table structure (check columns)
162
+ const historyColumns = db.prepare(`PRAGMA table_info(quality_measurement_history)`).all();
163
+ const historyColumnNames = historyColumns.map(col => col.name);
164
+ const requiredHistoryColumns = [
165
+ 'id',
166
+ 'measurement_type',
167
+ 'measured_at',
168
+ 'metrics',
169
+ 'status',
170
+ 'warnings',
171
+ 'created_at'
172
+ ];
173
+ for (const column of requiredHistoryColumns) {
174
+ if (!historyColumnNames.includes(column)) {
175
+ throw new Error(`Column ${column} was not created in quality_measurement_history table`);
176
+ }
177
+ }
178
+ // Verify quality_metrics table structure (check columns)
179
+ const metricsColumns = db.prepare(`PRAGMA table_info(quality_metrics)`).all();
180
+ const metricsColumnNames = metricsColumns.map(col => col.name);
181
+ const requiredMetricsColumns = [
182
+ 'metric_namespace',
183
+ 'metric_key',
184
+ 'context',
185
+ 'metric_value',
186
+ 'measured_at',
187
+ 'status',
188
+ 'threshold_value',
189
+ 'updated_at'
190
+ ];
191
+ for (const column of requiredMetricsColumns) {
192
+ if (!metricsColumnNames.includes(column)) {
193
+ throw new Error(`Column ${column} was not created in quality_metrics table`);
194
+ }
195
+ }
196
+ // Verify quality_thresholds table structure (check columns)
197
+ const thresholdsColumns = db.prepare(`PRAGMA table_info(quality_thresholds)`).all();
198
+ const thresholdsColumnNames = thresholdsColumns.map(col => col.name);
199
+ const requiredThresholdsColumns = [
200
+ 'metric_namespace',
201
+ 'metric_key',
202
+ 'context',
203
+ 'threshold_value',
204
+ 'threshold_type',
205
+ 'description',
206
+ 'updated_at'
207
+ ];
208
+ for (const column of requiredThresholdsColumns) {
209
+ if (!thresholdsColumnNames.includes(column)) {
210
+ throw new Error(`Column ${column} was not created in quality_thresholds table`);
211
+ }
212
+ }
213
+ // Verify indexes were created
214
+ const requiredIndexes = [
215
+ 'idx_quality_measurement_history_measured_at',
216
+ 'idx_quality_measurement_history_type',
217
+ 'idx_quality_measurement_history_status',
218
+ 'idx_quality_metrics_namespace_key',
219
+ 'idx_quality_metrics_context',
220
+ 'idx_quality_metrics_status',
221
+ 'idx_quality_metrics_measured_at',
222
+ 'idx_quality_thresholds_namespace_key',
223
+ 'idx_quality_thresholds_context'
224
+ ];
225
+ for (const index of requiredIndexes) {
226
+ if (!this.indexExists(db, index)) {
227
+ throw new Error(`Index ${index} was not created`);
228
+ }
229
+ }
230
+ // Verify PRIMARY KEY constraints
231
+ const historyTableInfo = db.prepare(`
232
+ SELECT sql FROM sqlite_master
233
+ WHERE type='table' AND name='quality_measurement_history'
234
+ `).get();
235
+ if (!historyTableInfo || !historyTableInfo.sql.includes('PRIMARY KEY')) {
236
+ throw new Error('PRIMARY KEY constraint was not created on quality_measurement_history table');
237
+ }
238
+ const metricsTableInfo = db.prepare(`
239
+ SELECT sql FROM sqlite_master
240
+ WHERE type='table' AND name='quality_metrics'
241
+ `).get();
242
+ if (!metricsTableInfo || !metricsTableInfo.sql.includes('PRIMARY KEY')) {
243
+ throw new Error('PRIMARY KEY constraint was not created on quality_metrics table');
244
+ }
245
+ const thresholdsTableInfo = db.prepare(`
246
+ SELECT sql FROM sqlite_master
247
+ WHERE type='table' AND name='quality_thresholds'
248
+ `).get();
249
+ if (!thresholdsTableInfo || !thresholdsTableInfo.sql.includes('PRIMARY KEY')) {
250
+ throw new Error('PRIMARY KEY constraint was not created on quality_thresholds table');
251
+ }
252
+ // Verify CHECK constraints
253
+ if (!historyTableInfo.sql.includes('CHECK (measurement_type IN')) {
254
+ throw new Error('CHECK constraint on measurement_type was not created in quality_measurement_history table');
255
+ }
256
+ if (!historyTableInfo.sql.includes('CHECK (status IN')) {
257
+ throw new Error('CHECK constraint on status was not created in quality_measurement_history table');
258
+ }
259
+ if (!metricsTableInfo.sql.includes('CHECK (status IN')) {
260
+ throw new Error('CHECK constraint on status was not created in quality_metrics table');
261
+ }
262
+ if (!thresholdsTableInfo.sql.includes('CHECK (threshold_type IN')) {
263
+ throw new Error('CHECK constraint on threshold_type was not created in quality_thresholds table');
264
+ }
265
+ // Verify existing dependencies are intact using DependencyValidator
266
+ const dependencyReport = await DependencyValidator.validateAll(db);
267
+ if (!dependencyReport.success) {
268
+ const errors = dependencyReport.results
269
+ .filter(r => !r.success)
270
+ .map(r => `${r.name}: ${r.error}`)
271
+ .join('; ');
272
+ throw new Error(`Dependency validation failed: ${errors}`);
273
+ }
274
+ }
275
+ }
276
+ //# sourceMappingURL=009-quality-assurance-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"009-quality-assurance-schema.js","sourceRoot":"","sources":["../../../../../../src/infrastructure/database/database/migration/migrations/009-quality-assurance-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,128 @@
1
+ -- Migration: 009 - Quality Assurance Schema
2
+ -- Description: Create quality measurement tables for quality assurance system
3
+ -- Version: 9.0
4
+ -- Date: 2025-01-XX
5
+ --
6
+ -- This migration:
7
+ -- 1. Creates quality_measurement_history table for tracking quality measurement history
8
+ -- 2. Creates quality_metrics table for storing latest quality metric values
9
+ -- 3. Creates quality_thresholds table for managing quality thresholds
10
+ -- 4. Creates indexes for efficient queries
11
+
12
+ PRAGMA foreign_keys = OFF;
13
+ BEGIN TRANSACTION;
14
+
15
+ -- ============================================================================
16
+ -- 1. Create quality_measurement_history table
17
+ -- ============================================================================
18
+ -- 품질 측정 이력 테이블: 각 품질 측정 실행의 전체 이력을 저장
19
+ -- measurement_type: 'batch', 'test', 'manual'
20
+ -- status: 'success', 'warning', 'error'
21
+ -- metrics: JSON 형식으로 측정된 모든 지표 데이터 저장
22
+ -- warnings: 임계값 미달 시 경고 정보 저장
23
+
24
+ CREATE TABLE IF NOT EXISTS quality_measurement_history (
25
+ id TEXT PRIMARY KEY,
26
+ measurement_type TEXT NOT NULL CHECK (measurement_type IN ('batch', 'test', 'manual')),
27
+ measured_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
28
+ metrics TEXT NOT NULL, -- JSON 형식: 품질 지표 데이터
29
+ -- metrics JSON 구조 예시:
30
+ -- {
31
+ -- "metric_namespace": "search",
32
+ -- "metric_key": "precision_at_5",
33
+ -- "context": "default",
34
+ -- "value": 0.85,
35
+ -- "threshold_value": 0.8,
36
+ -- "evaluator_version": "1.0.0"
37
+ -- }
38
+ status TEXT NOT NULL CHECK (status IN ('success', 'warning', 'error')) DEFAULT 'success',
39
+ warnings TEXT, -- JSON 형식: 경고 정보 (임계값 미달 시)
40
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
41
+ );
42
+
43
+ -- ============================================================================
44
+ -- 2. Create quality_metrics table
45
+ -- ============================================================================
46
+ -- 품질 지표 테이블: 최신 측정값을 저장 (namespace, key, context 조합별로 최신 값 유지)
47
+ -- metric_namespace: 'search', 'relation', 'consolidation', 'storage' 등
48
+ -- metric_key: 'precision_at_5', 'f1_score', 'duplication_rate' 등
49
+ -- context: 'default', 'ci', 'nightly' 등 (측정 컨텍스트)
50
+ -- status: 'pass', 'warning', 'fail' (임계값 비교 결과)
51
+
52
+ CREATE TABLE IF NOT EXISTS quality_metrics (
53
+ metric_namespace TEXT NOT NULL, -- 'search', 'relation', 'consolidation', 'storage'
54
+ metric_key TEXT NOT NULL, -- 'precision_at_5', 'f1_score', 'duplication_rate' 등
55
+ context TEXT NOT NULL DEFAULT 'default', -- 'default', 'ci', 'nightly'
56
+ metric_value REAL NOT NULL,
57
+ measured_at TIMESTAMP NOT NULL,
58
+ status TEXT NOT NULL CHECK (status IN ('pass', 'warning', 'fail')) DEFAULT 'pass',
59
+ threshold_value REAL, -- 임계값 (측정 시점의 임계값)
60
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
61
+ PRIMARY KEY (metric_namespace, metric_key, context)
62
+ );
63
+
64
+ -- ============================================================================
65
+ -- 3. Create quality_thresholds table
66
+ -- ============================================================================
67
+ -- 품질 임계값 테이블: 각 품질 지표별 임계값 관리
68
+ -- threshold_type: 'min' (최소값, 이상이어야 함), 'max' (최대값, 이하여야 함)
69
+ -- 예: precision_at_5의 threshold_type='min', threshold_value=0.7
70
+ -- duplication_rate의 threshold_type='max', threshold_value=0.05
71
+
72
+ CREATE TABLE IF NOT EXISTS quality_thresholds (
73
+ metric_namespace TEXT NOT NULL,
74
+ metric_key TEXT NOT NULL,
75
+ context TEXT NOT NULL DEFAULT 'default',
76
+ threshold_value REAL NOT NULL,
77
+ threshold_type TEXT NOT NULL CHECK (threshold_type IN ('min', 'max')),
78
+ description TEXT, -- 임계값 설명
79
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
80
+ PRIMARY KEY (metric_namespace, metric_key, context)
81
+ );
82
+
83
+ -- ============================================================================
84
+ -- 4. Create indexes for efficient queries
85
+ -- ============================================================================
86
+
87
+ -- quality_measurement_history indexes
88
+ -- 측정 시간 기준 조회 (이력 조회)
89
+ CREATE INDEX IF NOT EXISTS idx_quality_measurement_history_measured_at
90
+ ON quality_measurement_history(measured_at);
91
+
92
+ -- 측정 타입 기준 조회 (배치/테스트/수동 구분)
93
+ CREATE INDEX IF NOT EXISTS idx_quality_measurement_history_type
94
+ ON quality_measurement_history(measurement_type);
95
+
96
+ -- 상태 기준 조회 (경고/에러 필터링)
97
+ CREATE INDEX IF NOT EXISTS idx_quality_measurement_history_status
98
+ ON quality_measurement_history(status);
99
+
100
+ -- quality_metrics indexes
101
+ -- namespace와 key 조합 기준 조회 (특정 지표 조회)
102
+ CREATE INDEX IF NOT EXISTS idx_quality_metrics_namespace_key
103
+ ON quality_metrics(metric_namespace, metric_key);
104
+
105
+ -- context 기준 조회 (컨텍스트별 조회)
106
+ CREATE INDEX IF NOT EXISTS idx_quality_metrics_context
107
+ ON quality_metrics(context);
108
+
109
+ -- 상태 기준 조회 (경고/실패 필터링)
110
+ CREATE INDEX IF NOT EXISTS idx_quality_metrics_status
111
+ ON quality_metrics(status);
112
+
113
+ -- 측정 시간 기준 조회 (최신 측정값 조회)
114
+ CREATE INDEX IF NOT EXISTS idx_quality_metrics_measured_at
115
+ ON quality_metrics(measured_at);
116
+
117
+ -- quality_thresholds indexes
118
+ -- namespace와 key 조합 기준 조회 (특정 임계값 조회)
119
+ CREATE INDEX IF NOT EXISTS idx_quality_thresholds_namespace_key
120
+ ON quality_thresholds(metric_namespace, metric_key);
121
+
122
+ -- context 기준 조회 (컨텍스트별 임계값 조회)
123
+ CREATE INDEX IF NOT EXISTS idx_quality_thresholds_context
124
+ ON quality_thresholds(context);
125
+
126
+ COMMIT;
127
+ PRAGMA foreign_keys = ON;
128
+
@@ -25,6 +25,8 @@ export interface BatchJobConfig {
25
25
  tripleExtractionHour?: number;
26
26
  tripleExtractionBatchSize: number;
27
27
  tripleExtractionTimeout: number;
28
+ qualityMeasurementInterval: number;
29
+ qualityMeasurementHour?: number;
28
30
  maxBatchSize: number;
29
31
  enableLogging: boolean;
30
32
  enableNotifications: boolean;
@@ -83,6 +85,7 @@ export declare class BatchScheduler {
83
85
  private fileLogger;
84
86
  private relationValidatorExecutor;
85
87
  private tripleExtractionBatchJob;
88
+ private qualityMeasurementBatchJob;
86
89
  constructor(config?: Partial<BatchJobConfig>, dependencies?: {
87
90
  jobQueue?: JobQueue;
88
91
  retryManager?: RetryManager;
@@ -262,6 +265,20 @@ export declare class BatchScheduler {
262
265
  * - JobQueue를 통해 실행하여 maxConcurrentJobs 제한 및 중복 방지 적용
263
266
  */
264
267
  private scheduleTripleExtractionBatch;
268
+ /**
269
+ * 품질 측정 배치 작업 스케줄링
270
+ *
271
+ * PRD FR-5.6: 일일 품질 측정 배치 작업
272
+ * - 기본: 24시간마다 실행
273
+ * - 특정 시간 지정 시: 해당 시간에만 실행
274
+ */
275
+ private scheduleQualityMeasurement;
276
+ /**
277
+ * 품질 측정 배치 작업 실행
278
+ *
279
+ * PRD FR-5.6: 일일 품질 측정 배치 작업
280
+ */
281
+ private runQualityMeasurementBatch;
265
282
  /**
266
283
  * 로그 로테이션 실행
267
284
  * 30일 이상 된 Triple 추출 로그 파일을 삭제합니다.
@@ -1 +1 @@
1
- {"version":3,"file":"batch-scheduler.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/scheduler/batch-scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"batch-scheduler.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/scheduler/batch-scheduler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAK7E,MAAM,WAAW,cAAc;IAE7B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qCAAqC,EAAE,MAAM,CAAC;IAC9C,mCAAmC,EAAE,MAAM,CAAC;IAC5C,+BAA+B,EAAE,MAAM,CAAC;IACxC,0BAA0B,EAAE,MAAM,CAAC;IACnC,2BAA2B,EAAE,MAAM,CAAC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,MAAM,CAAC;IACjC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yBAAyB,EAAE,MAAM,CAAC;IAClC,uBAAuB,EAAE,MAAM,CAAC;IAChC,0BAA0B,EAAE,MAAM,CAAC;IACnC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAGhC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IAGvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,kBAAkB,CAA2C;IACrE,OAAO,CAAC,wBAAwB,CAAyC;IACzE,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,EAAE,CAAkC;IAC5C,OAAO,CAAC,SAAS,CAA0D;IAC3E,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,oBAAoB,CAA+C;IAG3E,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,yBAAyB,CAA4B;IAC7D,OAAO,CAAC,wBAAwB,CAAyC;IACzE,OAAO,CAAC,0BAA0B,CAA2C;gBAG3E,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAChC,YAAY,CAAC,EAAE;QACb,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,YAAY,CAAC,EAAE,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;KACvD;IA0DH;;;;OAIG;IACG,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFpF;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC3B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0CtB;;;;;;;;;OASG;YACW,mBAAmB;IAiGjC;;;;;;;;OAQG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;;;;;;OASG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,GAAE,MAAW,EAAE,UAAU,GAAE,MAAU,GAAG,OAAO;IAI7G;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAenB;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;YACW,kBAAkB;IAShC;;OAEG;YACW,kBAAkB;IAchC;;OAEG;YACW,gBAAgB;IAoD9B;;OAEG;YACW,aAAa;IAgE3B;;OAEG;YACW,cAAc;IA4C5B;;OAEG;YACW,gCAAgC;IAuD9C;;;;OAIG;IACH,OAAO,CAAC,mCAAmC;IAkC3C;;;OAGG;IACH,OAAO,CAAC,gCAAgC;IAkCxC;;;OAGG;YACW,2BAA2B;IAwDzC;;OAEG;YACW,8BAA8B;IAwD5C;;OAEG;YACW,gBAAgB;IA+B9B;;;OAGG;IACH,OAAO,CAAC,GAAG;IA6EX;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA4BpB;;;OAGG;IACG,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAwBxF;;OAEG;IACH,SAAS,IAAI,eAAe;IAsB5B;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAMtD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWjC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAiBpC;;OAEG;YACW,oBAAoB;IAwClC;;;;;;;OAOG;YACW,wBAAwB;IAgEtC;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,6BAA6B;IAmDrC;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IA+ClC;;;;OAIG;YACW,0BAA0B;IAmFxC;;;OAGG;YACW,cAAc;IA0D5B;;OAEG;IACH,gBAAgB,IAAI;QAClB,MAAM,EAAE,eAAe,CAAC;QACxB,MAAM,EAAE;YACN,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,EAAE,MAAM,CAAC;YACpB,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;YAClB,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,IAAI,EAAE,KAAK,CAAC;YACV,IAAI,EAAE,MAAM,CAAC;YACb,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;YAC3B,eAAe,EAAE,MAAM,CAAC;YACxB,UAAU,EAAE,MAAM,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,OAAO,CAAC;SACpB,CAAC,CAAC;KACJ;CAgCF;AAKD,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAErF;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}