@futdevpro/nts-dynamo 1.14.27 → 1.14.29
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/build/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.d.ts +0 -17
- package/build/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.d.ts.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.js +42 -39
- package/build/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.js.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.d.ts +0 -5
- package/build/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.d.ts.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.js +6 -2
- package/build/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.js.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.d.ts +22 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.js +187 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-chunk-data.service.js.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.d.ts +27 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.js +277 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.js.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.d.ts +23 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.js +319 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.js.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.d.ts +118 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.d.ts.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.js +460 -0
- package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.js.map +1 -0
- package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.d.ts +9 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.d.ts.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.js +14 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.js.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.d.ts +73 -130
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.js +97 -12
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.js.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts +65 -7
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.d.ts.map +1 -1
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js +192 -6
- package/build/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.js.map +1 -1
- package/build/_modules/ai/_modules/open-ai/index.d.ts +4 -6
- package/build/_modules/ai/_modules/open-ai/index.d.ts.map +1 -1
- package/build/_modules/ai/_modules/open-ai/index.js +8 -7
- package/build/_modules/ai/_modules/open-ai/index.js.map +1 -1
- package/build/_modules/bot/_enums/bot-message-provider.enum.d.ts +1 -1
- package/build/_modules/bot/_enums/bot-message-provider.enum.d.ts.map +1 -1
- package/build/_modules/bot/_enums/bot-message-provider.enum.js +9 -9
- package/build/_modules/bot/_enums/bot-message-provider.enum.js.map +1 -1
- package/build/_modules/bot/_models/bot-message-wrapper.interface.d.ts +2 -2
- package/build/_modules/bot/_models/bot-message-wrapper.interface.d.ts.map +1 -1
- package/build/_modules/bot/_models/bot-messaging-provider.interface.d.ts +2 -2
- package/build/_modules/bot/_models/bot-messaging-provider.interface.d.ts.map +1 -1
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.js +1 -1
- package/build/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.js.map +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.js +1 -1
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.js.map +1 -1
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.js +1 -1
- package/build/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.js.map +1 -1
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.js +1 -1
- package/build/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.js.map +1 -1
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.js +5 -5
- package/build/_modules/bot/_services/bot-messaging-provider-factory.service.js.map +1 -1
- package/build/_modules/discord-assistant/_collections/dias.util.d.ts +3 -3
- package/build/_modules/discord-assistant/_collections/dias.util.d.ts.map +1 -1
- package/build/_modules/discord-assistant/_collections/dias.util.js +4 -4
- package/build/_modules/discord-assistant/_collections/dias.util.js.map +1 -1
- package/build/_modules/discord-assistant/_services/dias-chunk.data-service.d.ts +5 -5
- package/build/_modules/discord-assistant/_services/dias-chunk.data-service.d.ts.map +1 -1
- package/build/_modules/discord-assistant/_services/dias-chunk.data-service.js +1 -1
- package/build/_modules/discord-assistant/_services/dias-chunk.data-service.js.map +1 -1
- package/build/_modules/discord-assistant/_services/dias.service-base.d.ts +2 -2
- package/build/_modules/discord-assistant/_services/dias.service-base.d.ts.map +1 -1
- package/build/_modules/discord-assistant/_services/dias.service-base.js.map +1 -1
- package/package.json +1 -1
- package/src/_modules/ai/_modules/open-ai/_enums/oai-gpt-message-role.enum.ts +42 -42
- package/src/_modules/ai/_modules/open-ai/_models/interfaces/oai-gpt-message.interface.ts +6 -6
- package/src/_modules/ai/_modules/open-ai/_services/{oai-doc-chunk-data.service.ts → data-services/oai-doc-chunk-data.service.ts} +8 -8
- package/src/_modules/ai/_modules/open-ai/_services/{oai-doc-page.data-service.ts → data-services/oai-doc-page.data-service.ts} +8 -8
- package/src/_modules/ai/_modules/open-ai/_services/{oai-document.data-service.ts → data-services/oai-document.data-service.ts} +7 -7
- package/src/_modules/ai/_modules/open-ai/_services/{oai-vector-data.service.ts → data-services/oai-vector-data.service.ts} +4 -4
- package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.ts +18 -2
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.ts +138 -159
- package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.ts +247 -13
- package/src/_modules/ai/_modules/open-ai/index.ts +8 -7
- package/src/_modules/bot/_enums/bot-message-provider.enum.ts +1 -1
- package/src/_modules/bot/_models/bot-message-wrapper.interface.ts +4 -3
- package/src/_modules/bot/_models/bot-messaging-provider.interface.ts +2 -2
- package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.service.ts +2 -2
- package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.service.ts +2 -2
- package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.service.ts +2 -2
- package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.service.ts +2 -2
- package/src/_modules/bot/_services/bot-messaging-provider-factory.service.ts +6 -6
- package/src/_modules/discord-assistant/_collections/dias.util.ts +6 -7
- package/src/_modules/discord-assistant/_services/dias-chunk.data-service.ts +6 -6
- package/src/_modules/discord-assistant/_services/dias-io.control-service.ts +2 -2
- package/src/_modules/discord-assistant/_services/dias.service-base.ts +2 -3
- package/build/_modules/ai/_services/oai-to-ai-adapter.service.d.ts +0 -39
- package/build/_modules/ai/_services/oai-to-ai-adapter.service.d.ts.map +0 -1
- package/build/_modules/ai/_services/oai-to-ai-adapter.service.js +0 -218
- package/build/_modules/ai/_services/oai-to-ai-adapter.service.js.map +0 -1
- package/build/_modules/bot/_enums/bot-provider.enum.d.ts +0 -8
- package/build/_modules/bot/_enums/bot-provider.enum.d.ts.map +0 -1
- package/build/_modules/bot/_enums/bot-provider.enum.js +0 -12
- package/build/_modules/bot/_enums/bot-provider.enum.js.map +0 -1
- package/build/_modules/bot/_models/bot-provider.interface.d.ts +0 -65
- package/build/_modules/bot/_models/bot-provider.interface.d.ts.map +0 -1
- package/build/_modules/bot/_models/bot-provider.interface.js +0 -3
- package/build/_modules/bot/_models/bot-provider.interface.js.map +0 -1
- package/build/_modules/bot/_modules/discord-bot/_services/dib-provider.service.d.ts +0 -53
- package/build/_modules/bot/_modules/discord-bot/_services/dib-provider.service.d.ts.map +0 -1
- package/build/_modules/bot/_modules/discord-bot/_services/dib-provider.service.js +0 -369
- package/build/_modules/bot/_modules/discord-bot/_services/dib-provider.service.js.map +0 -1
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-provider.service.d.ts +0 -54
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-provider.service.d.ts.map +0 -1
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-provider.service.js +0 -310
- package/build/_modules/bot/_modules/dynamo-bot/_services/dyb-provider.service.js.map +0 -1
- package/build/_modules/bot/_modules/slack-bot/_services/slb-provider.service.d.ts +0 -40
- package/build/_modules/bot/_modules/slack-bot/_services/slb-provider.service.d.ts.map +0 -1
- package/build/_modules/bot/_modules/slack-bot/_services/slb-provider.service.js +0 -116
- package/build/_modules/bot/_modules/slack-bot/_services/slb-provider.service.js.map +0 -1
- package/build/_modules/bot/_modules/teams-bot/_services/teb-provider.service.d.ts +0 -40
- package/build/_modules/bot/_modules/teams-bot/_services/teb-provider.service.d.ts.map +0 -1
- package/build/_modules/bot/_modules/teams-bot/_services/teb-provider.service.js +0 -116
- package/build/_modules/bot/_modules/teams-bot/_services/teb-provider.service.js.map +0 -1
- package/build/_modules/bot/_services/bot-provider-factory.service.d.ts +0 -5
- package/build/_modules/bot/_services/bot-provider-factory.service.d.ts.map +0 -1
- package/build/_modules/bot/_services/bot-provider-factory.service.js +0 -31
- package/build/_modules/bot/_services/bot-provider-factory.service.js.map +0 -1
package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.js
ADDED
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_OAI_DocPageDataService = void 0;
|
|
4
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
|
+
const data_service_1 = require("../../../../../../_services/base/data.service");
|
|
6
|
+
const dai_doc_page_data_model_1 = require("../../../document-ai/_models/data-models/dai-doc-page.data-model");
|
|
7
|
+
const oai_doc_chunk_data_service_1 = require("./oai-doc-chunk-data.service");
|
|
8
|
+
const oai_document_data_service_1 = require("./oai-document.data-service");
|
|
9
|
+
const dai_compare_result_type_enum_1 = require("../../../document-ai/_enums/dai-compare-result-type.enum");
|
|
10
|
+
class DyNTS_OAI_DocPageDataService extends data_service_1.DyNTS_DataService {
|
|
11
|
+
docChunkDataServiceOpenAiSettings;
|
|
12
|
+
debugLog = true;
|
|
13
|
+
absoluteDeletesOnProcess = true;
|
|
14
|
+
constructor(issuer, docChunkDataServiceOpenAiSettings, data, dataParams = dai_doc_page_data_model_1.DyNTS_DAI_docPage_dataParams) {
|
|
15
|
+
super(data, dataParams, issuer);
|
|
16
|
+
this.docChunkDataServiceOpenAiSettings = docChunkDataServiceOpenAiSettings;
|
|
17
|
+
}
|
|
18
|
+
getDocumentDataService() {
|
|
19
|
+
return new oai_document_data_service_1.DyNTS_OAI_DocumentDataService(this.issuer, this.docChunkDataServiceOpenAiSettings);
|
|
20
|
+
}
|
|
21
|
+
getDocChunkDataService() {
|
|
22
|
+
return new oai_doc_chunk_data_service_1.DyNTS_OAI_DocChunkDataService(this.issuer, this.docChunkDataServiceOpenAiSettings);
|
|
23
|
+
}
|
|
24
|
+
async processPages(documentId, pages) {
|
|
25
|
+
try {
|
|
26
|
+
const compareResults = [];
|
|
27
|
+
for (const page of pages) {
|
|
28
|
+
page.documentId = documentId;
|
|
29
|
+
compareResults.push(await this.processPage(page));
|
|
30
|
+
}
|
|
31
|
+
// All pages that are not in the list, and are in the database saved to the same document
|
|
32
|
+
const deletedPages = await this.findDataList({
|
|
33
|
+
documentId: documentId,
|
|
34
|
+
_id: {
|
|
35
|
+
$nin: pages.map(page => page._id),
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
const docChunk_DS = this.getDocChunkDataService();
|
|
39
|
+
for (const deletedPage of deletedPages) {
|
|
40
|
+
const messages = [];
|
|
41
|
+
const chunksToDelete = await docChunk_DS.findDataList({
|
|
42
|
+
documentId: documentId,
|
|
43
|
+
pageId: deletedPage._id,
|
|
44
|
+
});
|
|
45
|
+
for (const chunk of chunksToDelete) {
|
|
46
|
+
await docChunk_DS.deleteData(chunk._id, this.absoluteDeletesOnProcess);
|
|
47
|
+
}
|
|
48
|
+
messages.push(`${chunksToDelete.length} chunks deleted`);
|
|
49
|
+
await this.deleteData(deletedPage._id, this.absoluteDeletesOnProcess);
|
|
50
|
+
messages.unshift(`Page "${deletedPage.name}" deleted (chunks: ${chunksToDelete.length})`);
|
|
51
|
+
compareResults.push({
|
|
52
|
+
result: dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.deleted,
|
|
53
|
+
newPage: null,
|
|
54
|
+
oldPage: deletedPage,
|
|
55
|
+
chunkCompareResults: [],
|
|
56
|
+
reports: messages,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return compareResults;
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
63
|
+
...this.getDefaultErrorSettings('processPages', error),
|
|
64
|
+
errorCode: 'DCH-CSB-PP0',
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
async processPage(page) {
|
|
69
|
+
try {
|
|
70
|
+
let existingPage;
|
|
71
|
+
if (page._id) {
|
|
72
|
+
existingPage = await this.findData({
|
|
73
|
+
_id: page._id,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (!page.externalPageId) {
|
|
78
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
79
|
+
...this.getDefaultErrorSettings('processPage', new Error('externalPageId is required')),
|
|
80
|
+
errorCode: 'DCH-CSB-PP0',
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
existingPage = await this.findData({
|
|
84
|
+
documentId: page.documentId,
|
|
85
|
+
externalPageId: page.externalPageId,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
let pageCompareResult;
|
|
89
|
+
if (existingPage) {
|
|
90
|
+
// Compare first to determine if we need to save
|
|
91
|
+
pageCompareResult = await this.comparePage(page, existingPage);
|
|
92
|
+
// Always process chunks after page comparison, regardless of page equality
|
|
93
|
+
const docChunk_DS = this.getDocChunkDataService();
|
|
94
|
+
const chunksCompareResults = await docChunk_DS.processPage(existingPage);
|
|
95
|
+
pageCompareResult.chunkCompareResults = chunksCompareResults;
|
|
96
|
+
// Recalculate result based on both page metadata and chunk changes
|
|
97
|
+
if (pageCompareResult.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal &&
|
|
98
|
+
chunksCompareResults.some(r => r.result !== dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal)) {
|
|
99
|
+
pageCompareResult.result = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
100
|
+
pageCompareResult.reports.push('Chunks modified');
|
|
101
|
+
}
|
|
102
|
+
if (pageCompareResult.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal) {
|
|
103
|
+
// No changes detected, reuse existing page without saving
|
|
104
|
+
pageCompareResult.newPage = existingPage;
|
|
105
|
+
pageCompareResult.oldPage = existingPage;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Changes detected, save the updated page
|
|
109
|
+
let pageDataToSave;
|
|
110
|
+
pageDataToSave = existingPage;
|
|
111
|
+
Object.assign(pageDataToSave, page);
|
|
112
|
+
delete pageDataToSave.chunks;
|
|
113
|
+
const savedPage = await this.saveData(pageDataToSave, true);
|
|
114
|
+
page.chunks.forEach((chunk) => {
|
|
115
|
+
chunk.documentId = savedPage.documentId;
|
|
116
|
+
chunk.pageId = savedPage._id;
|
|
117
|
+
});
|
|
118
|
+
page._id = savedPage._id;
|
|
119
|
+
pageCompareResult.newPage = page;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
// New page, save it first to get ID
|
|
124
|
+
const pageDataToSave = {
|
|
125
|
+
...page,
|
|
126
|
+
};
|
|
127
|
+
delete pageDataToSave.chunks;
|
|
128
|
+
const savedPage = await this.saveData(pageDataToSave, true);
|
|
129
|
+
page.chunks.forEach((chunk) => {
|
|
130
|
+
chunk.documentId = savedPage.documentId;
|
|
131
|
+
chunk.pageId = savedPage._id;
|
|
132
|
+
});
|
|
133
|
+
page._id = savedPage._id;
|
|
134
|
+
pageCompareResult = {
|
|
135
|
+
result: dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new,
|
|
136
|
+
newPage: page,
|
|
137
|
+
oldPage: null,
|
|
138
|
+
chunkCompareResults: [],
|
|
139
|
+
reports: [
|
|
140
|
+
`New page: ${page.name}`,
|
|
141
|
+
`${page.chunks.length} new chunks in ${page.name}`,
|
|
142
|
+
],
|
|
143
|
+
};
|
|
144
|
+
const docChunk_DS = this.getDocChunkDataService();
|
|
145
|
+
const chunksCompareResults = await docChunk_DS.processNewPage(savedPage);
|
|
146
|
+
pageCompareResult.chunkCompareResults = chunksCompareResults;
|
|
147
|
+
}
|
|
148
|
+
return pageCompareResult;
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
152
|
+
...this.getDefaultErrorSettings('processPage', error),
|
|
153
|
+
errorCode: 'DCH-CSB-PP0',
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async processNewPages(pages) {
|
|
158
|
+
try {
|
|
159
|
+
const pageCompareResults = [];
|
|
160
|
+
for (const page of pages) {
|
|
161
|
+
const pageCompareResult = await this.processNewPage(page);
|
|
162
|
+
pageCompareResults.push(pageCompareResult);
|
|
163
|
+
}
|
|
164
|
+
return pageCompareResults;
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
168
|
+
...this.getDefaultErrorSettings('processNewPages', error),
|
|
169
|
+
errorCode: 'DCH-CSB-PP0',
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async processNewPage(page) {
|
|
174
|
+
try {
|
|
175
|
+
// save the page to ensure its id
|
|
176
|
+
const savedPage = await this.saveData(page, true);
|
|
177
|
+
// create chunks
|
|
178
|
+
const docChunk_DS = this.getDocChunkDataService();
|
|
179
|
+
const chunksCompareResults = await docChunk_DS.processNewPage(savedPage);
|
|
180
|
+
/* const chunks: T_Chunk[] = await docChunk_DS.processNewChunks(page); */
|
|
181
|
+
/* page.chunks.forEach((chunk: T_Chunk) => {
|
|
182
|
+
chunk.documentId = savedPage.documentId;
|
|
183
|
+
chunk.pageId = savedPage._id;
|
|
184
|
+
});
|
|
185
|
+
page._id = savedPage._id; */
|
|
186
|
+
const pageCompareResult = {
|
|
187
|
+
result: dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new,
|
|
188
|
+
newPage: page,
|
|
189
|
+
oldPage: null,
|
|
190
|
+
chunkCompareResults: chunksCompareResults,
|
|
191
|
+
reports: [
|
|
192
|
+
`New page: ${page.name}`,
|
|
193
|
+
`${page.chunks.length} new chunks in ${page.name}`,
|
|
194
|
+
],
|
|
195
|
+
};
|
|
196
|
+
return pageCompareResult;
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
200
|
+
...this.getDefaultErrorSettings('processNewPage', error),
|
|
201
|
+
errorCode: 'DCH-CSB-PP0',
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* this is a deep compare, that will update chunks if needed
|
|
207
|
+
* */
|
|
208
|
+
async comparePage(newPage, oldPage) {
|
|
209
|
+
try {
|
|
210
|
+
if (!oldPage) {
|
|
211
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
212
|
+
...this.getDefaultErrorSettings('comparePage', new Error('oldPage is required')),
|
|
213
|
+
errorCode: 'DCH-CSB-CP1',
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
if (this.debugLog) {
|
|
217
|
+
fsm_dynamo_1.DyFM_Log.info(`🔍 Comparing ${this.dataParams.dataName} page: ${newPage.name}`);
|
|
218
|
+
}
|
|
219
|
+
let pageCompareResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal;
|
|
220
|
+
const messages = [];
|
|
221
|
+
const chunkCompareResults = [];
|
|
222
|
+
// Compare all relevant fields for comprehensive change detection
|
|
223
|
+
if (newPage.name !== oldPage.name) {
|
|
224
|
+
pageCompareResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
225
|
+
messages.push(`Page name modified`);
|
|
226
|
+
}
|
|
227
|
+
if (newPage.content !== oldPage.content) {
|
|
228
|
+
pageCompareResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
229
|
+
messages.push(`Page content modified`);
|
|
230
|
+
}
|
|
231
|
+
// Compare allFlaggedParents arrays
|
|
232
|
+
const allFlaggedParentsEqual = this.compareStringArrays(newPage.allFlaggedParents || [], oldPage.allFlaggedParents || []);
|
|
233
|
+
if (!allFlaggedParentsEqual) {
|
|
234
|
+
pageCompareResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
235
|
+
messages.push(`Page allFlaggedParents modified`);
|
|
236
|
+
}
|
|
237
|
+
// Compare allFlaggedParentsMerged
|
|
238
|
+
if (newPage.allFlaggedParentsMerged !== oldPage.allFlaggedParentsMerged) {
|
|
239
|
+
pageCompareResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
240
|
+
messages.push(`Page allFlaggedParentsMerged modified`);
|
|
241
|
+
}
|
|
242
|
+
// Compare filePath
|
|
243
|
+
if (newPage.filePath !== oldPage.filePath) {
|
|
244
|
+
pageCompareResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
245
|
+
messages.push(`Page filePath modified`);
|
|
246
|
+
}
|
|
247
|
+
// Compare parentedPath arrays
|
|
248
|
+
const parentedPathEqual = this.compareStringArrays(newPage.parentedPath || [], oldPage.parentedPath || []);
|
|
249
|
+
if (!parentedPathEqual) {
|
|
250
|
+
pageCompareResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
251
|
+
messages.push(`Page parentedPath modified`);
|
|
252
|
+
}
|
|
253
|
+
const result = {
|
|
254
|
+
result: pageCompareResult,
|
|
255
|
+
newPage: newPage,
|
|
256
|
+
oldPage: oldPage,
|
|
257
|
+
chunkCompareResults: chunkCompareResults,
|
|
258
|
+
reports: messages,
|
|
259
|
+
};
|
|
260
|
+
return result;
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
264
|
+
...this.getDefaultErrorSettings('comparePage', error),
|
|
265
|
+
errorCode: 'DCH-CSB-CP0',
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
compareStringArrays(arr1, arr2) {
|
|
270
|
+
if (arr1.length !== arr2.length) {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
return arr1.every((item, index) => item === arr2[index]);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
exports.DyNTS_OAI_DocPageDataService = DyNTS_OAI_DocPageDataService;
|
|
277
|
+
//# sourceMappingURL=oai-doc-page.data-service.js.map
|
package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oai-doc-page.data-service.js","sourceRoot":"","sources":["../../../../../../../src/_modules/ai/_modules/open-ai/_services/data-services/oai-doc-page.data-service.ts"],"names":[],"mappings":"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"}
|
package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DyFM_DataModel_Params } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
import { DyNTS_DataService } from '../../../../../../_services/base/data.service';
|
|
3
|
+
import { DyNTS_DAI_DocChunk } from '../../../document-ai/_models/data-models/dai-doc-chunk.data-model';
|
|
4
|
+
import { DyNTS_DAI_DocPage } from '../../../document-ai/_models/data-models/dai-doc-page.data-model';
|
|
5
|
+
import { DyNTS_DAI_Document } from '../../../document-ai/_models/data-models/dai-document.data-model';
|
|
6
|
+
import { DyNTS_OAI_DocChunkDataService } from './oai-doc-chunk-data.service';
|
|
7
|
+
import { DyNTS_OAI_DocPageDataService } from './oai-doc-page.data-service';
|
|
8
|
+
import { DyFM_OAI_Settings } from '@futdevpro/fsm-dynamo/ai/open-ai';
|
|
9
|
+
import { DyNTS_DAI_DocumentCompareResult } from '../../../document-ai/_models/interfaces/dai-document-compare-result.interface';
|
|
10
|
+
export declare class DyNTS_OAI_DocumentDataService<T_Chunk extends DyNTS_DAI_DocChunk = DyNTS_DAI_DocChunk, T_Page extends DyNTS_DAI_DocPage<T_Chunk> = DyNTS_DAI_DocPage<T_Chunk>, T_ExternalDocumentId = string, T_ExternalMetadata = any, T_Document extends DyNTS_DAI_Document<T_Chunk, T_Page, T_ExternalDocumentId, T_ExternalMetadata> = DyNTS_DAI_Document<T_Chunk, T_Page, T_ExternalDocumentId, T_ExternalMetadata>> extends DyNTS_DataService<T_Document> {
|
|
11
|
+
private docChunkDataServiceOpenAiSettings;
|
|
12
|
+
debugLog: boolean;
|
|
13
|
+
absoluteDeletesOnProcess: boolean;
|
|
14
|
+
constructor(issuer: string, docChunkDataServiceOpenAiSettings: DyFM_OAI_Settings, data?: T_Document, dataParams?: DyFM_DataModel_Params<T_Document>);
|
|
15
|
+
getDocPageDataService(): DyNTS_OAI_DocPageDataService<T_Chunk, T_Page, T_ExternalDocumentId, T_Document>;
|
|
16
|
+
getDocChunkDataService(): DyNTS_OAI_DocChunkDataService<T_Chunk, T_Page, T_ExternalDocumentId, T_Document>;
|
|
17
|
+
processDocuments(documents: T_Document[]): Promise<DyNTS_DAI_DocumentCompareResult<T_Chunk, T_Page, T_ExternalDocumentId, T_ExternalMetadata, T_Document>[]>;
|
|
18
|
+
processDocument(document: T_Document): Promise<DyNTS_DAI_DocumentCompareResult<T_Chunk, T_Page, T_ExternalDocumentId, T_ExternalMetadata, T_Document>>;
|
|
19
|
+
compareDocument_deep(newDocument: T_Document, oldDocument: T_Document): Promise<DyNTS_DAI_DocumentCompareResult<T_Chunk, T_Page, T_ExternalDocumentId, T_ExternalMetadata, T_Document>>;
|
|
20
|
+
compareDocument_flat(newDocument: T_Document, oldDocument: T_Document): Promise<DyNTS_DAI_DocumentCompareResult<T_Chunk, T_Page, T_ExternalDocumentId, T_ExternalMetadata, T_Document>>;
|
|
21
|
+
reportDocumentProcessResult(documentCompareResult: DyNTS_DAI_DocumentCompareResult<T_Chunk, T_Page, T_ExternalDocumentId, T_ExternalMetadata, T_Document>): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=oai-document.data-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oai-document.data-service.d.ts","sourceRoot":"","sources":["../../../../../../../src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,qBAAqB,EAAsF,MAAM,uBAAuB,CAAC;AAC1K,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,mEAAmE,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,kEAAkE,CAAC;AACrG,OAAO,EAAE,kBAAkB,EAAiC,MAAM,kEAAkE,CAAC;AACrI,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,+BAA+B,EAAE,MAAM,+EAA+E,CAAC;AAKhI,qBAAa,6BAA6B,CACxC,OAAO,SAAS,kBAAkB,GAAG,kBAAkB,EACvD,MAAM,SAAS,iBAAiB,CAAC,OAAO,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,EACtE,oBAAoB,GAAG,MAAM,EAC7B,kBAAkB,GAAG,GAAG,EACxB,UAAU,SAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,CAChL,SAAQ,iBAAiB,CAAC,UAAU,CAAC;IAOnC,OAAO,CAAC,iCAAiC;IAL3C,QAAQ,EAAE,OAAO,CAAQ;IACzB,wBAAwB,EAAE,OAAO,CAAQ;gBAGvC,MAAM,EAAE,MAAM,EACN,iCAAiC,EAAE,iBAAiB,EAC5D,IAAI,CAAC,EAAE,UAAU,EACjB,UAAU,GAAE,qBAAqB,CAAC,UAAU,CAAsE;IASpH,qBAAqB,IAAI,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,CAAC;IAOxG,sBAAsB,IAAI,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,CAAC;IAOpG,gBAAgB,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,OAAO,CACtD,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC,EAAE,CACzG;IAyEK,eAAe,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAClD,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC,CACvG;IA+FK,oBAAoB,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO,CACnF,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC,CACvG;IA2GK,oBAAoB,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,GAAG,OAAO,CACnF,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC,CACvG;IAyDK,2BAA2B,CAC/B,qBAAqB,EAAE,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,UAAU,CAAC,GAC5H,OAAO,CAAC,IAAI,CAAC;CAqCjB"}
|
package/build/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.js
ADDED
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DyNTS_OAI_DocumentDataService = void 0;
|
|
4
|
+
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
|
+
const data_service_1 = require("../../../../../../_services/base/data.service");
|
|
6
|
+
const dai_document_data_model_1 = require("../../../document-ai/_models/data-models/dai-document.data-model");
|
|
7
|
+
const oai_doc_chunk_data_service_1 = require("./oai-doc-chunk-data.service");
|
|
8
|
+
const oai_doc_page_data_service_1 = require("./oai-doc-page.data-service");
|
|
9
|
+
const dai_compare_result_type_enum_1 = require("../../../document-ai/_enums/dai-compare-result-type.enum");
|
|
10
|
+
class DyNTS_OAI_DocumentDataService extends data_service_1.DyNTS_DataService {
|
|
11
|
+
docChunkDataServiceOpenAiSettings;
|
|
12
|
+
debugLog = true;
|
|
13
|
+
absoluteDeletesOnProcess = true;
|
|
14
|
+
constructor(issuer, docChunkDataServiceOpenAiSettings, data, dataParams = dai_document_data_model_1.DyNTS_DAI_document_dataParams) {
|
|
15
|
+
super(data, dataParams, issuer);
|
|
16
|
+
this.docChunkDataServiceOpenAiSettings = docChunkDataServiceOpenAiSettings;
|
|
17
|
+
}
|
|
18
|
+
getDocPageDataService() {
|
|
19
|
+
return new oai_doc_page_data_service_1.DyNTS_OAI_DocPageDataService(this.issuer, this.docChunkDataServiceOpenAiSettings);
|
|
20
|
+
}
|
|
21
|
+
getDocChunkDataService() {
|
|
22
|
+
return new oai_doc_chunk_data_service_1.DyNTS_OAI_DocChunkDataService(this.issuer, this.docChunkDataServiceOpenAiSettings);
|
|
23
|
+
}
|
|
24
|
+
async processDocuments(documents) {
|
|
25
|
+
try {
|
|
26
|
+
if (!documents || documents.length === 0) {
|
|
27
|
+
return [];
|
|
28
|
+
}
|
|
29
|
+
const compareResults = [];
|
|
30
|
+
await fsm_dynamo_1.DyFM_Array.asyncForEachAllAtOnce(documents, async (document) => {
|
|
31
|
+
compareResults.push(await this.processDocument(document));
|
|
32
|
+
});
|
|
33
|
+
const deletedDocuments = await this.findDataList({
|
|
34
|
+
_id: {
|
|
35
|
+
$nin: documents.map(document => document._id),
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
const docPage_DS = this.getDocPageDataService();
|
|
39
|
+
const docChunk_DS = this.getDocChunkDataService();
|
|
40
|
+
for (const deletedDocument of deletedDocuments) {
|
|
41
|
+
const messages = [];
|
|
42
|
+
const chunksToDelete = await docChunk_DS.findDataList({
|
|
43
|
+
documentId: deletedDocument._id,
|
|
44
|
+
});
|
|
45
|
+
for (const chunk of chunksToDelete) {
|
|
46
|
+
await docChunk_DS.deleteData(chunk._id, this.absoluteDeletesOnProcess);
|
|
47
|
+
}
|
|
48
|
+
messages.push(`${chunksToDelete.length} chunks deleted`);
|
|
49
|
+
const pagesToDelete = await docPage_DS.findDataList({
|
|
50
|
+
documentId: deletedDocument._id,
|
|
51
|
+
});
|
|
52
|
+
for (const page of pagesToDelete) {
|
|
53
|
+
await docPage_DS.deleteData(page._id, this.absoluteDeletesOnProcess);
|
|
54
|
+
}
|
|
55
|
+
messages.unshift(`${pagesToDelete.length} pages deleted`);
|
|
56
|
+
await this.deleteData(deletedDocument._id, this.absoluteDeletesOnProcess);
|
|
57
|
+
messages.unshift(`Document "${deletedDocument?.name}" deleted`);
|
|
58
|
+
compareResults.push({
|
|
59
|
+
result: dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.deleted,
|
|
60
|
+
newDocument: null,
|
|
61
|
+
oldDocument: deletedDocument,
|
|
62
|
+
pageCompareResults: [],
|
|
63
|
+
reports: messages,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
for (const result of compareResults) {
|
|
67
|
+
// report the result
|
|
68
|
+
await this.reportDocumentProcessResult(result);
|
|
69
|
+
}
|
|
70
|
+
return compareResults;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
74
|
+
...this.getDefaultErrorSettings('processDocuments', error),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async processDocument(document) {
|
|
79
|
+
try {
|
|
80
|
+
let existingDocument;
|
|
81
|
+
if (document._id) {
|
|
82
|
+
existingDocument = await this.findData({
|
|
83
|
+
_id: document._id,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
if (!document.externalDocumentId) {
|
|
88
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
89
|
+
...this.getDefaultErrorSettings('processDocument', new Error('externalDocumentId is required')),
|
|
90
|
+
errorCode: 'OAI-DSB-PD0',
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
existingDocument = await this.findData({
|
|
94
|
+
externalDocumentId: document.externalDocumentId,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
let documentCompareResult;
|
|
98
|
+
if (existingDocument) {
|
|
99
|
+
// Set the existing document's ID to the new document and its pages before comparison
|
|
100
|
+
document._id = existingDocument._id;
|
|
101
|
+
document.pages.forEach((page) => {
|
|
102
|
+
page.documentId = existingDocument._id;
|
|
103
|
+
});
|
|
104
|
+
// Compare first to determine if we need to save
|
|
105
|
+
documentCompareResult = await this.compareDocument_deep(document, existingDocument);
|
|
106
|
+
if (documentCompareResult.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal) {
|
|
107
|
+
// No changes detected, reuse existing document without saving
|
|
108
|
+
documentCompareResult.newDocument = existingDocument;
|
|
109
|
+
documentCompareResult.oldDocument = existingDocument;
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Changes detected, save the updated document
|
|
113
|
+
let docDataToSave;
|
|
114
|
+
docDataToSave = existingDocument;
|
|
115
|
+
Object.assign(docDataToSave, document);
|
|
116
|
+
delete docDataToSave.pages;
|
|
117
|
+
const savedDocument = await this.saveData(docDataToSave, true);
|
|
118
|
+
// set the id to the pages and the document
|
|
119
|
+
document.pages.forEach((page) => {
|
|
120
|
+
page.documentId = savedDocument._id;
|
|
121
|
+
});
|
|
122
|
+
document._id = savedDocument._id;
|
|
123
|
+
documentCompareResult.newDocument = document;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
// New document, save it first to get ID
|
|
128
|
+
const docDataToSave = {
|
|
129
|
+
...document,
|
|
130
|
+
};
|
|
131
|
+
delete docDataToSave.pages;
|
|
132
|
+
const savedDocument = await this.saveData(docDataToSave, true);
|
|
133
|
+
// set the id to the pages and the document
|
|
134
|
+
document.pages.forEach((page) => {
|
|
135
|
+
page.documentId = savedDocument._id;
|
|
136
|
+
});
|
|
137
|
+
document._id = savedDocument._id;
|
|
138
|
+
const docPage_DS = this.getDocPageDataService();
|
|
139
|
+
const pagesCompareResults = await docPage_DS.processNewPages(document.pages);
|
|
140
|
+
documentCompareResult = {
|
|
141
|
+
result: dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new,
|
|
142
|
+
newDocument: document,
|
|
143
|
+
oldDocument: null,
|
|
144
|
+
pageCompareResults: pagesCompareResults,
|
|
145
|
+
reports: [
|
|
146
|
+
`New document: "${document?.name}"`,
|
|
147
|
+
`${document?.pages?.length ?? 0} new pages in "${document?.name}"`,
|
|
148
|
+
],
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
return documentCompareResult;
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
155
|
+
...this.getDefaultErrorSettings('processDocument', error),
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
async compareDocument_deep(newDocument, oldDocument) {
|
|
160
|
+
try {
|
|
161
|
+
if (this.debugLog) {
|
|
162
|
+
fsm_dynamo_1.DyFM_Log.info(`🔍 Comparing "${this.dataParams.dataName}" document: "${newDocument?.name}"`);
|
|
163
|
+
}
|
|
164
|
+
if (!oldDocument) {
|
|
165
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
166
|
+
...this.getDefaultErrorSettings('compareDocument_deep', new Error('oldDocument is required')),
|
|
167
|
+
errorCode: 'OAI-DSB-CD1',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
const documentCompareResult_flat = await this.compareDocument_flat(newDocument, oldDocument);
|
|
171
|
+
const messages = documentCompareResult_flat.reports;
|
|
172
|
+
const docPage_DS = this.getDocPageDataService();
|
|
173
|
+
const pagesCompareResults = await docPage_DS.processPages(newDocument._id, newDocument.pages);
|
|
174
|
+
// determine the result based on the pages
|
|
175
|
+
let pagesResult;
|
|
176
|
+
if (pagesCompareResults.every(result => result.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal)) {
|
|
177
|
+
pagesResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal;
|
|
178
|
+
messages.push(`All pages are equal`);
|
|
179
|
+
}
|
|
180
|
+
else if (pagesCompareResults.some(result => result.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new ||
|
|
181
|
+
result.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified ||
|
|
182
|
+
result.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.deleted)) {
|
|
183
|
+
pagesResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
184
|
+
const modifiedPages = pagesCompareResults.filter(result => result.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified).map(result => result.newPage);
|
|
185
|
+
const deletedPages = pagesCompareResults.filter(result => result.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.deleted).map(result => result.oldPage);
|
|
186
|
+
const newPages = pagesCompareResults.filter(result => result.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new).map(result => result.newPage);
|
|
187
|
+
/* const modifiedPagesCount: number = pagesCompareResults.filter(
|
|
188
|
+
result => result.result === DyNTS_DAI_CompareResult_Type.modified
|
|
189
|
+
).length;
|
|
190
|
+
const deletedPagesCount: number = pagesCompareResults.filter(
|
|
191
|
+
result => result.result === DyNTS_DAI_CompareResult_Type.deleted
|
|
192
|
+
).length;
|
|
193
|
+
const newPagesCount: number = pagesCompareResults.filter(
|
|
194
|
+
result => result.result === DyNTS_DAI_CompareResult_Type.new
|
|
195
|
+
).length; */
|
|
196
|
+
if (modifiedPages.length > 0) {
|
|
197
|
+
messages.push(`${modifiedPages.length} modified pages: ${modifiedPages.map(page => `"${page.name}"`).join(', ')}`);
|
|
198
|
+
}
|
|
199
|
+
if (newPages.length > 0) {
|
|
200
|
+
messages.push(`${newPages.length} new pages: ${newPages.map(page => `"${page.name}"`).join(', ')}`);
|
|
201
|
+
}
|
|
202
|
+
if (deletedPages.length > 0) {
|
|
203
|
+
messages.push(`${deletedPages.length} deleted pages: ${deletedPages.map(page => `"${page.name}"`).join(', ')}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
pagesResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new;
|
|
208
|
+
const newPagesCount = pagesCompareResults.filter(result => result.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new).length;
|
|
209
|
+
messages.push(`${newPagesCount} new pages`);
|
|
210
|
+
}
|
|
211
|
+
// determine the result based on both the document and the pages
|
|
212
|
+
let documentResult;
|
|
213
|
+
if (documentCompareResult_flat.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new) {
|
|
214
|
+
documentResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new;
|
|
215
|
+
}
|
|
216
|
+
else if (documentCompareResult_flat.result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified) {
|
|
217
|
+
documentResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
if (pagesResult === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal) {
|
|
221
|
+
documentResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal;
|
|
222
|
+
}
|
|
223
|
+
{
|
|
224
|
+
documentResult = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
const result = {
|
|
228
|
+
...documentCompareResult_flat,
|
|
229
|
+
result: documentResult,
|
|
230
|
+
newDocument: newDocument,
|
|
231
|
+
oldDocument: oldDocument,
|
|
232
|
+
pageCompareResults: pagesCompareResults,
|
|
233
|
+
};
|
|
234
|
+
return result;
|
|
235
|
+
}
|
|
236
|
+
catch (error) {
|
|
237
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
238
|
+
...this.getDefaultErrorSettings('compareDocument', error),
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
async compareDocument_flat(newDocument, oldDocument) {
|
|
243
|
+
try {
|
|
244
|
+
if (!oldDocument) {
|
|
245
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
246
|
+
...this.getDefaultErrorSettings('compareDocument_flat', new Error('oldDocument is required')),
|
|
247
|
+
errorCode: 'OAI-DSB-CF1',
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
let result = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal;
|
|
251
|
+
const messages = [];
|
|
252
|
+
// Compare document name
|
|
253
|
+
if (newDocument.name !== oldDocument.name) {
|
|
254
|
+
result = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
255
|
+
messages.push(`Document name changed from "${oldDocument.name}" to "${newDocument.name}"`);
|
|
256
|
+
}
|
|
257
|
+
// Compare externalDocumentId
|
|
258
|
+
if (newDocument.externalDocumentId !== oldDocument.externalDocumentId) {
|
|
259
|
+
result = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
260
|
+
messages.push(`Document externalDocumentId changed`);
|
|
261
|
+
}
|
|
262
|
+
// Compare externalMetadata if present
|
|
263
|
+
if (newDocument.externalMetadata || oldDocument.externalMetadata) {
|
|
264
|
+
const newMetadataStr = newDocument.externalMetadata ? JSON.stringify(newDocument.externalMetadata) : '';
|
|
265
|
+
const oldMetadataStr = oldDocument.externalMetadata ? JSON.stringify(oldDocument.externalMetadata) : '';
|
|
266
|
+
if (newMetadataStr !== oldMetadataStr) {
|
|
267
|
+
result = dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified;
|
|
268
|
+
messages.push(`Document externalMetadata changed`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (result === dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal) {
|
|
272
|
+
messages.push(`Document name or not changed: "${newDocument.name}"`);
|
|
273
|
+
}
|
|
274
|
+
const result_flat = {
|
|
275
|
+
result: result,
|
|
276
|
+
newDocument: newDocument,
|
|
277
|
+
oldDocument: oldDocument,
|
|
278
|
+
pageCompareResults: [],
|
|
279
|
+
reports: messages,
|
|
280
|
+
};
|
|
281
|
+
return result_flat;
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
285
|
+
...this.getDefaultErrorSettings('compareDocument_shallow', error),
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
async reportDocumentProcessResult(documentCompareResult) {
|
|
290
|
+
try {
|
|
291
|
+
fsm_dynamo_1.DyFM_Log.log(`\n✅ Document processed: "${documentCompareResult?.newDocument?.name ?? documentCompareResult?.oldDocument?.name ?? 'unknown'}"`);
|
|
292
|
+
switch (documentCompareResult.result) {
|
|
293
|
+
case dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.new:
|
|
294
|
+
fsm_dynamo_1.DyFM_Log.info(` ✨ New document`);
|
|
295
|
+
break;
|
|
296
|
+
case dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.equal:
|
|
297
|
+
fsm_dynamo_1.DyFM_Log.success(` 🟰 Equal document`);
|
|
298
|
+
break;
|
|
299
|
+
case dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.modified:
|
|
300
|
+
fsm_dynamo_1.DyFM_Log.info(` 🔄 Modified document`);
|
|
301
|
+
break;
|
|
302
|
+
case dai_compare_result_type_enum_1.DyNTS_DAI_CompareResult_Type.deleted:
|
|
303
|
+
fsm_dynamo_1.DyFM_Log.warn(` ❌ Deleted document`);
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
for (const report of documentCompareResult.reports) {
|
|
307
|
+
fsm_dynamo_1.DyFM_Log.log(` - ${report}`);
|
|
308
|
+
}
|
|
309
|
+
fsm_dynamo_1.DyFM_Log.log('');
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
313
|
+
...this.getDefaultErrorSettings('reportDocumentProcessing', error),
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
exports.DyNTS_OAI_DocumentDataService = DyNTS_OAI_DocumentDataService;
|
|
319
|
+
//# sourceMappingURL=oai-document.data-service.js.map
|