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
|
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
|
Add type "crawl" to all existing crawls that don't already have a type
|
||||||
"""
|
"""
|
||||||
|
# pylint: disable=duplicate-code
|
||||||
crawls = self.mdb["crawls"]
|
crawls = self.mdb["crawls"]
|
||||||
try:
|
try:
|
||||||
await crawls.update_many(
|
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]
|
expireAt: Optional[str]
|
||||||
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
class ReviewStatus(str, Enum):
|
|
||||||
"""QA review statuses"""
|
|
||||||
|
|
||||||
GOOD = "good"
|
|
||||||
ACCEPTABLE = "acceptable"
|
|
||||||
FAILURE = "failure"
|
|
||||||
|
|
||||||
|
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
class CrawlStats(BaseModel):
|
class CrawlStats(BaseModel):
|
||||||
"""Crawl Stats for pages and size"""
|
"""Crawl Stats for pages and size"""
|
||||||
@ -599,7 +590,7 @@ class BaseCrawl(CoreCrawlable, BaseMongoModel):
|
|||||||
|
|
||||||
collectionIds: Optional[List[UUID]] = []
|
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"
|
crawlerChannel: str = "default"
|
||||||
image: Optional[str]
|
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]
|
description: Optional[str]
|
||||||
tags: Optional[List[str]]
|
tags: Optional[List[str]]
|
||||||
collectionIds: Optional[List[UUID]]
|
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}",
|
f"{API_PREFIX}/orgs/{default_org_id}/crawls/{admin_crawl_id}",
|
||||||
headers=admin_auth_headers,
|
headers=admin_auth_headers,
|
||||||
json={
|
json={
|
||||||
"reviewStatus": "good",
|
"reviewStatus": 5,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
@ -301,7 +301,7 @@ def test_update_crawl(
|
|||||||
headers=admin_auth_headers,
|
headers=admin_auth_headers,
|
||||||
)
|
)
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
assert r.json()["reviewStatus"] == "good"
|
assert r.json()["reviewStatus"] == 5
|
||||||
|
|
||||||
# Try to update to invalid reviewStatus
|
# Try to update to invalid reviewStatus
|
||||||
r = requests.patch(
|
r = requests.patch(
|
||||||
@ -318,7 +318,7 @@ def test_update_crawl(
|
|||||||
headers=admin_auth_headers,
|
headers=admin_auth_headers,
|
||||||
)
|
)
|
||||||
assert r.status_code == 200
|
assert r.status_code == 200
|
||||||
assert r.json()["reviewStatus"] == "good"
|
assert r.json()["reviewStatus"] == 5
|
||||||
|
|
||||||
# Verify deleting works as well
|
# Verify deleting works as well
|
||||||
r = requests.patch(
|
r = requests.patch(
|
||||||
|
|||||||
@ -53,6 +53,19 @@ function pageReviewStatus(page: ArchivedItemPage) {
|
|||||||
return msg("No review");
|
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({
|
export function renderQA({
|
||||||
reviewStatus,
|
reviewStatus,
|
||||||
qaCrawlExecSeconds,
|
qaCrawlExecSeconds,
|
||||||
@ -73,8 +86,10 @@ export function renderQA({
|
|||||||
reviewStatus !== undefined,
|
reviewStatus !== undefined,
|
||||||
() =>
|
() =>
|
||||||
reviewStatus
|
reviewStatus
|
||||||
? html`<span class="capitalize">${reviewStatus}</span>`
|
? html`<span class="capitalize"
|
||||||
: msg("None"),
|
>${crawlReviewStatus(reviewStatus)}</span
|
||||||
|
>`
|
||||||
|
: msg("No review"),
|
||||||
renderEmpty,
|
renderEmpty,
|
||||||
)}
|
)}
|
||||||
</btrix-desc-list-item>
|
</btrix-desc-list-item>
|
||||||
|
|||||||
@ -494,10 +494,10 @@ export class ArchivedItemQA extends TailwindElement {
|
|||||||
class="mb-5"
|
class="mb-5"
|
||||||
name="reviewStatus"
|
name="reviewStatus"
|
||||||
label=${msg("Crawl quality assessment")}
|
label=${msg("Crawl quality assessment")}
|
||||||
value=${this.item?.reviewStatus ?? ""}
|
value=${this.item?.reviewStatus ?? null}
|
||||||
required
|
required
|
||||||
>
|
>
|
||||||
<sl-radio-button value="failure">
|
<sl-radio-button value="1">
|
||||||
<sl-icon
|
<sl-icon
|
||||||
name="patch-exclamation"
|
name="patch-exclamation"
|
||||||
slot="prefix"
|
slot="prefix"
|
||||||
@ -505,7 +505,7 @@ export class ArchivedItemQA extends TailwindElement {
|
|||||||
></sl-icon>
|
></sl-icon>
|
||||||
${msg("Failed")}
|
${msg("Failed")}
|
||||||
</sl-radio-button>
|
</sl-radio-button>
|
||||||
<sl-radio-button value="acceptable" checked>
|
<sl-radio-button value="3" checked>
|
||||||
<sl-icon
|
<sl-icon
|
||||||
name="patch-minus"
|
name="patch-minus"
|
||||||
slot="prefix"
|
slot="prefix"
|
||||||
@ -513,7 +513,7 @@ export class ArchivedItemQA extends TailwindElement {
|
|||||||
></sl-icon>
|
></sl-icon>
|
||||||
${msg("Acceptable")}
|
${msg("Acceptable")}
|
||||||
</sl-radio-button>
|
</sl-radio-button>
|
||||||
<sl-radio-button value="good">
|
<sl-radio-button value="5">
|
||||||
<sl-icon
|
<sl-icon
|
||||||
name="patch-check"
|
name="patch-check"
|
||||||
slot="prefix"
|
slot="prefix"
|
||||||
|
|||||||
@ -147,7 +147,7 @@ type ArchivedItemBase = {
|
|||||||
tags: string[];
|
tags: string[];
|
||||||
crawlExecSeconds: number;
|
crawlExecSeconds: number;
|
||||||
qaCrawlExecSeconds: number;
|
qaCrawlExecSeconds: number;
|
||||||
reviewStatus: "good" | "acceptable" | "failure" | null;
|
reviewStatus?: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type Crawl = ArchivedItemBase &
|
export type Crawl = ArchivedItemBase &
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user