memento-mcp-server 1.6.0 → 1.7.2
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.
- package/INSTALL.en.md +303 -303
- package/INSTALL.md +303 -303
- package/README.en.md +331 -330
- package/README.md +432 -432
- package/dist/algorithms/hybrid-search-engine.d.ts +114 -44
- package/dist/algorithms/hybrid-search-engine.d.ts.map +1 -1
- package/dist/algorithms/hybrid-search-engine.js +261 -235
- package/dist/algorithms/hybrid-search-engine.js.map +1 -1
- package/dist/algorithms/search-engine.d.ts +2 -14
- package/dist/algorithms/search-engine.d.ts.map +1 -1
- package/dist/algorithms/search-engine.js +43 -35
- package/dist/algorithms/search-engine.js.map +1 -1
- package/dist/algorithms/vector-search-engine-migration.d.ts +67 -0
- package/dist/algorithms/vector-search-engine-migration.d.ts.map +1 -0
- package/dist/algorithms/vector-search-engine-migration.js +196 -0
- package/dist/algorithms/vector-search-engine-migration.js.map +1 -0
- package/dist/algorithms/vector-search-engine-refactored.d.ts +56 -0
- package/dist/algorithms/vector-search-engine-refactored.d.ts.map +1 -0
- package/dist/algorithms/vector-search-engine-refactored.js +101 -0
- package/dist/algorithms/vector-search-engine-refactored.js.map +1 -0
- package/dist/algorithms/vector-search-engine.d.ts +9 -2
- package/dist/algorithms/vector-search-engine.d.ts.map +1 -1
- package/dist/algorithms/vector-search-engine.js +245 -121
- package/dist/algorithms/vector-search-engine.js.map +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +34 -11
- package/dist/client/index.js.map +1 -1
- package/dist/config/environment.d.ts +26 -0
- package/dist/config/environment.d.ts.map +1 -0
- package/dist/config/environment.js +103 -0
- package/dist/config/environment.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +29 -50
- package/dist/config/index.js.map +1 -1
- package/dist/config/vector-search.config.d.ts +25 -0
- package/dist/config/vector-search.config.d.ts.map +1 -0
- package/dist/config/vector-search.config.js +40 -0
- package/dist/config/vector-search.config.js.map +1 -0
- package/dist/database/init.d.ts.map +1 -1
- package/dist/database/init.js +154 -17
- package/dist/database/init.js.map +1 -1
- package/dist/database/migrate.d.ts +2 -1
- package/dist/database/migrate.d.ts.map +1 -1
- package/dist/database/migrate.js +191 -18
- package/dist/database/migrate.js.map +1 -1
- package/dist/database/schema.sql +234 -159
- package/dist/factories/hybrid-search.factory.d.ts +20 -0
- package/dist/factories/hybrid-search.factory.d.ts.map +1 -0
- package/dist/factories/hybrid-search.factory.js +57 -0
- package/dist/factories/hybrid-search.factory.js.map +1 -0
- package/dist/factories/spaced-repetition.factory.d.ts +48 -0
- package/dist/factories/spaced-repetition.factory.d.ts.map +1 -0
- package/dist/factories/spaced-repetition.factory.js +187 -0
- package/dist/factories/spaced-repetition.factory.js.map +1 -0
- package/dist/factories/vector-search.factory.d.ts +25 -0
- package/dist/factories/vector-search.factory.d.ts.map +1 -0
- package/dist/factories/vector-search.factory.js +47 -0
- package/dist/factories/vector-search.factory.js.map +1 -0
- package/dist/interfaces/database.interface.d.ts +36 -0
- package/dist/interfaces/database.interface.d.ts.map +1 -0
- package/dist/interfaces/database.interface.js +6 -0
- package/dist/interfaces/database.interface.js.map +1 -0
- package/dist/interfaces/spaced-repetition.interface.d.ts +63 -0
- package/dist/interfaces/spaced-repetition.interface.d.ts.map +1 -0
- package/dist/interfaces/spaced-repetition.interface.js +6 -0
- package/dist/interfaces/spaced-repetition.interface.js.map +1 -0
- package/dist/repositories/vector-performance.repository.d.ts +25 -0
- package/dist/repositories/vector-performance.repository.d.ts.map +1 -0
- package/dist/repositories/vector-performance.repository.js +134 -0
- package/dist/repositories/vector-performance.repository.js.map +1 -0
- package/dist/repositories/vector-search.repository.d.ts +43 -0
- package/dist/repositories/vector-search.repository.d.ts.map +1 -0
- package/dist/repositories/vector-search.repository.js +377 -0
- package/dist/repositories/vector-search.repository.js.map +1 -0
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +25 -24
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +7 -7
- package/dist/server/index.js.map +1 -1
- package/dist/services/alert-notification-service.d.ts +16 -0
- package/dist/services/alert-notification-service.d.ts.map +1 -0
- package/dist/services/alert-notification-service.js +44 -0
- package/dist/services/alert-notification-service.js.map +1 -0
- package/dist/services/async-optimizer.d.ts +62 -8
- package/dist/services/async-optimizer.d.ts.map +1 -1
- package/dist/services/async-optimizer.js +137 -8
- package/dist/services/async-optimizer.js.map +1 -1
- package/dist/services/batch-scheduler.d.ts +6 -0
- package/dist/services/batch-scheduler.d.ts.map +1 -1
- package/dist/services/batch-scheduler.js +59 -19
- package/dist/services/batch-scheduler.js.map +1 -1
- package/dist/services/cache-service.d.ts +32 -0
- package/dist/services/cache-service.d.ts.map +1 -1
- package/dist/services/cache-service.js +81 -6
- package/dist/services/cache-service.js.map +1 -1
- package/dist/services/database-optimizer.js +63 -63
- package/dist/services/database-optimizer.js.map +1 -1
- package/dist/services/embedding-migration-service.d.ts +24 -0
- package/dist/services/embedding-migration-service.d.ts.map +1 -0
- package/dist/services/embedding-migration-service.js +360 -0
- package/dist/services/embedding-migration-service.js.map +1 -0
- package/dist/services/embedding-provider-factory.d.ts +12 -5
- package/dist/services/embedding-provider-factory.d.ts.map +1 -1
- package/dist/services/embedding-provider-factory.js +107 -26
- package/dist/services/embedding-provider-factory.js.map +1 -1
- package/dist/services/forgetting-policy-service.js +17 -17
- package/dist/services/gemini-embedding-service.d.ts +1 -1
- package/dist/services/gemini-embedding-service.d.ts.map +1 -1
- package/dist/services/gemini-embedding-service.js +25 -18
- package/dist/services/gemini-embedding-service.js.map +1 -1
- package/dist/services/memory-embedding-service.d.ts +8 -0
- package/dist/services/memory-embedding-service.d.ts.map +1 -1
- package/dist/services/memory-embedding-service.js +180 -71
- package/dist/services/memory-embedding-service.js.map +1 -1
- package/dist/services/migration-history-service.d.ts +14 -0
- package/dist/services/migration-history-service.d.ts.map +1 -0
- package/dist/services/migration-history-service.js +270 -0
- package/dist/services/migration-history-service.js.map +1 -0
- package/dist/services/migration-monitor-service.d.ts +24 -0
- package/dist/services/migration-monitor-service.d.ts.map +1 -0
- package/dist/services/migration-monitor-service.js +93 -0
- package/dist/services/migration-monitor-service.js.map +1 -0
- package/dist/services/model-availability-service.d.ts +22 -0
- package/dist/services/model-availability-service.d.ts.map +1 -0
- package/dist/services/model-availability-service.js +140 -0
- package/dist/services/model-availability-service.js.map +1 -0
- package/dist/services/openai-embedding-service.d.ts +36 -0
- package/dist/services/openai-embedding-service.d.ts.map +1 -0
- package/dist/services/openai-embedding-service.js +192 -0
- package/dist/services/openai-embedding-service.js.map +1 -0
- package/dist/services/performance-monitor.d.ts +154 -10
- package/dist/services/performance-monitor.d.ts.map +1 -1
- package/dist/services/performance-monitor.js +446 -60
- package/dist/services/performance-monitor.js.map +1 -1
- package/dist/services/spaced-repetition/interval-calculation.service.d.ts +38 -0
- package/dist/services/spaced-repetition/interval-calculation.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/interval-calculation.service.js +105 -0
- package/dist/services/spaced-repetition/interval-calculation.service.js.map +1 -0
- package/dist/services/spaced-repetition/optimal-interval.service.d.ts +56 -0
- package/dist/services/spaced-repetition/optimal-interval.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/optimal-interval.service.js +163 -0
- package/dist/services/spaced-repetition/optimal-interval.service.js.map +1 -0
- package/dist/services/spaced-repetition/performance-analysis.service.d.ts +48 -0
- package/dist/services/spaced-repetition/performance-analysis.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/performance-analysis.service.js +174 -0
- package/dist/services/spaced-repetition/performance-analysis.service.js.map +1 -0
- package/dist/services/spaced-repetition/priority-calculation.service.d.ts +53 -0
- package/dist/services/spaced-repetition/priority-calculation.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/priority-calculation.service.js +161 -0
- package/dist/services/spaced-repetition/priority-calculation.service.js.map +1 -0
- package/dist/services/spaced-repetition/recall-probability.service.d.ts +36 -0
- package/dist/services/spaced-repetition/recall-probability.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/recall-probability.service.js +88 -0
- package/dist/services/spaced-repetition/recall-probability.service.js.map +1 -0
- package/dist/services/spaced-repetition/review-scheduling.service.d.ts +43 -0
- package/dist/services/spaced-repetition/review-scheduling.service.d.ts.map +1 -0
- package/dist/services/spaced-repetition/review-scheduling.service.js +130 -0
- package/dist/services/spaced-repetition/review-scheduling.service.js.map +1 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.d.ts +69 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.d.ts.map +1 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.js +136 -0
- package/dist/services/spaced-repetition/spaced-repetition-container.js.map +1 -0
- package/dist/services/unified-embedding-service.d.ts +3 -0
- package/dist/services/unified-embedding-service.d.ts.map +1 -1
- package/dist/services/unified-embedding-service.js +58 -62
- package/dist/services/unified-embedding-service.js.map +1 -1
- package/dist/services/vector-compatibility-service.d.ts +68 -0
- package/dist/services/vector-compatibility-service.d.ts.map +1 -0
- package/dist/services/vector-compatibility-service.js +373 -0
- package/dist/services/vector-compatibility-service.js.map +1 -0
- package/dist/services/vector-search/vector-index-manager.d.ts +27 -0
- package/dist/services/vector-search/vector-index-manager.d.ts.map +1 -0
- package/dist/services/vector-search/vector-index-manager.js +66 -0
- package/dist/services/vector-search/vector-index-manager.js.map +1 -0
- package/dist/services/vector-search/vector-performance-tester.d.ts +30 -0
- package/dist/services/vector-search/vector-performance-tester.d.ts.map +1 -0
- package/dist/services/vector-search/vector-performance-tester.js +87 -0
- package/dist/services/vector-search/vector-performance-tester.js.map +1 -0
- package/dist/services/vector-search/vector-search-container.d.ts +41 -0
- package/dist/services/vector-search/vector-search-container.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-container.js +74 -0
- package/dist/services/vector-search/vector-search-container.js.map +1 -0
- package/dist/services/vector-search/vector-search-facade.d.ts +63 -0
- package/dist/services/vector-search/vector-search-facade.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-facade.js +91 -0
- package/dist/services/vector-search/vector-search-facade.js.map +1 -0
- package/dist/services/vector-search/vector-search-result-normalizer.d.ts +6 -0
- package/dist/services/vector-search/vector-search-result-normalizer.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search-result-normalizer.js +65 -0
- package/dist/services/vector-search/vector-search-result-normalizer.js.map +1 -0
- package/dist/services/vector-search/vector-search.service.d.ts +33 -0
- package/dist/services/vector-search/vector-search.service.d.ts.map +1 -0
- package/dist/services/vector-search/vector-search.service.js +149 -0
- package/dist/services/vector-search/vector-search.service.js.map +1 -0
- package/dist/tools/forget-tool.js +14 -14
- package/dist/tools/pin-tool.js +14 -14
- package/dist/tools/unpin-tool.js +21 -21
- package/dist/types/alerts.types.d.ts +26 -0
- package/dist/types/alerts.types.d.ts.map +1 -0
- package/dist/types/alerts.types.js +2 -0
- package/dist/types/alerts.types.js.map +1 -0
- package/dist/types/embedding-provider-monitoring.types.d.ts +24 -0
- package/dist/types/embedding-provider-monitoring.types.d.ts.map +1 -0
- package/dist/types/embedding-provider-monitoring.types.js +2 -0
- package/dist/types/embedding-provider-monitoring.types.js.map +1 -0
- package/dist/types/embedding.types.d.ts +36 -1
- package/dist/types/embedding.types.d.ts.map +1 -1
- package/dist/types/migration.types.d.ts +131 -0
- package/dist/types/migration.types.d.ts.map +1 -0
- package/dist/types/migration.types.js +6 -0
- package/dist/types/migration.types.js.map +1 -0
- package/dist/types/spaced-repetition.types.d.ts +61 -0
- package/dist/types/spaced-repetition.types.d.ts.map +1 -0
- package/dist/types/spaced-repetition.types.js +6 -0
- package/dist/types/spaced-repetition.types.js.map +1 -0
- package/dist/types/vector-search.types.d.ts +96 -0
- package/dist/types/vector-search.types.d.ts.map +1 -0
- package/dist/types/vector-search.types.js +2 -0
- package/dist/types/vector-search.types.js.map +1 -0
- package/dist/utils/configuration-validator.d.ts +23 -0
- package/dist/utils/configuration-validator.d.ts.map +1 -0
- package/dist/utils/configuration-validator.js +102 -0
- package/dist/utils/configuration-validator.js.map +1 -0
- package/dist/utils/database.d.ts.map +1 -1
- package/dist/utils/database.js +101 -95
- package/dist/utils/database.js.map +1 -1
- package/dist/utils/environment-check.d.ts +8 -0
- package/dist/utils/environment-check.d.ts.map +1 -0
- package/dist/utils/environment-check.js +25 -0
- package/dist/utils/environment-check.js.map +1 -0
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +33 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +139 -125
- package/scripts/auto-setup.js +233 -233
- package/scripts/backup-daily.bat +28 -28
- package/scripts/backup-embeddings.js +108 -108
- package/scripts/check-db-integrity.js +93 -93
- package/scripts/debug-embeddings.js +184 -184
- package/scripts/direct-sql-migration.sql +36 -36
- package/scripts/docker-migration.sh +105 -105
- package/scripts/fix-migration.js +93 -93
- package/scripts/fix-vector-dimensions.js +206 -206
- package/scripts/migrate-embedding-data.js +307 -307
- package/scripts/regenerate-embeddings.js +144 -144
- package/scripts/restore-legacy.ps1 +60 -60
- package/scripts/run-migration.js +122 -122
- package/scripts/safe-migration.js +150 -150
- package/scripts/simple-migrate.js +41 -41
- package/scripts/simple-update.js +123 -123
- package/src/database/schema.sql +234 -159
- package/.cursor/rules/cache-management.mdc +0 -171
- package/.cursor/rules/database-schema.mdc +0 -344
- package/.cursor/rules/deployment.mdc +0 -596
- package/.cursor/rules/error-logging.mdc +0 -298
- package/.cursor/rules/forgetting-algorithms.mdc +0 -426
- package/.cursor/rules/http-server.mdc +0 -432
- package/.cursor/rules/hybrid-search.mdc +0 -424
- package/.cursor/rules/implementation.mdc +0 -369
- package/.cursor/rules/lightweight-embedding.mdc +0 -178
- package/.cursor/rules/mcp-client-development.mdc +0 -0
- package/.cursor/rules/mcp-server-development.mdc +0 -0
- package/.cursor/rules/mcp-tools-architecture.mdc +0 -205
- package/.cursor/rules/memento-memory-rule.mdc +0 -8
- package/.cursor/rules/memento-project-overview.mdc +0 -0
- package/.cursor/rules/memory-algorithms.mdc +0 -502
- package/.cursor/rules/monitoring.mdc +0 -622
- package/.cursor/rules/performance-alerts.mdc +0 -537
- package/.cursor/rules/performance-monitoring.mdc +0 -345
- package/.cursor/rules/performance-optimization.mdc +0 -563
- package/.cursor/rules/project-structure.mdc +0 -310
- package/.cursor/rules/testing.mdc +0 -473
- package/.dockerignore +0 -15
- package/.eslintrc.json +0 -34
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -51
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -45
- package/.github/ISSUE_TEMPLATE/question.md +0 -31
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -97
- package/AGENTS.md +0 -28
- package/CHANGELOG.md +0 -416
- package/CODE_OF_CONDUCT.md +0 -62
- package/CONTRIBUTING.md +0 -165
- package/DOCKER_SETUP_GUIDE.md +0 -84
- package/Dockerfile +0 -90
- package/backup/legacy-removal-20250930-201816/http-server-legacy.ts +0 -1068
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.ps1 +0 -46
- package/backup/legacy-removal-20250930-201816/rollback-to-legacy.sh +0 -48
- package/dist/server/index-backup.d.ts +0 -5
- package/dist/server/index-backup.d.ts.map +0 -1
- package/dist/server/index-backup.js +0 -793
- package/dist/server/index-backup.js.map +0 -1
- package/dist/server/index-refactored.d.ts +0 -6
- package/dist/server/index-refactored.d.ts.map +0 -1
- package/dist/server/index-refactored.js +0 -206
- package/dist/server/index-refactored.js.map +0 -1
- package/dist/services/performance-monitoring-integration.d.ts +0 -77
- package/dist/services/performance-monitoring-integration.d.ts.map +0 -1
- package/dist/services/performance-monitoring-integration.js +0 -177
- package/dist/services/performance-monitoring-integration.js.map +0 -1
- package/dist/test/debug-http-v2.d.ts +0 -5
- package/dist/test/debug-http-v2.d.ts.map +0 -1
- package/dist/test/debug-http-v2.js +0 -28
- package/dist/test/debug-http-v2.js.map +0 -1
- package/dist/test/performance-benchmark.d.ts +0 -57
- package/dist/test/performance-benchmark.d.ts.map +0 -1
- package/dist/test/performance-benchmark.js +0 -427
- package/dist/test/performance-benchmark.js.map +0 -1
- package/dist/test/test-alerts-direct.d.ts +0 -7
- package/dist/test/test-alerts-direct.d.ts.map +0 -1
- package/dist/test/test-alerts-direct.js +0 -101
- package/dist/test/test-alerts-direct.js.map +0 -1
- package/dist/test/test-batch-scheduler.d.ts +0 -2
- package/dist/test/test-batch-scheduler.d.ts.map +0 -1
- package/dist/test/test-batch-scheduler.js +0 -156
- package/dist/test/test-batch-scheduler.js.map +0 -1
- package/dist/test/test-client.d.ts +0 -5
- package/dist/test/test-client.d.ts.map +0 -1
- package/dist/test/test-client.js +0 -86
- package/dist/test/test-client.js.map +0 -1
- package/dist/test/test-embedding.d.ts +0 -6
- package/dist/test/test-embedding.d.ts.map +0 -1
- package/dist/test/test-embedding.js +0 -142
- package/dist/test/test-embedding.js.map +0 -1
- package/dist/test/test-error-logging.d.ts +0 -7
- package/dist/test/test-error-logging.d.ts.map +0 -1
- package/dist/test/test-error-logging.js +0 -105
- package/dist/test/test-error-logging.js.map +0 -1
- package/dist/test/test-forgetting.d.ts +0 -6
- package/dist/test/test-forgetting.d.ts.map +0 -1
- package/dist/test/test-forgetting.js +0 -154
- package/dist/test/test-forgetting.js.map +0 -1
- package/dist/test/test-gemini-embedding.d.ts +0 -7
- package/dist/test/test-gemini-embedding.d.ts.map +0 -1
- package/dist/test/test-gemini-embedding.js +0 -134
- package/dist/test/test-gemini-embedding.js.map +0 -1
- package/dist/test/test-http-server-v2-simple.d.ts +0 -6
- package/dist/test/test-http-server-v2-simple.d.ts.map +0 -1
- package/dist/test/test-http-server-v2-simple.js +0 -131
- package/dist/test/test-http-server-v2-simple.js.map +0 -1
- package/dist/test/test-http-server-v2.d.ts +0 -7
- package/dist/test/test-http-server-v2.d.ts.map +0 -1
- package/dist/test/test-http-server-v2.js +0 -529
- package/dist/test/test-http-server-v2.js.map +0 -1
- package/dist/test/test-lightweight-embedding.d.ts +0 -6
- package/dist/test/test-lightweight-embedding.d.ts.map +0 -1
- package/dist/test/test-lightweight-embedding.js +0 -189
- package/dist/test/test-lightweight-embedding.js.map +0 -1
- package/dist/test/test-m1-completion.d.ts +0 -7
- package/dist/test/test-m1-completion.d.ts.map +0 -1
- package/dist/test/test-m1-completion.js +0 -124
- package/dist/test/test-m1-completion.js.map +0 -1
- package/dist/test/test-memory-injection-prompt.d.ts +0 -2
- package/dist/test/test-memory-injection-prompt.d.ts.map +0 -1
- package/dist/test/test-memory-injection-prompt.js +0 -299
- package/dist/test/test-memory-injection-prompt.js.map +0 -1
- package/dist/test/test-performance-alerts.d.ts +0 -7
- package/dist/test/test-performance-alerts.d.ts.map +0 -1
- package/dist/test/test-performance-alerts.js +0 -109
- package/dist/test/test-performance-alerts.js.map +0 -1
- package/dist/test/test-performance-monitor.d.ts +0 -2
- package/dist/test/test-performance-monitor.d.ts.map +0 -1
- package/dist/test/test-performance-monitor.js +0 -182
- package/dist/test/test-performance-monitor.js.map +0 -1
- package/dist/test/test-performance-monitoring.d.ts +0 -6
- package/dist/test/test-performance-monitoring.d.ts.map +0 -1
- package/dist/test/test-performance-monitoring.js +0 -156
- package/dist/test/test-performance-monitoring.js.map +0 -1
- package/dist/test/test-search.d.ts +0 -5
- package/dist/test/test-search.d.ts.map +0 -1
- package/dist/test/test-search.js +0 -141
- package/dist/test/test-search.js.map +0 -1
- package/dist/test/test-simple-alerts.d.ts +0 -6
- package/dist/test/test-simple-alerts.d.ts.map +0 -1
- package/dist/test/test-simple-alerts.js +0 -106
- package/dist/test/test-simple-alerts.js.map +0 -1
- package/dist/test/test-vector-search-engine.d.ts +0 -2
- package/dist/test/test-vector-search-engine.d.ts.map +0 -1
- package/dist/test/test-vector-search-engine.js +0 -225
- package/dist/test/test-vector-search-engine.js.map +0 -1
- package/docker-compose.dev.yml +0 -50
- package/docker-compose.prod.yml +0 -77
- package/docker-compose.yml +0 -43
- package/docs/en/Memento-Goals.md +0 -217
- package/docs/en/Memento-M1-DetailSpecs.md +0 -130
- package/docs/en/Memento-Milestones.md +0 -135
- package/docs/en/Search-Ranking-Memory-Decay-Formulas.md +0 -177
- package/docs/en/api-reference.md +0 -658
- package/docs/en/architecture.md +0 -1302
- package/docs/en/developer-guide.md +0 -1005
- package/docs/en/user-manual.md +0 -595
- package/docs/ko/Memento-Goals.md +0 -217
- package/docs/ko/Memento-M1-DetailSpecs.md +0 -130
- package/docs/ko/Memento-Milestones.md +0 -134
- package/docs/ko/Search-Ranking-Memory-Decay-Formulas.md +0 -177
- package/docs/ko/api-reference.md +0 -658
- package/docs/ko/architecture.md +0 -1302
- package/docs/ko/developer-guide.md +0 -1006
- package/docs/ko/embedding-api-reference.md +0 -122
- package/docs/ko/embedding-configuration.md +0 -62
- package/docs/ko/embedding-performance-benchmark.md +0 -62
- package/docs/ko/embedding-service-guide.md +0 -314
- package/docs/ko/user-manual.md +0 -595
- package/env.example +0 -49
- package/install.sh +0 -191
- package/mcp-http-client.js +0 -218
- package/mcp.json +0 -0
- package/packages/mcp-client/docs/API-REFERENCE.md +0 -560
- package/packages/mcp-client/docs/BEST-PRACTICES.md +0 -564
- package/packages/mcp-client/docs/MIGRATION-GUIDE.md +0 -344
- package/packages/mcp-client/docs/PERFORMANCE-GUIDE.md +0 -476
- package/packages/mcp-client/docs/TROUBLESHOOTING.md +0 -564
- package/packages/mcp-client/package-lock.json +0 -907
- package/packages/mcp-client/package.json +0 -58
- package/packages/mcp-client/performance-optimizer.js +0 -428
- package/packages/mcp-client/test-basic.js +0 -65
- package/packages/mcp-client/test-integration.js +0 -366
- package/src/algorithms/forgetting-algorithm.spec.ts +0 -538
- package/src/algorithms/forgetting-algorithm.ts +0 -243
- package/src/algorithms/hybrid-search-engine.spec.ts +0 -484
- package/src/algorithms/hybrid-search-engine.ts +0 -489
- package/src/algorithms/search-engine.spec.ts +0 -429
- package/src/algorithms/search-engine.ts +0 -392
- package/src/algorithms/search-ranking.spec.ts +0 -293
- package/src/algorithms/search-ranking.ts +0 -407
- package/src/algorithms/spaced-repetition.spec.ts +0 -510
- package/src/algorithms/spaced-repetition.ts +0 -238
- package/src/algorithms/vector-search-engine.ts +0 -505
- package/src/client/index.spec.ts +0 -427
- package/src/client/index.ts +0 -222
- package/src/config/index.spec.ts +0 -339
- package/src/config/index.ts +0 -106
- package/src/database/init.spec.ts +0 -239
- package/src/database/init.ts +0 -130
- package/src/database/migrate.spec.ts +0 -293
- package/src/database/migrate.ts +0 -94
- package/src/database/migrations/001_add_embedding_metadata.sql +0 -29
- package/src/npm-client/context-injector.spec.ts +0 -335
- package/src/npm-client/context-injector.ts +0 -412
- package/src/npm-client/index.spec.ts +0 -108
- package/src/npm-client/index.ts +0 -96
- package/src/npm-client/memento-client.spec.ts +0 -549
- package/src/npm-client/memento-client.ts +0 -501
- package/src/npm-client/memory-manager.spec.ts +0 -374
- package/src/npm-client/memory-manager.ts +0 -414
- package/src/npm-client/types.spec.ts +0 -427
- package/src/npm-client/types.ts +0 -296
- package/src/npm-client/utils.spec.ts +0 -355
- package/src/npm-client/utils.ts +0 -423
- package/src/scripts/copy-assets.js +0 -37
- package/src/server/http-server.spec.ts +0 -648
- package/src/server/http-server.ts +0 -1030
- package/src/server/index-backup.ts +0 -875
- package/src/server/index-refactored.ts +0 -237
- package/src/server/index.spec.ts +0 -281
- package/src/server/index.ts +0 -347
- package/src/server/simple-mcp-server.spec.ts +0 -207
- package/src/server/simple-mcp-server.ts +0 -173
- package/src/services/async-optimizer.spec.ts +0 -569
- package/src/services/async-optimizer.ts +0 -484
- package/src/services/batch-scheduler.ts +0 -759
- package/src/services/cache-service.spec.ts +0 -372
- package/src/services/cache-service.ts +0 -434
- package/src/services/database-optimizer.spec.ts +0 -344
- package/src/services/database-optimizer.ts +0 -450
- package/src/services/embedding-provider-factory.ts +0 -173
- package/src/services/embedding-service.spec.ts +0 -342
- package/src/services/embedding-service.ts +0 -333
- package/src/services/error-logging-service.spec.ts +0 -416
- package/src/services/error-logging-service.ts +0 -383
- package/src/services/forgetting-policy-service.spec.ts +0 -140
- package/src/services/forgetting-policy-service.ts +0 -334
- package/src/services/gemini-embedding-service.spec.ts +0 -463
- package/src/services/gemini-embedding-service.ts +0 -283
- package/src/services/lightweight-embedding-service.spec.ts +0 -458
- package/src/services/lightweight-embedding-service.ts +0 -324
- package/src/services/memory-embedding-service.spec.ts +0 -417
- package/src/services/memory-embedding-service.ts +0 -289
- package/src/services/minilm-embedding-service.spec.ts +0 -104
- package/src/services/minilm-embedding-service.ts +0 -262
- package/src/services/performance-alert-service.spec.ts +0 -517
- package/src/services/performance-alert-service.ts +0 -477
- package/src/services/performance-monitor.spec.ts +0 -401
- package/src/services/performance-monitor.ts +0 -532
- package/src/services/performance-monitoring-integration.spec.ts +0 -478
- package/src/services/performance-monitoring-integration.ts.bak +0 -276
- package/src/services/unified-embedding-service.spec.ts +0 -224
- package/src/services/unified-embedding-service.ts +0 -255
- package/src/test/debug-http-v2.ts +0 -30
- package/src/test/embedding-integration-test.spec.ts +0 -295
- package/src/test/embedding-integration-test.ts +0 -295
- package/src/test/embedding-performance-benchmark.spec.ts +0 -354
- package/src/test/embedding-performance-benchmark.ts +0 -312
- package/src/test/performance-benchmark.ts +0 -565
- package/src/test/test-alerts-direct.ts +0 -136
- package/src/test/test-batch-scheduler-simple.spec.ts +0 -122
- package/src/test/test-batch-scheduler.spec.ts +0 -453
- package/src/test/test-batch-scheduler.ts +0 -182
- package/src/test/test-client.ts +0 -97
- package/src/test/test-embedding.ts +0 -153
- package/src/test/test-error-handling.spec.ts +0 -575
- package/src/test/test-error-logging.ts +0 -117
- package/src/test/test-forgetting.ts +0 -162
- package/src/test/test-gemini-embedding.ts +0 -159
- package/src/test/test-http-server-v2-simple.ts +0 -147
- package/src/test/test-http-server-v2.ts +0 -586
- package/src/test/test-hybrid-search-engine.spec.ts +0 -521
- package/src/test/test-integration-fixed.spec.ts +0 -612
- package/src/test/test-integration.spec.ts +0 -463
- package/src/test/test-lightweight-embedding.ts +0 -208
- package/src/test/test-m1-completion.spec.ts +0 -614
- package/src/test/test-m1-completion.ts +0 -141
- package/src/test/test-m1-integration.spec.ts +0 -514
- package/src/test/test-memory-injection-prompt.spec.ts +0 -650
- package/src/test/test-memory-injection-prompt.ts +0 -391
- package/src/test/test-performance-alerts.ts +0 -125
- package/src/test/test-performance-monitor-updates.spec.ts +0 -490
- package/src/test/test-performance-monitor.spec.ts +0 -284
- package/src/test/test-performance-monitor.ts +0 -228
- package/src/test/test-performance-monitoring.ts +0 -171
- package/src/test/test-search.ts +0 -151
- package/src/test/test-simple-alerts.ts +0 -136
- package/src/test/test-vector-search-engine.spec.ts +0 -408
- package/src/test/test-vector-search-engine.ts +0 -303
- package/src/tools/base-tool.ts +0 -189
- package/src/tools/cleanup-memory-tool.ts +0 -77
- package/src/tools/database-optimize-tool.ts +0 -79
- package/src/tools/error-stats.ts +0 -119
- package/src/tools/forget-tool.spec.ts +0 -613
- package/src/tools/forget-tool.ts +0 -454
- package/src/tools/forgetting-stats-tool.ts +0 -47
- package/src/tools/index.ts +0 -71
- package/src/tools/memory-injection-prompt.ts +0 -257
- package/src/tools/performance-alerts.ts +0 -226
- package/src/tools/performance-stats-tool.ts +0 -48
- package/src/tools/pin-tool.spec.ts +0 -497
- package/src/tools/pin-tool.ts +0 -277
- package/src/tools/recall-tool.spec.ts +0 -475
- package/src/tools/recall-tool.ts +0 -389
- package/src/tools/remember-tool.spec.ts +0 -469
- package/src/tools/remember-tool.ts +0 -112
- package/src/tools/resolve-error.ts +0 -69
- package/src/tools/tool-registry.ts +0 -417
- package/src/tools/types.ts +0 -63
- package/src/tools/unpin-tool.spec.ts +0 -549
- package/src/tools/unpin-tool.ts +0 -306
- package/src/types/embedding.types.ts +0 -78
- package/src/types/index.spec.ts +0 -420
- package/src/types/index.ts +0 -117
- package/src/utils/database.spec.ts +0 -77
- package/src/utils/database.ts +0 -458
- package/src/utils/stopwords.ts +0 -128
- package/start-docker-setup.bat +0 -38
- package/static/logo.png +0 -0
- package/static/memento_logo.svg +0 -2
- package/test-docker.js +0 -103
- package/tsconfig.json +0 -46
- package/vitest.config.ts +0 -23
package/src/database/schema.sql
CHANGED
|
@@ -1,159 +1,234 @@
|
|
|
1
|
-
-- Memento MCP Server SQLite 스키마
|
|
2
|
-
-- M1 단계: 개인용 SQLite 임베디드 데이터베이스
|
|
3
|
-
|
|
4
|
-
-- 메인 기억 테이블
|
|
5
|
-
CREATE TABLE IF NOT EXISTS memory_item (
|
|
6
|
-
id TEXT PRIMARY KEY,
|
|
7
|
-
type TEXT CHECK (type IN ('working','episodic','semantic','procedural')) NOT NULL,
|
|
8
|
-
content TEXT NOT NULL,
|
|
9
|
-
importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
|
|
10
|
-
privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
|
|
11
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
12
|
-
last_accessed TIMESTAMP,
|
|
13
|
-
pinned BOOLEAN DEFAULT FALSE,
|
|
14
|
-
tags TEXT, -- JSON 배열로 저장
|
|
15
|
-
source TEXT,
|
|
16
|
-
view_count INTEGER DEFAULT 0,
|
|
17
|
-
cite_count INTEGER DEFAULT 0,
|
|
18
|
-
edit_count INTEGER DEFAULT 0
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
-- 태그 테이블
|
|
22
|
-
CREATE TABLE IF NOT EXISTS memory_tag (
|
|
23
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
24
|
-
name TEXT NOT NULL UNIQUE,
|
|
25
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
26
|
-
);
|
|
27
|
-
|
|
28
|
-
-- 메모리-태그 관계 테이블 (N:N)
|
|
29
|
-
CREATE TABLE IF NOT EXISTS memory_item_tag (
|
|
30
|
-
memory_id TEXT NOT NULL,
|
|
31
|
-
tag_id INTEGER NOT NULL,
|
|
32
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
-
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
34
|
-
FOREIGN KEY (tag_id) REFERENCES memory_tag(id) ON DELETE CASCADE,
|
|
35
|
-
PRIMARY KEY (memory_id, tag_id)
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
-- 기억 간 관계 테이블
|
|
39
|
-
CREATE TABLE IF NOT EXISTS memory_link (
|
|
40
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
41
|
-
source_id TEXT NOT NULL,
|
|
42
|
-
target_id TEXT NOT NULL,
|
|
43
|
-
relation_type TEXT CHECK (relation_type IN ('cause_of', 'derived_from', 'duplicates', 'contradicts')) NOT NULL,
|
|
44
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
45
|
-
FOREIGN KEY (source_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
46
|
-
FOREIGN KEY (target_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
47
|
-
UNIQUE(source_id, target_id, relation_type)
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
-- 피드백 이벤트 테이블
|
|
51
|
-
CREATE TABLE IF NOT EXISTS feedback_event (
|
|
52
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
53
|
-
memory_id TEXT NOT NULL,
|
|
54
|
-
event TEXT CHECK (event IN ('used', 'edited', 'neglected', 'helpful', 'not_helpful')) NOT NULL,
|
|
55
|
-
score REAL,
|
|
56
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
57
|
-
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
-- 작업기억 버퍼 테이블 (세션별)
|
|
61
|
-
CREATE TABLE IF NOT EXISTS wm_buffer (
|
|
62
|
-
session_id TEXT PRIMARY KEY,
|
|
63
|
-
items TEXT NOT NULL, -- JSON 배열로 저장
|
|
64
|
-
token_budget INTEGER DEFAULT 4000,
|
|
65
|
-
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
66
|
-
expires_at TIMESTAMP NOT NULL
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
-- 인덱스 생성
|
|
70
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_type ON memory_item(type);
|
|
71
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_created_at ON memory_item(created_at);
|
|
72
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_last_accessed ON memory_item(last_accessed);
|
|
73
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_pinned ON memory_item(pinned);
|
|
74
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_privacy_scope ON memory_item(privacy_scope);
|
|
75
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_importance ON memory_item(importance);
|
|
76
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_user_id ON memory_item(id); -- user_id 대신 id 사용
|
|
77
|
-
CREATE INDEX IF NOT EXISTS idx_memory_item_project_id ON memory_item(id); -- project_id 대신 id 사용
|
|
78
|
-
|
|
79
|
-
CREATE INDEX IF NOT EXISTS idx_memory_tag_memory_id ON memory_item_tag(memory_id);
|
|
80
|
-
CREATE INDEX IF NOT EXISTS idx_memory_tag_tag_id ON memory_item_tag(tag_id);
|
|
81
|
-
|
|
82
|
-
CREATE INDEX IF NOT EXISTS idx_memory_link_source ON memory_link(source_id);
|
|
83
|
-
CREATE INDEX IF NOT EXISTS idx_memory_link_target ON memory_link(target_id);
|
|
84
|
-
|
|
85
|
-
CREATE INDEX IF NOT EXISTS idx_feedback_memory_id ON feedback_event(memory_id);
|
|
86
|
-
CREATE INDEX IF NOT EXISTS idx_feedback_event ON feedback_event(event);
|
|
87
|
-
CREATE INDEX IF NOT EXISTS idx_feedback_created_at ON feedback_event(created_at);
|
|
88
|
-
|
|
89
|
-
CREATE INDEX IF NOT EXISTS idx_wm_buffer_expires_at ON wm_buffer(expires_at);
|
|
90
|
-
|
|
91
|
-
-- FTS5 가상 테이블 (전문 검색)
|
|
92
|
-
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_fts USING fts5(
|
|
93
|
-
content,
|
|
94
|
-
tags,
|
|
95
|
-
source,
|
|
96
|
-
content='memory_item',
|
|
97
|
-
content_rowid='rowid'
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
-- FTS5 트리거 (자동 동기화)
|
|
101
|
-
CREATE TRIGGER IF NOT EXISTS memory_item_fts_insert AFTER INSERT ON memory_item BEGIN
|
|
102
|
-
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
103
|
-
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
104
|
-
END;
|
|
105
|
-
|
|
106
|
-
CREATE TRIGGER IF NOT EXISTS memory_item_fts_delete AFTER DELETE ON memory_item BEGIN
|
|
107
|
-
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
108
|
-
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
109
|
-
END;
|
|
110
|
-
|
|
111
|
-
CREATE TRIGGER IF NOT EXISTS memory_item_fts_update AFTER UPDATE ON memory_item BEGIN
|
|
112
|
-
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
113
|
-
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
114
|
-
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
115
|
-
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
116
|
-
END;
|
|
117
|
-
|
|
118
|
-
-- 임베딩 저장 테이블
|
|
119
|
-
CREATE TABLE IF NOT EXISTS memory_embedding (
|
|
120
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
121
|
-
memory_id TEXT NOT NULL,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
)
|
|
129
|
-
|
|
130
|
-
-- 임베딩
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
--
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
--
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
1
|
+
-- Memento MCP Server SQLite 스키마
|
|
2
|
+
-- M1 단계: 개인용 SQLite 임베디드 데이터베이스
|
|
3
|
+
|
|
4
|
+
-- 메인 기억 테이블
|
|
5
|
+
CREATE TABLE IF NOT EXISTS memory_item (
|
|
6
|
+
id TEXT PRIMARY KEY,
|
|
7
|
+
type TEXT CHECK (type IN ('working','episodic','semantic','procedural')) NOT NULL,
|
|
8
|
+
content TEXT NOT NULL,
|
|
9
|
+
importance REAL CHECK (importance >= 0 AND importance <= 1) DEFAULT 0.5,
|
|
10
|
+
privacy_scope TEXT CHECK (privacy_scope IN ('private','team','public')) DEFAULT 'private',
|
|
11
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
12
|
+
last_accessed TIMESTAMP,
|
|
13
|
+
pinned BOOLEAN DEFAULT FALSE,
|
|
14
|
+
tags TEXT, -- JSON 배열로 저장
|
|
15
|
+
source TEXT,
|
|
16
|
+
view_count INTEGER DEFAULT 0,
|
|
17
|
+
cite_count INTEGER DEFAULT 0,
|
|
18
|
+
edit_count INTEGER DEFAULT 0
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
-- 태그 테이블
|
|
22
|
+
CREATE TABLE IF NOT EXISTS memory_tag (
|
|
23
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
24
|
+
name TEXT NOT NULL UNIQUE,
|
|
25
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
-- 메모리-태그 관계 테이블 (N:N)
|
|
29
|
+
CREATE TABLE IF NOT EXISTS memory_item_tag (
|
|
30
|
+
memory_id TEXT NOT NULL,
|
|
31
|
+
tag_id INTEGER NOT NULL,
|
|
32
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
34
|
+
FOREIGN KEY (tag_id) REFERENCES memory_tag(id) ON DELETE CASCADE,
|
|
35
|
+
PRIMARY KEY (memory_id, tag_id)
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
-- 기억 간 관계 테이블
|
|
39
|
+
CREATE TABLE IF NOT EXISTS memory_link (
|
|
40
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
41
|
+
source_id TEXT NOT NULL,
|
|
42
|
+
target_id TEXT NOT NULL,
|
|
43
|
+
relation_type TEXT CHECK (relation_type IN ('cause_of', 'derived_from', 'duplicates', 'contradicts')) NOT NULL,
|
|
44
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
45
|
+
FOREIGN KEY (source_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
46
|
+
FOREIGN KEY (target_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
47
|
+
UNIQUE(source_id, target_id, relation_type)
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
-- 피드백 이벤트 테이블
|
|
51
|
+
CREATE TABLE IF NOT EXISTS feedback_event (
|
|
52
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
53
|
+
memory_id TEXT NOT NULL,
|
|
54
|
+
event TEXT CHECK (event IN ('used', 'edited', 'neglected', 'helpful', 'not_helpful')) NOT NULL,
|
|
55
|
+
score REAL,
|
|
56
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
57
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
-- 작업기억 버퍼 테이블 (세션별)
|
|
61
|
+
CREATE TABLE IF NOT EXISTS wm_buffer (
|
|
62
|
+
session_id TEXT PRIMARY KEY,
|
|
63
|
+
items TEXT NOT NULL, -- JSON 배열로 저장
|
|
64
|
+
token_budget INTEGER DEFAULT 4000,
|
|
65
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
66
|
+
expires_at TIMESTAMP NOT NULL
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
-- 인덱스 생성
|
|
70
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_type ON memory_item(type);
|
|
71
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_created_at ON memory_item(created_at);
|
|
72
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_last_accessed ON memory_item(last_accessed);
|
|
73
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_pinned ON memory_item(pinned);
|
|
74
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_privacy_scope ON memory_item(privacy_scope);
|
|
75
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_importance ON memory_item(importance);
|
|
76
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_user_id ON memory_item(id); -- user_id 대신 id 사용
|
|
77
|
+
CREATE INDEX IF NOT EXISTS idx_memory_item_project_id ON memory_item(id); -- project_id 대신 id 사용
|
|
78
|
+
|
|
79
|
+
CREATE INDEX IF NOT EXISTS idx_memory_tag_memory_id ON memory_item_tag(memory_id);
|
|
80
|
+
CREATE INDEX IF NOT EXISTS idx_memory_tag_tag_id ON memory_item_tag(tag_id);
|
|
81
|
+
|
|
82
|
+
CREATE INDEX IF NOT EXISTS idx_memory_link_source ON memory_link(source_id);
|
|
83
|
+
CREATE INDEX IF NOT EXISTS idx_memory_link_target ON memory_link(target_id);
|
|
84
|
+
|
|
85
|
+
CREATE INDEX IF NOT EXISTS idx_feedback_memory_id ON feedback_event(memory_id);
|
|
86
|
+
CREATE INDEX IF NOT EXISTS idx_feedback_event ON feedback_event(event);
|
|
87
|
+
CREATE INDEX IF NOT EXISTS idx_feedback_created_at ON feedback_event(created_at);
|
|
88
|
+
|
|
89
|
+
CREATE INDEX IF NOT EXISTS idx_wm_buffer_expires_at ON wm_buffer(expires_at);
|
|
90
|
+
|
|
91
|
+
-- FTS5 가상 테이블 (전문 검색)
|
|
92
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_fts USING fts5(
|
|
93
|
+
content,
|
|
94
|
+
tags,
|
|
95
|
+
source,
|
|
96
|
+
content='memory_item',
|
|
97
|
+
content_rowid='rowid'
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
-- FTS5 트리거 (자동 동기화)
|
|
101
|
+
CREATE TRIGGER IF NOT EXISTS memory_item_fts_insert AFTER INSERT ON memory_item BEGIN
|
|
102
|
+
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
103
|
+
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
104
|
+
END;
|
|
105
|
+
|
|
106
|
+
CREATE TRIGGER IF NOT EXISTS memory_item_fts_delete AFTER DELETE ON memory_item BEGIN
|
|
107
|
+
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
108
|
+
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
109
|
+
END;
|
|
110
|
+
|
|
111
|
+
CREATE TRIGGER IF NOT EXISTS memory_item_fts_update AFTER UPDATE ON memory_item BEGIN
|
|
112
|
+
INSERT INTO memory_item_fts(memory_item_fts, rowid, content, tags, source)
|
|
113
|
+
VALUES('delete', old.rowid, old.content, old.tags, old.source);
|
|
114
|
+
INSERT INTO memory_item_fts(rowid, content, tags, source)
|
|
115
|
+
VALUES (new.rowid, new.content, new.tags, new.source);
|
|
116
|
+
END;
|
|
117
|
+
|
|
118
|
+
-- 임베딩 저장 테이블 (다중 제공자/차원 지원)
|
|
119
|
+
CREATE TABLE IF NOT EXISTS memory_embedding (
|
|
120
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
121
|
+
memory_id TEXT NOT NULL,
|
|
122
|
+
embedding_provider TEXT NOT NULL DEFAULT 'tfidf',
|
|
123
|
+
projection_type TEXT NOT NULL DEFAULT 'native',
|
|
124
|
+
embedding TEXT NOT NULL, -- JSON 배열로 저장
|
|
125
|
+
dim INTEGER NOT NULL, -- 원본 벡터 차원
|
|
126
|
+
dimensions INTEGER DEFAULT 0, -- 저장된 벡터 차원 (패딩/축소 적용 후)
|
|
127
|
+
model TEXT, -- 사용된 모델명
|
|
128
|
+
precision INTEGER DEFAULT 32, -- 벡터 정밀도 (float32 등)
|
|
129
|
+
normalized BOOLEAN DEFAULT FALSE, -- 정규화 여부
|
|
130
|
+
version INTEGER DEFAULT 1, -- 임베딩 버전
|
|
131
|
+
created_by TEXT DEFAULT 'system',
|
|
132
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
133
|
+
FOREIGN KEY (memory_id) REFERENCES memory_item(id) ON DELETE CASCADE,
|
|
134
|
+
UNIQUE(memory_id, embedding_provider, projection_type)
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
-- 임베딩 테이블 인덱스
|
|
138
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_memory_id ON memory_embedding(memory_id);
|
|
139
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_memory_provider ON memory_embedding(memory_id, embedding_provider);
|
|
140
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_provider_projection ON memory_embedding(embedding_provider, projection_type);
|
|
141
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_dimensions ON memory_embedding(dimensions);
|
|
142
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_model ON memory_embedding(model);
|
|
143
|
+
CREATE INDEX IF NOT EXISTS idx_memory_embedding_version ON memory_embedding(version);
|
|
144
|
+
|
|
145
|
+
-- 임베딩 모델 레지스트리 (제공자별 차원 및 메타데이터)
|
|
146
|
+
CREATE TABLE IF NOT EXISTS embedding_model_registry (
|
|
147
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
148
|
+
provider TEXT NOT NULL,
|
|
149
|
+
model TEXT NOT NULL,
|
|
150
|
+
projection_type TEXT NOT NULL DEFAULT 'native',
|
|
151
|
+
dimensions INTEGER NOT NULL,
|
|
152
|
+
vec_table TEXT, -- sqlite-vec 테이블명
|
|
153
|
+
priority INTEGER DEFAULT 100,
|
|
154
|
+
status TEXT CHECK (status IN ('active','inactive','deprecated')) DEFAULT 'active',
|
|
155
|
+
last_checked TIMESTAMP,
|
|
156
|
+
metadata TEXT,
|
|
157
|
+
UNIQUE(provider, projection_type),
|
|
158
|
+
UNIQUE(provider, model),
|
|
159
|
+
UNIQUE(vec_table)
|
|
160
|
+
);
|
|
161
|
+
|
|
162
|
+
-- VEC 가상 테이블 (벡터 검색) - sqlite-vec 확장 필요
|
|
163
|
+
-- 주의: sqlite-vec 확장이 설치되어 있어야 함
|
|
164
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec USING vec0(embedding float[384]);
|
|
165
|
+
|
|
166
|
+
-- 제공자별 VEC 테이블들
|
|
167
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec_tfidf USING vec0(embedding float[384]);
|
|
168
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec_minilm USING vec0(embedding float[384]);
|
|
169
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec_openai USING vec0(embedding float[1536]);
|
|
170
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_item_vec_gemini USING vec0(embedding float[768]);
|
|
171
|
+
|
|
172
|
+
-- VEC 테이블 트리거 (임베딩이 생성될 때 자동으로 VEC 테이블에 추가)
|
|
173
|
+
-- 제공자별 테이블에 저장하도록 수정
|
|
174
|
+
CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_insert AFTER INSERT ON memory_embedding BEGIN
|
|
175
|
+
INSERT INTO memory_item_vec(rowid, embedding)
|
|
176
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
177
|
+
WHERE NEW.dimensions = 384;
|
|
178
|
+
|
|
179
|
+
INSERT INTO memory_item_vec_tfidf(rowid, embedding)
|
|
180
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
181
|
+
WHERE NEW.embedding_provider = 'tfidf' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
182
|
+
|
|
183
|
+
INSERT INTO memory_item_vec_minilm(rowid, embedding)
|
|
184
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
185
|
+
WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
186
|
+
|
|
187
|
+
INSERT INTO memory_item_vec_openai(rowid, embedding)
|
|
188
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
189
|
+
WHERE NEW.embedding_provider = 'openai' AND NEW.dimensions = 1536 AND NEW.projection_type = 'native';
|
|
190
|
+
|
|
191
|
+
INSERT INTO memory_item_vec_gemini(rowid, embedding)
|
|
192
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
193
|
+
WHERE NEW.embedding_provider = 'gemini' AND NEW.dimensions = 768 AND NEW.projection_type = 'native';
|
|
194
|
+
END;
|
|
195
|
+
|
|
196
|
+
CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_update AFTER UPDATE ON memory_embedding BEGIN
|
|
197
|
+
DELETE FROM memory_item_vec WHERE rowid = NEW.id;
|
|
198
|
+
DELETE FROM memory_item_vec_tfidf WHERE rowid = NEW.id;
|
|
199
|
+
DELETE FROM memory_item_vec_minilm WHERE rowid = NEW.id;
|
|
200
|
+
DELETE FROM memory_item_vec_openai WHERE rowid = NEW.id;
|
|
201
|
+
DELETE FROM memory_item_vec_gemini WHERE rowid = NEW.id;
|
|
202
|
+
|
|
203
|
+
INSERT INTO memory_item_vec(rowid, embedding)
|
|
204
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
205
|
+
WHERE NEW.dimensions = 384;
|
|
206
|
+
|
|
207
|
+
INSERT INTO memory_item_vec_tfidf(rowid, embedding)
|
|
208
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
209
|
+
WHERE NEW.embedding_provider = 'tfidf' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
210
|
+
|
|
211
|
+
INSERT INTO memory_item_vec_minilm(rowid, embedding)
|
|
212
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
213
|
+
WHERE NEW.embedding_provider = 'minilm' AND NEW.dimensions = 384 AND NEW.projection_type = 'native';
|
|
214
|
+
|
|
215
|
+
INSERT INTO memory_item_vec_openai(rowid, embedding)
|
|
216
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
217
|
+
WHERE NEW.embedding_provider = 'openai' AND NEW.dimensions = 1536 AND NEW.projection_type = 'native';
|
|
218
|
+
|
|
219
|
+
INSERT INTO memory_item_vec_gemini(rowid, embedding)
|
|
220
|
+
SELECT NEW.id, json_extract(NEW.embedding, '$')
|
|
221
|
+
WHERE NEW.embedding_provider = 'gemini' AND NEW.dimensions = 768 AND NEW.projection_type = 'native';
|
|
222
|
+
END;
|
|
223
|
+
|
|
224
|
+
CREATE TRIGGER IF NOT EXISTS memory_embedding_vec_delete AFTER DELETE ON memory_embedding BEGIN
|
|
225
|
+
DELETE FROM memory_item_vec WHERE rowid = OLD.id;
|
|
226
|
+
DELETE FROM memory_item_vec_tfidf WHERE rowid = OLD.id;
|
|
227
|
+
DELETE FROM memory_item_vec_minilm WHERE rowid = OLD.id;
|
|
228
|
+
DELETE FROM memory_item_vec_openai WHERE rowid = OLD.id;
|
|
229
|
+
DELETE FROM memory_item_vec_gemini WHERE rowid = OLD.id;
|
|
230
|
+
END;
|
|
231
|
+
|
|
232
|
+
-- 초기 데이터 삽입 (선택사항)
|
|
233
|
+
-- INSERT OR IGNORE INTO memory_item (id, type, content, importance, privacy_scope, pinned)
|
|
234
|
+
-- VALUES ('welcome', 'semantic', 'Memento MCP Server에 오신 것을 환영합니다!', 1.0, 'private', TRUE);
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
globs: *.ts,*.js
|
|
3
|
-
description: 캐시 서비스 개발 규칙
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 캐시 관리 서비스 개발 규칙
|
|
7
|
-
|
|
8
|
-
## 🗄️ 캐시 서비스 아키텍처
|
|
9
|
-
|
|
10
|
-
### 핵심 컴포넌트
|
|
11
|
-
|
|
12
|
-
#### 1. Cache Service (`src/services/cache-service.ts` - 352줄)
|
|
13
|
-
- **LRU 캐시 구현**: 최근 사용 항목 우선 유지
|
|
14
|
-
- **TTL 관리**: 시간 기반 캐시 만료
|
|
15
|
-
- **메모리 효율적 관리**: 캐시 크기 제한 및 정리
|
|
16
|
-
- **통계 수집**: 캐시 성능 메트릭 제공
|
|
17
|
-
|
|
18
|
-
#### 2. 캐시 타입별 관리
|
|
19
|
-
- **검색 결과 캐시**: 검색 성능 향상
|
|
20
|
-
- **임베딩 캐시**: 임베딩 생성 비용 절약
|
|
21
|
-
- **메타데이터 캐시**: 자주 접근하는 데이터
|
|
22
|
-
- **세션 캐시**: 사용자 세션 정보
|
|
23
|
-
|
|
24
|
-
## 🔧 캐시 구현 가이드라인
|
|
25
|
-
|
|
26
|
-
### LRU 캐시 구현
|
|
27
|
-
```typescript
|
|
28
|
-
interface LRUCache<T> {
|
|
29
|
-
maxSize: number;
|
|
30
|
-
ttl: number;
|
|
31
|
-
get(key: string): T | null;
|
|
32
|
-
set(key: string, value: T): void;
|
|
33
|
-
delete(key: string): boolean;
|
|
34
|
-
clear(): void;
|
|
35
|
-
size(): number;
|
|
36
|
-
}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### TTL 관리
|
|
40
|
-
- **검색 결과**: 1시간 (3600초)
|
|
41
|
-
- **임베딩**: 24시간 (86400초)
|
|
42
|
-
- **메타데이터**: 30분 (1800초)
|
|
43
|
-
- **세션**: 2시간 (7200초)
|
|
44
|
-
|
|
45
|
-
### 캐시 키 전략
|
|
46
|
-
- **검색 결과**: `search:${hash(query)}`
|
|
47
|
-
- **임베딩**: `embedding:${hash(text)}`
|
|
48
|
-
- **메타데이터**: `meta:${type}:${id}`
|
|
49
|
-
- **세션**: `session:${sessionId}`
|
|
50
|
-
|
|
51
|
-
## 📊 캐시 성능 메트릭
|
|
52
|
-
|
|
53
|
-
### 주요 지표
|
|
54
|
-
- **캐시 히트율**: 80% 이상 목표
|
|
55
|
-
- **캐시 크기**: 메모리 사용량 제한
|
|
56
|
-
- **평균 응답 시간**: 캐시된 데이터 접근 시간
|
|
57
|
-
- **캐시 정리 빈도**: 만료된 항목 제거 빈도
|
|
58
|
-
|
|
59
|
-
### 모니터링
|
|
60
|
-
- **실시간 통계**: 현재 캐시 상태
|
|
61
|
-
- **히스토리 추적**: 성능 변화 추이
|
|
62
|
-
- **알림 설정**: 임계값 초과 시 알림
|
|
63
|
-
- **리포트 생성**: 정기적인 성능 리포트
|
|
64
|
-
|
|
65
|
-
## 🚀 캐시 최적화 전략
|
|
66
|
-
|
|
67
|
-
### 메모리 최적화
|
|
68
|
-
1. **크기 제한**: 최대 캐시 크기 설정
|
|
69
|
-
2. **자동 정리**: 만료된 항목 자동 제거
|
|
70
|
-
3. **우선순위**: 중요한 데이터 우선 유지
|
|
71
|
-
4. **압축**: 대용량 데이터 압축 저장
|
|
72
|
-
|
|
73
|
-
### 성능 최적화
|
|
74
|
-
1. **병렬 처리**: 동시 캐시 접근 처리
|
|
75
|
-
2. **배치 작업**: 대량 캐시 작업 최적화
|
|
76
|
-
3. **지연 로딩**: 필요 시에만 데이터 로드
|
|
77
|
-
4. **예측적 캐싱**: 자주 사용될 데이터 미리 캐싱
|
|
78
|
-
|
|
79
|
-
### 안정성 보장
|
|
80
|
-
1. **에러 처리**: 캐시 실패 시 대체 방안
|
|
81
|
-
2. **데이터 일관성**: 캐시와 원본 데이터 동기화
|
|
82
|
-
3. **복구 메커니즘**: 캐시 손상 시 자동 복구
|
|
83
|
-
4. **백업 전략**: 중요한 캐시 데이터 백업
|
|
84
|
-
|
|
85
|
-
## 🔍 캐시 디버깅
|
|
86
|
-
|
|
87
|
-
### 일반적인 문제
|
|
88
|
-
- **캐시 미스**: 캐시 키 불일치 또는 만료
|
|
89
|
-
- **메모리 누수**: 캐시 크기 제한 초과
|
|
90
|
-
- **성능 저하**: 캐시 히트율 낮음
|
|
91
|
-
- **데이터 불일치**: 캐시와 원본 데이터 차이
|
|
92
|
-
|
|
93
|
-
### 디버깅 도구
|
|
94
|
-
- **캐시 통계**: 현재 캐시 상태 확인
|
|
95
|
-
- **로그 분석**: 캐시 접근 패턴 분석
|
|
96
|
-
- **프로파일링**: 캐시 성능 측정
|
|
97
|
-
- **모니터링**: 실시간 캐시 상태 추적
|
|
98
|
-
|
|
99
|
-
## 📋 캐시 정책
|
|
100
|
-
|
|
101
|
-
### 저장 정책
|
|
102
|
-
- **자동 저장**: 자주 접근하는 데이터 자동 캐싱
|
|
103
|
-
- **수동 저장**: 사용자 요청에 의한 캐싱
|
|
104
|
-
- **조건부 저장**: 특정 조건 만족 시 캐싱
|
|
105
|
-
- **우선순위 저장**: 중요한 데이터 우선 캐싱
|
|
106
|
-
|
|
107
|
-
### 만료 정책
|
|
108
|
-
- **시간 기반**: TTL 만료 시 자동 삭제
|
|
109
|
-
- **크기 기반**: 캐시 크기 초과 시 오래된 항목 삭제
|
|
110
|
-
- **사용 기반**: 사용하지 않는 항목 우선 삭제
|
|
111
|
-
- **수동 삭제**: 사용자 요청에 의한 삭제
|
|
112
|
-
|
|
113
|
-
### 동기화 정책
|
|
114
|
-
- **즉시 동기화**: 데이터 변경 시 즉시 캐시 업데이트
|
|
115
|
-
- **지연 동기화**: 주기적으로 캐시 동기화
|
|
116
|
-
- **조건부 동기화**: 특정 조건에서만 동기화
|
|
117
|
-
- **수동 동기화**: 사용자 요청에 의한 동기화
|
|
118
|
-
|
|
119
|
-
## 🧪 캐시 테스트
|
|
120
|
-
|
|
121
|
-
### 단위 테스트
|
|
122
|
-
- **기본 기능**: 캐시 저장/조회/삭제 테스트
|
|
123
|
-
- **TTL 테스트**: 시간 기반 만료 테스트
|
|
124
|
-
- **크기 제한**: 최대 크기 초과 시 동작 테스트
|
|
125
|
-
- **에러 처리**: 예외 상황 처리 테스트
|
|
126
|
-
|
|
127
|
-
### 성능 테스트
|
|
128
|
-
- **부하 테스트**: 높은 부하에서의 캐시 성능
|
|
129
|
-
- **동시성 테스트**: 동시 접근 시 안정성
|
|
130
|
-
- **메모리 테스트**: 메모리 사용량 측정
|
|
131
|
-
- **응답 시간**: 캐시 접근 응답 시간 측정
|
|
132
|
-
|
|
133
|
-
### 통합 테스트
|
|
134
|
-
- **전체 시스템**: 캐시와 다른 컴포넌트 연동 테스트
|
|
135
|
-
- **데이터 일관성**: 캐시와 원본 데이터 일치성 확인
|
|
136
|
-
- **장애 복구**: 캐시 실패 시 대체 방안 테스트
|
|
137
|
-
- **성능 영향**: 캐시 도입 시 전체 성능 영향 측정
|
|
138
|
-
|
|
139
|
-
## 📈 캐시 모니터링
|
|
140
|
-
|
|
141
|
-
### 실시간 모니터링
|
|
142
|
-
- **캐시 크기**: 현재 사용 중인 메모리
|
|
143
|
-
- **히트율**: 캐시 성공률
|
|
144
|
-
- **응답 시간**: 캐시 접근 속도
|
|
145
|
-
- **에러율**: 캐시 관련 에러 발생률
|
|
146
|
-
|
|
147
|
-
### 알림 설정
|
|
148
|
-
- **히트율 저하**: 70% 미만 시 경고
|
|
149
|
-
- **메모리 사용량**: 90% 초과 시 경고
|
|
150
|
-
- **응답 시간**: 100ms 초과 시 경고
|
|
151
|
-
- **에러율**: 5% 초과 시 경고
|
|
152
|
-
|
|
153
|
-
### 리포트 생성
|
|
154
|
-
- **일일 리포트**: 캐시 성능 요약
|
|
155
|
-
- **주간 리포트**: 성능 트렌드 분석
|
|
156
|
-
- **월간 리포트**: 장기 성능 변화
|
|
157
|
-
- **특별 리포트**: 문제 발생 시 상세 분석
|
|
158
|
-
|
|
159
|
-
## 🎯 캐시 목표
|
|
160
|
-
|
|
161
|
-
### 성능 목표
|
|
162
|
-
- **캐시 히트율**: 80% 이상
|
|
163
|
-
- **평균 응답 시간**: 10ms 이하
|
|
164
|
-
- **메모리 사용량**: 100MB 이하
|
|
165
|
-
- **에러율**: 1% 이하
|
|
166
|
-
|
|
167
|
-
### 가용성 목표
|
|
168
|
-
- **캐시 가용성**: 99.9% 이상
|
|
169
|
-
- **데이터 일관성**: 99.99% 이상
|
|
170
|
-
- **복구 시간**: 5분 이하
|
|
171
|
-
- **데이터 손실**: 0%
|