배포
This commit is contained in:
@@ -1113,9 +1113,9 @@ export async function loadStrategy(id: number): Promise<StrategyDto | null> {
|
||||
return request<StrategyDto>(`/strategies/${id}`);
|
||||
}
|
||||
|
||||
/** 알림·지표 표시 — missing 캐시 무시, 성공 시 캐시 해제 */
|
||||
/** 알림·지표 표시 — missing 캐시 적용, 성공 시 캐시 해제 */
|
||||
export async function loadStrategyForNotification(id: number): Promise<StrategyDto | null> {
|
||||
if (!hasRegisteredUser() || id <= 0) return null;
|
||||
if (!hasRegisteredUser() || id <= 0 || isStrategyMissingOnServer(id)) return null;
|
||||
const dto = await request<StrategyDto>(`/strategies/${id}`);
|
||||
if (dto) unmarkStrategyMissingOnServer(id);
|
||||
return dto;
|
||||
|
||||
@@ -65,4 +65,19 @@ export function markStrategyMissingFromPath(pathOnly: string): void {
|
||||
if (m) markStrategyMissingOnServer(Number(m[1]));
|
||||
}
|
||||
|
||||
/** 목록에 없는 참조 ID를 missing 으로 기록 — 삭제된 전략 404 반복 방지 */
|
||||
export function markStrategyIdsMissingUnlessValid(
|
||||
validIds: Iterable<number>,
|
||||
referencedIds: Iterable<number | null | undefined>,
|
||||
): void {
|
||||
const valid = new Set(
|
||||
[...validIds].map(id => Math.trunc(id)).filter(id => id > 0),
|
||||
);
|
||||
for (const raw of referencedIds) {
|
||||
if (raw == null) continue;
|
||||
const id = Math.trunc(raw);
|
||||
if (id > 0 && !valid.has(id)) markStrategyMissingOnServer(id);
|
||||
}
|
||||
}
|
||||
|
||||
hydrateStrategyMissingCache();
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
* 전략 ID → 이름 해석 (목록에 없거나 삭제된 전략 포함)
|
||||
*/
|
||||
import { loadStrategyForNotification, type StrategyDto } from './backendApi';
|
||||
import { isStrategyMissingOnServer } from './strategyMissingCache';
|
||||
|
||||
/** 전략 목록 + 누락 ID별 단건 조회로 이름 맵 보강 */
|
||||
export async function enrichStrategyNameMap(
|
||||
@@ -12,7 +13,7 @@ export async function enrichStrategyNameMap(
|
||||
const missing = [...new Set(
|
||||
[...ids]
|
||||
.map(id => (id != null && id > 0 ? Math.trunc(id) : null))
|
||||
.filter((id): id is number => id != null && !out[id]),
|
||||
.filter((id): id is number => id != null && !out[id] && !isStrategyMissingOnServer(id)),
|
||||
)];
|
||||
if (!missing.length) return out;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user