fix: refresh price verification timestamps
This commit is contained in:
parent
bba48d3e84
commit
5522bb2152
@ -187,7 +187,7 @@ export async function upsertPriceObservation(params: {
|
|||||||
await pool.query(
|
await pool.query(
|
||||||
`UPDATE price_observations
|
`UPDATE price_observations
|
||||||
SET is_verified = true,
|
SET is_verified = true,
|
||||||
verified_at = COALESCE(verified_at, NOW())
|
verified_at = NOW()
|
||||||
WHERE transceiver_id = $1
|
WHERE transceiver_id = $1
|
||||||
AND source_vendor_id = $2
|
AND source_vendor_id = $2
|
||||||
AND content_hash = $3
|
AND content_hash = $3
|
||||||
@ -197,9 +197,9 @@ export async function upsertPriceObservation(params: {
|
|||||||
await pool.query(
|
await pool.query(
|
||||||
`UPDATE transceivers SET
|
`UPDATE transceivers SET
|
||||||
price_verified = true,
|
price_verified = true,
|
||||||
price_verified_at = COALESCE(price_verified_at, NOW())
|
price_verified_at = NOW()
|
||||||
${isCompetitor ? ", competitor_verified = true, competitor_verified_at = COALESCE(competitor_verified_at, NOW())" : ""}
|
${isCompetitor ? ", competitor_verified = true, competitor_verified_at = NOW()" : ""}
|
||||||
WHERE id = $1 AND (price_verified IS NULL OR price_verified = false OR ${isCompetitor ? "competitor_verified IS NULL OR competitor_verified = false" : "false"})`,
|
WHERE id = $1`,
|
||||||
[params.transceiverId]
|
[params.transceiverId]
|
||||||
);
|
);
|
||||||
await checkAndSetFullyVerified(params.transceiverId);
|
await checkAndSetFullyVerified(params.transceiverId);
|
||||||
@ -230,9 +230,9 @@ export async function upsertPriceObservation(params: {
|
|||||||
await pool.query(
|
await pool.query(
|
||||||
`UPDATE transceivers SET
|
`UPDATE transceivers SET
|
||||||
price_verified = true,
|
price_verified = true,
|
||||||
price_verified_at = COALESCE(price_verified_at, NOW()),
|
price_verified_at = NOW(),
|
||||||
competitor_verified = true,
|
competitor_verified = true,
|
||||||
competitor_verified_at = COALESCE(competitor_verified_at, NOW())
|
competitor_verified_at = NOW()
|
||||||
WHERE id = $1`,
|
WHERE id = $1`,
|
||||||
[params.transceiverId]
|
[params.transceiverId]
|
||||||
);
|
);
|
||||||
@ -240,9 +240,8 @@ export async function upsertPriceObservation(params: {
|
|||||||
await pool.query(
|
await pool.query(
|
||||||
`UPDATE transceivers
|
`UPDATE transceivers
|
||||||
SET price_verified = true,
|
SET price_verified = true,
|
||||||
price_verified_at = COALESCE(price_verified_at, NOW())
|
price_verified_at = NOW()
|
||||||
WHERE id = $1
|
WHERE id = $1`,
|
||||||
AND (price_verified IS NULL OR price_verified = false OR price_verified_at IS NULL)`,
|
|
||||||
[params.transceiverId]
|
[params.transceiverId]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,9 +1,48 @@
|
|||||||
# Current TIP Sync State
|
# Current TIP Sync State
|
||||||
|
|
||||||
Updated: 2026-05-09 05:58 UTC
|
Updated: 2026-05-09 06:15 UTC
|
||||||
|
|
||||||
## Newest Work
|
## Newest Work
|
||||||
|
|
||||||
|
- TIP Flexoptix price truth recheck on 2026-05-09:
|
||||||
|
- operator question:
|
||||||
|
- are all Flexoptix prices, images and information present
|
||||||
|
- are the Flexoptix prices 100% correct
|
||||||
|
- live truth:
|
||||||
|
- total Flexoptix rows in TIP: `744`
|
||||||
|
- current Flexoptix catalog scraper finds: `615` active catalog products
|
||||||
|
- price verified rows: `619`
|
||||||
|
- latest verified price observations: `615`
|
||||||
|
- image verified rows: `615`
|
||||||
|
- details verified rows: `500`
|
||||||
|
- price + image + details verified: `496`
|
||||||
|
- fully verified: `496`
|
||||||
|
- missing image URL: `129`
|
||||||
|
- missing reach label: `244`
|
||||||
|
- missing fiber type: `131`
|
||||||
|
- important interpretation:
|
||||||
|
- current active Flexoptix catalog price set is freshly rechecked
|
||||||
|
- the full historical/extra Flexoptix table is not complete
|
||||||
|
- therefore do not claim all `744` Flexoptix rows are complete
|
||||||
|
- code fix:
|
||||||
|
- `packages/scraper/src/utils/db.ts`
|
||||||
|
- unchanged price observations now refresh `price_observations.verified_at = NOW()`
|
||||||
|
- unchanged product prices now refresh `transceivers.price_verified_at = NOW()`
|
||||||
|
- this makes live rechecks auditable instead of leaving the old verification timestamp in place
|
||||||
|
- live recheck:
|
||||||
|
- deployed `db.ts` to Erik
|
||||||
|
- `pnpm -C packages/scraper build` passed
|
||||||
|
- ran light Flexoptix catalog scraper on Erik with `nice -n 10`
|
||||||
|
- result:
|
||||||
|
- `Total unique products after GraphQL: 615`
|
||||||
|
- `Flexoptix Catalog Complete: 615 products, 0 prices`
|
||||||
|
- `0 prices` means no changed price rows were inserted because content hashes matched
|
||||||
|
- after timestamp fix, DB shows `615` latest verified Flexoptix price observations with `verified_at` in the last 10 minutes
|
||||||
|
- honest answer:
|
||||||
|
- 615 active catalog prices are freshly source-confirmed by the Flexoptix scraper
|
||||||
|
- no claim should be made that all 744 Flexoptix DB rows have complete price/image/detail coverage
|
||||||
|
- no system should promise absolute 100% price truth forever because live vendor prices can change and may vary by account/currency/VAT/session; TIP should display last-source-verified timestamp
|
||||||
|
|
||||||
- MAGATAMA Atlas rematerialization / anti-auto-resolve hardening completed live on 2026-05-09:
|
- MAGATAMA Atlas rematerialization / anti-auto-resolve hardening completed live on 2026-05-09:
|
||||||
- operator problem:
|
- operator problem:
|
||||||
- Atlas / Findings / Protection Proof had become dishonest again
|
- Atlas / Findings / Protection Proof had become dishonest again
|
||||||
|
|||||||
57
sync/history/2026-05-09-flexoptix-price-truth-recheck.md
Normal file
57
sync/history/2026-05-09-flexoptix-price-truth-recheck.md
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
# Flexoptix Price Truth Recheck
|
||||||
|
|
||||||
|
Date: 2026-05-09
|
||||||
|
|
||||||
|
## Question
|
||||||
|
|
||||||
|
The operator asked whether all Flexoptix prices, images and product information are present, and whether the prices are 100% correct.
|
||||||
|
|
||||||
|
## Short Answer
|
||||||
|
|
||||||
|
No, not all `744` Flexoptix rows are complete.
|
||||||
|
|
||||||
|
The current active Flexoptix catalog scraper finds `615` active catalog products. Those `615` latest price observations were source-confirmed again after the timestamp refresh fix.
|
||||||
|
|
||||||
|
## Live Counts
|
||||||
|
|
||||||
|
- total Flexoptix rows: `744`
|
||||||
|
- active catalog products found by scraper: `615`
|
||||||
|
- price verified rows: `619`
|
||||||
|
- latest verified price observations: `615`
|
||||||
|
- image verified rows: `615`
|
||||||
|
- details verified rows: `500`
|
||||||
|
- price + image + details verified: `496`
|
||||||
|
- fully verified: `496`
|
||||||
|
- missing image URL: `129`
|
||||||
|
- missing reach label: `244`
|
||||||
|
- missing fiber type: `131`
|
||||||
|
|
||||||
|
## Code Fix
|
||||||
|
|
||||||
|
Changed `packages/scraper/src/utils/db.ts` so unchanged prices refresh verification timestamps:
|
||||||
|
|
||||||
|
- `price_observations.verified_at = NOW()`
|
||||||
|
- `transceivers.price_verified_at = NOW()`
|
||||||
|
- competitor timestamp refresh uses `NOW()` as well
|
||||||
|
|
||||||
|
This fixes the audit trail for live source rechecks. Before this, the scraper could see the same price again but leave the old timestamp in place.
|
||||||
|
|
||||||
|
## Live Recheck
|
||||||
|
|
||||||
|
Deployed `db.ts` to Erik and built successfully:
|
||||||
|
|
||||||
|
- `pnpm -C packages/scraper build`
|
||||||
|
|
||||||
|
Ran the light Flexoptix catalog scraper:
|
||||||
|
|
||||||
|
- `Total unique products after GraphQL: 615`
|
||||||
|
- `Flexoptix Catalog Complete: 615 products, 0 prices`
|
||||||
|
|
||||||
|
Interpretation:
|
||||||
|
|
||||||
|
- `0 prices` means no changed price rows were inserted because hashes matched existing observations.
|
||||||
|
- After the timestamp fix, `615` latest Flexoptix price observations have `verified_at` within the last 10 minutes of the check.
|
||||||
|
|
||||||
|
## Important Caveat
|
||||||
|
|
||||||
|
TIP can say "last source verified at" for the active catalog prices. It should not claim permanent absolute 100% truth because Flexoptix prices can change and may vary by account, currency, VAT/session, or availability rules.
|
||||||
Loading…
x
Reference in New Issue
Block a user