Change crawl.reviewStatus to 1-5 scale int (#1664)
This commit is contained in:
		
							parent
							
								
									9aba24a90e
								
							
						
					
					
						commit
						172a9bf0cd
					
				| @ -17,7 +17,7 @@ from pymongo.errors import InvalidName | ||||
| from .migrations import BaseMigration | ||||
| 
 | ||||
| 
 | ||||
| CURR_DB_VERSION = "0025" | ||||
| CURR_DB_VERSION = "0026" | ||||
| 
 | ||||
| 
 | ||||
| # ============================================================================ | ||||
|  | ||||
| @ -20,6 +20,7 @@ class Migration(BaseMigration): | ||||
| 
 | ||||
|         Add type "crawl" to all existing crawls that don't already have a type | ||||
|         """ | ||||
|         # pylint: disable=duplicate-code | ||||
|         crawls = self.mdb["crawls"] | ||||
|         try: | ||||
|             await crawls.update_many( | ||||
|  | ||||
| @ -0,0 +1,40 @@ | ||||
| """ | ||||
| Migration 0026 - Crawl reviewStatus type | ||||
| """ | ||||
| 
 | ||||
| from btrixcloud.migrations import BaseMigration | ||||
| 
 | ||||
| 
 | ||||
| MIGRATION_VERSION = "0026" | ||||
| 
 | ||||
| 
 | ||||
| class Migration(BaseMigration): | ||||
|     """Migration class.""" | ||||
| 
 | ||||
|     # pylint: disable=unused-argument | ||||
|     def __init__(self, mdb, **kwargs): | ||||
|         super().__init__(mdb, migration_version=MIGRATION_VERSION) | ||||
| 
 | ||||
|     async def migrate_up(self): | ||||
|         """Perform migration up. | ||||
| 
 | ||||
|         Switch crawl.reviewStatus from string to int between 1-5 | ||||
|         """ | ||||
|         # pylint: disable=duplicate-code | ||||
|         crawls = self.mdb["crawls"] | ||||
|         try: | ||||
|             await crawls.update_many( | ||||
|                 {"reviewStatus": {"$eq": "good"}}, {"$set": {"reviewStatus": 5}} | ||||
|             ) | ||||
|             await crawls.update_many( | ||||
|                 {"reviewStatus": {"$eq": "acceptable"}}, {"$set": {"reviewStatus": 3}} | ||||
|             ) | ||||
|             await crawls.update_many( | ||||
|                 {"reviewStatus": {"$eq": "failure"}}, {"$set": {"reviewStatus": 1}} | ||||
|             ) | ||||
|         # pylint: disable=broad-exception-caught | ||||
|         except Exception as err: | ||||
|             print( | ||||
|                 f"Error modifying existing crawl reviewStatuses to ints: {err}", | ||||
|                 flush=True, | ||||
|             ) | ||||
| @ -535,15 +535,6 @@ class CrawlFileOut(BaseModel): | ||||
|     expireAt: Optional[str] | ||||
| 
 | ||||
| 
 | ||||
| # ============================================================================ | ||||
| class ReviewStatus(str, Enum): | ||||
|     """QA review statuses""" | ||||
| 
 | ||||
|     GOOD = "good" | ||||
|     ACCEPTABLE = "acceptable" | ||||
|     FAILURE = "failure" | ||||
| 
 | ||||
| 
 | ||||
| # ============================================================================ | ||||
| class CrawlStats(BaseModel): | ||||
|     """Crawl Stats for pages and size""" | ||||
| @ -599,7 +590,7 @@ class BaseCrawl(CoreCrawlable, BaseMongoModel): | ||||
| 
 | ||||
|     collectionIds: Optional[List[UUID]] = [] | ||||
| 
 | ||||
|     reviewStatus: Optional[ReviewStatus] = None | ||||
|     reviewStatus: Optional[conint(ge=1, le=5)] = None  # type: ignore | ||||
| 
 | ||||
| 
 | ||||
| # ============================================================================ | ||||
| @ -665,7 +656,7 @@ class CrawlOut(BaseMongoModel): | ||||
|     crawlerChannel: str = "default" | ||||
|     image: Optional[str] | ||||
| 
 | ||||
|     reviewStatus: Optional[ReviewStatus] = None | ||||
|     reviewStatus: Optional[conint(ge=1, le=5)] = None  # type: ignore | ||||
| 
 | ||||
| 
 | ||||
| # ============================================================================ | ||||
| @ -684,7 +675,7 @@ class UpdateCrawl(BaseModel): | ||||
|     description: Optional[str] | ||||
|     tags: Optional[List[str]] | ||||
|     collectionIds: Optional[List[UUID]] | ||||
|     reviewStatus: Optional[ReviewStatus] | ||||
|     reviewStatus: Optional[conint(ge=1, le=5)]  # type: ignore | ||||
| 
 | ||||
| 
 | ||||
| # ============================================================================ | ||||
|  | ||||
| @ -289,7 +289,7 @@ def test_update_crawl( | ||||
|         f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}", | ||||
|         headers=admin_auth_headers, | ||||
|         json={ | ||||
|             "reviewStatus": "good", | ||||
|             "reviewStatus": 5, | ||||
|         }, | ||||
|     ) | ||||
|     assert r.status_code == 200 | ||||
| @ -301,7 +301,7 @@ def test_update_crawl( | ||||
|         headers=admin_auth_headers, | ||||
|     ) | ||||
|     assert r.status_code == 200 | ||||
|     assert r.json()["reviewStatus"] == "good" | ||||
|     assert r.json()["reviewStatus"] == 5 | ||||
| 
 | ||||
|     # Try to update to invalid reviewStatus | ||||
|     r = requests.patch( | ||||
| @ -318,7 +318,7 @@ def test_update_crawl( | ||||
|         headers=admin_auth_headers, | ||||
|     ) | ||||
|     assert r.status_code == 200 | ||||
|     assert r.json()["reviewStatus"] == "good" | ||||
|     assert r.json()["reviewStatus"] == 5 | ||||
| 
 | ||||
|     # Verify deleting works as well | ||||
|     r = requests.patch( | ||||
|  | ||||
| @ -53,6 +53,19 @@ function pageReviewStatus(page: ArchivedItemPage) { | ||||
|   return msg("No review"); | ||||
| } | ||||
| 
 | ||||
| function crawlReviewStatus(status: number | null) { | ||||
|   if (status === 1) { | ||||
|     return msg("Failure"); | ||||
|   } | ||||
|   if (status === 3) { | ||||
|     return msg("Acceptable"); | ||||
|   } | ||||
|   if (status === 5) { | ||||
|     return msg("Good"); | ||||
|   } | ||||
|   return msg("No review"); | ||||
| } | ||||
| 
 | ||||
| export function renderQA({ | ||||
|   reviewStatus, | ||||
|   qaCrawlExecSeconds, | ||||
| @ -73,8 +86,10 @@ export function renderQA({ | ||||
|             reviewStatus !== undefined, | ||||
|             () => | ||||
|               reviewStatus | ||||
|                 ? html`<span class="capitalize">${reviewStatus}</span>` | ||||
|                 : msg("None"), | ||||
|                 ? html`<span class="capitalize"
 | ||||
|                     >${crawlReviewStatus(reviewStatus)}</span | ||||
|                   >` | ||||
|                 : msg("No review"), | ||||
|             renderEmpty, | ||||
|           )} | ||||
|         </btrix-desc-list-item> | ||||
|  | ||||
| @ -494,10 +494,10 @@ export class ArchivedItemQA extends TailwindElement { | ||||
|             class="mb-5" | ||||
|             name="reviewStatus" | ||||
|             label=${msg("Crawl quality assessment")} | ||||
|             value=${this.item?.reviewStatus ?? ""} | ||||
|             value=${this.item?.reviewStatus ?? null} | ||||
|             required | ||||
|           > | ||||
|             <sl-radio-button value="failure"> | ||||
|             <sl-radio-button value="1"> | ||||
|               <sl-icon | ||||
|                 name="patch-exclamation" | ||||
|                 slot="prefix" | ||||
| @ -505,7 +505,7 @@ export class ArchivedItemQA extends TailwindElement { | ||||
|               ></sl-icon> | ||||
|               ${msg("Failed")} | ||||
|             </sl-radio-button> | ||||
|             <sl-radio-button value="acceptable" checked> | ||||
|             <sl-radio-button value="3" checked> | ||||
|               <sl-icon | ||||
|                 name="patch-minus" | ||||
|                 slot="prefix" | ||||
| @ -513,7 +513,7 @@ export class ArchivedItemQA extends TailwindElement { | ||||
|               ></sl-icon> | ||||
|               ${msg("Acceptable")} | ||||
|             </sl-radio-button> | ||||
|             <sl-radio-button value="good"> | ||||
|             <sl-radio-button value="5"> | ||||
|               <sl-icon | ||||
|                 name="patch-check" | ||||
|                 slot="prefix" | ||||
|  | ||||
| @ -147,7 +147,7 @@ type ArchivedItemBase = { | ||||
|   tags: string[]; | ||||
|   crawlExecSeconds: number; | ||||
|   qaCrawlExecSeconds: number; | ||||
|   reviewStatus: "good" | "acceptable" | "failure" | null; | ||||
|   reviewStatus?: number; | ||||
| }; | ||||
| 
 | ||||
| export type Crawl = ArchivedItemBase & | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user