Преглед изворни кода

Merge pull request #9562 from weseek/feat/160518-enable-learning-restricted-page-exact-path

feat: Enable learning when a RESTRICTED page is accessed via its exact path
Yuki Takei пре 1 година
родитељ
комит
b6259b1800
1 измењених фајлова са 34 додато и 11 уклоњено
  1. 34 11
      apps/app/src/features/openai/server/services/openai.ts

+ 34 - 11
apps/app/src/features/openai/server/services/openai.ts

@@ -408,6 +408,7 @@ class OpenaiService implements IOpenaiService {
       objectMode: true,
       async transform(chunk: HydratedDocument<PageDocument>[], encoding, callback) {
         try {
+          logger.debug('Search results of page paths', chunk.map(page => page.path));
           await createVectorStoreFile(vectorStoreRelation, chunk);
           this.push(chunk);
           callback();
@@ -429,10 +430,22 @@ class OpenaiService implements IOpenaiService {
   ): Promise<mongoose.FilterQuery<PageDocument>> {
     const converterdPagePatgPatterns = convertPathPatternsToRegExp(pagePathPatterns);
 
+    // Include pages in search targets when their paths with 'Anyone with the link' permission are directly specified instead of using glob pattern
+    const nonGrabPagePathPatterns = pagePathPatterns.filter(pagePathPattern => !isGrobPatternPath(pagePathPattern));
+    const baseCondition: mongoose.FilterQuery<PageDocument> = {
+      grant: PageGrant.GRANT_RESTRICTED,
+      path: nonGrabPagePathPatterns,
+    };
+
     if (accessScope === AiAssistantAccessScope.PUBLIC_ONLY) {
       return {
-        grant: PageGrant.GRANT_PUBLIC,
-        path: { $in: converterdPagePatgPatterns },
+        $or: [
+          baseCondition,
+          {
+            grant: PageGrant.GRANT_PUBLIC,
+            path: { $in: converterdPagePatgPatterns },
+          },
+        ],
       };
     }
 
@@ -454,11 +467,16 @@ class OpenaiService implements IOpenaiService {
       }
 
       return {
-        grant: { $in: [PageGrant.GRANT_PUBLIC, PageGrant.GRANT_USER_GROUP] },
-        path: { $in: converterdPagePatgPatterns },
         $or: [
-          { 'grantedGroups.item': { $in: extractedGrantedGroupIds } },
-          { grant: PageGrant.GRANT_PUBLIC },
+          baseCondition,
+          {
+            grant: { $in: [PageGrant.GRANT_PUBLIC, PageGrant.GRANT_USER_GROUP] },
+            path: { $in: converterdPagePatgPatterns },
+            $or: [
+              { 'grantedGroups.item': { $in: extractedGrantedGroupIds } },
+              { grant: PageGrant.GRANT_PUBLIC },
+            ],
+          },
         ],
       };
     }
@@ -470,12 +488,17 @@ class OpenaiService implements IOpenaiService {
       ].map(group => group.toString());
 
       return {
-        grant: { $in: [PageGrant.GRANT_PUBLIC, PageGrant.GRANT_USER_GROUP, PageGrant.GRANT_OWNER] },
-        path: { $in: converterdPagePatgPatterns },
         $or: [
-          { 'grantedGroups.item': { $in: ownerUserGroup } },
-          { grantedUsers: { $in: [getIdForRef(owner)] } },
-          { grant: PageGrant.GRANT_PUBLIC },
+          baseCondition,
+          {
+            grant: { $in: [PageGrant.GRANT_PUBLIC, PageGrant.GRANT_USER_GROUP, PageGrant.GRANT_OWNER] },
+            path: { $in: converterdPagePatgPatterns },
+            $or: [
+              { 'grantedGroups.item': { $in: ownerUserGroup } },
+              { grantedUsers: { $in: [getIdForRef(owner)] } },
+              { grant: PageGrant.GRANT_PUBLIC },
+            ],
+          },
         ],
       };
     }