Commit 3b970032 authored by Phạm Quang Bảo's avatar Phạm Quang Bảo

[tag]0.1-prod

parents 4c5dea31 7ba89c51
Pipeline #53985 passed with stages
in 2 minutes and 21 seconds
...@@ -61,30 +61,44 @@ type PagedRows<T> = { ...@@ -61,30 +61,44 @@ type PagedRows<T> = {
}; };
}; };
const fetchAllNewsPosts = async (): Promise<PostRow[]> => { // Chia nhỏ request để tránh nginx trả 504 khi lấy quá nhiều bản ghi một lúc
const pageSize = 5000; const POST_PAGE_SIZE = 500;
const maxPages = 20; const POST_MAX_PAGES = 100; // đủ cho 50.000 bài viết
const all: PostRow[] = []; const POST_PAGE_RETRIES = 3;
const RETRY_DELAY_MS = 1500;
for (let page = 1; page <= maxPages; page++) { const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
const fetchPostPage = async (page: number): Promise<PagedRows<PostRow> | null> => {
for (let attempt = 1; attempt <= POST_PAGE_RETRIES; attempt++) {
try { try {
const response = (await getApiV10Post({ return (await getApiV10Post({
page, page,
pageSize, pageSize: POST_PAGE_SIZE,
sortField: "published_at", sortField: "published_at",
sortOrder: "desc", sortOrder: "desc",
filters: "is_hidden==false,is_active==true,type==news", filters: "is_hidden==false,is_active==true,type==news",
})) as unknown as PagedRows<PostRow>; })) as unknown as PagedRows<PostRow>;
} catch (error) {
console.warn(`[sitemap] Failed to fetch posts page ${page} (attempt ${attempt}/${POST_PAGE_RETRIES})`, error);
if (attempt < POST_PAGE_RETRIES) await sleep(RETRY_DELAY_MS);
}
}
return null;
};
const fetchAllNewsPosts = async (): Promise<PostRow[]> => {
const all: PostRow[] = [];
for (let page = 1; page <= POST_MAX_PAGES; page++) {
const response = await fetchPostPage(page);
if (!response) break;
const rows = response?.responseData?.rows ?? []; const rows = response?.responseData?.rows ?? [];
all.push(...rows); all.push(...rows);
const count = Number(response?.responseData?.count ?? 0); const count = Number(response?.responseData?.count ?? 0);
if (rows.length < pageSize || all.length >= count) break; if (rows.length < POST_PAGE_SIZE || (count > 0 && all.length >= count)) break;
} catch (error) {
console.warn("[sitemap] Failed to fetch posts page", page, error);
break;
}
} }
return all; return all;
......
...@@ -214,7 +214,7 @@ export function AdminSidebar() { ...@@ -214,7 +214,7 @@ export function AdminSidebar() {
{isOpen ? ( {isOpen ? (
<div className="min-w-0"> <div className="min-w-0">
<div className="truncate text-[13px] font-bold uppercase tracking-[0.22em] text-[#063e8e]"> <div className="truncate text-[13px] font-bold uppercase tracking-[0.22em] text-[#063e8e]">
{logoData?.logo_name || "VCCI News"} VCCI News
</div> </div>
<div className="mt-1 text-sm leading-5 text-slate-600"> <div className="mt-1 text-sm leading-5 text-slate-600">
Trang quản trị website Trang quản trị website
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment