fix: bump pcat cache prefix to invalidate stale empty results
Some checks failed
CI / Lint, Typecheck, Test & Build (push) Has been cancelled

Old queries cached empty arrays for groups and schemas. Bumping cache
key prefix from "pcat:" to "pcat2:" so new correct queries bypass stale
entries without needing manual Redis flush.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-12 20:40:15 +00:00
parent 51f630db3c
commit 79332003d2

View File

@@ -62,6 +62,8 @@ export interface PcatSchemaDetailDto {
hotspots: { id: string; key: string; group: number; shape: "rect"; coordinates: number[]; label: string }[]; hotspots: { id: string; key: string; group: number; shape: "rect"; coordinates: number[]; label: string }[];
} }
const CACHE_PREFIX = "pcat2"; // bumped to invalidate stale cache from v1 queries
const CACHE_TTL = { const CACHE_TTL = {
catalogs: 86400, catalogs: 86400,
models: 43200, models: 43200,
@@ -81,7 +83,7 @@ export class PcatCatalogService {
) {} ) {}
async getCatalogs(): Promise<PcatCatalogDto[]> { async getCatalogs(): Promise<PcatCatalogDto[]> {
const cacheKey = "pcat:catalogs"; const cacheKey = `${CACHE_PREFIX}:catalogs`;
const cached = await this.redis.getJson<PcatCatalogDto[]>(cacheKey); const cached = await this.redis.getJson<PcatCatalogDto[]>(cacheKey);
if (cached) return cached; if (cached) return cached;
@@ -108,7 +110,7 @@ export class PcatCatalogService {
} }
async getModels(catalogId: string): Promise<PcatModelDto[]> { async getModels(catalogId: string): Promise<PcatModelDto[]> {
const cacheKey = `pcat:models:${catalogId}`; const cacheKey = `${CACHE_PREFIX}:models:${catalogId}`;
const cached = await this.redis.getJson<PcatModelDto[]>(cacheKey); const cached = await this.redis.getJson<PcatModelDto[]>(cacheKey);
if (cached) return cached; if (cached) return cached;
@@ -139,7 +141,7 @@ export class PcatCatalogService {
} }
async getCars(modelId: string): Promise<PcatCarDto[]> { async getCars(modelId: string): Promise<PcatCarDto[]> {
const cacheKey = `pcat:cars:${modelId}`; const cacheKey = `${CACHE_PREFIX}:cars:${modelId}`;
const cached = await this.redis.getJson<PcatCarDto[]>(cacheKey); const cached = await this.redis.getJson<PcatCarDto[]>(cacheKey);
if (cached) return cached; if (cached) return cached;
@@ -184,7 +186,7 @@ export class PcatCatalogService {
} }
async getCarGroups(carId: string, parentId?: string): Promise<PcatGroupDto[]> { async getCarGroups(carId: string, parentId?: string): Promise<PcatGroupDto[]> {
const cacheKey = `pcat:car-groups:${carId}:${parentId || "root"}`; const cacheKey = `${CACHE_PREFIX}:car-groups:${carId}:${parentId || "root"}`;
const cached = await this.redis.getJson<PcatGroupDto[]>(cacheKey); const cached = await this.redis.getJson<PcatGroupDto[]>(cacheKey);
if (cached) return cached; if (cached) return cached;
@@ -233,7 +235,7 @@ export class PcatCatalogService {
} }
async getSchemaImages(carId: string, groupId: string): Promise<PcatSchemaImageDto[]> { async getSchemaImages(carId: string, groupId: string): Promise<PcatSchemaImageDto[]> {
const cacheKey = `pcat:schemas:${carId}:${groupId}`; const cacheKey = `${CACHE_PREFIX}:schemas:${carId}:${groupId}`;
const cached = await this.redis.getJson<PcatSchemaImageDto[]>(cacheKey); const cached = await this.redis.getJson<PcatSchemaImageDto[]>(cacheKey);
if (cached) return cached; if (cached) return cached;
@@ -257,7 +259,7 @@ export class PcatCatalogService {
} }
async getSchemaDetail(schemaImageId: string): Promise<PcatSchemaDetailDto> { async getSchemaDetail(schemaImageId: string): Promise<PcatSchemaDetailDto> {
const cacheKey = `pcat:schema-detail:${schemaImageId}`; const cacheKey = `${CACHE_PREFIX}:schema-detail:${schemaImageId}`;
const cached = await this.redis.getJson<PcatSchemaDetailDto>(cacheKey); const cached = await this.redis.getJson<PcatSchemaDetailDto>(cacheKey);
if (cached) return cached; if (cached) return cached;