Skip to content

Commit 990ae76

Browse files
committed
feat:get lastmodified time by git log
1 parent 4bc6814 commit 990ae76

File tree

5 files changed

+390
-2
lines changed

5 files changed

+390
-2
lines changed

document/app/[lang]/docs/[[...slug]]/page.tsx

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,25 @@ import { notFound } from 'next/navigation';
44
import NotFound from '@/components/docs/not-found';
55
import { createRelativeLink } from 'fumadocs-ui/mdx';
66
import { getMDXComponents } from '@/mdx-components';
7+
import fs from 'fs';
8+
import path from 'path';
9+
10+
// 读取文档修改时间数据
11+
function getDocLastModifiedData(): Record<string, string> {
12+
try {
13+
const dataPath = path.join(process.cwd(), 'data', 'doc-last-modified.json');
14+
15+
if (!fs.existsSync(dataPath)) {
16+
return {};
17+
}
18+
19+
const data = fs.readFileSync(dataPath, 'utf8');
20+
return JSON.parse(data);
21+
} catch (error) {
22+
console.error('读取文档修改时间数据失败:', error);
23+
return {};
24+
}
25+
}
726

827
export default async function Page({
928
params
@@ -20,6 +39,11 @@ export default async function Page({
2039

2140
const MDXContent = page.data.body;
2241

42+
// 获取文档的最后修改时间
43+
const docLastModifiedData = getDocLastModifiedData();
44+
const filePath = `content/docs/${page.file.path}`;
45+
const lastModified = docLastModifiedData[filePath] || page.data.lastModified;
46+
2347
return (
2448
<DocsPage
2549
toc={page.data.toc}
@@ -33,7 +57,7 @@ export default async function Page({
3357
sha: 'main',
3458
path: `document/content/docs/${page.file.path}`
3559
}}
36-
lastUpdate={page.data.lastModified ? new Date(page.data.lastModified) : undefined}
60+
lastUpdate={lastModified ? new Date(lastModified) : undefined}
3761
>
3862
<DocsTitle>{page.data.title}</DocsTitle>
3963
<DocsDescription>{page.data.description}</DocsDescription>

document/components/docs/not-found.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { usePathname } from 'next/navigation';
44
import { useEffect } from 'react';
55

66
const exactMap: Record<string, string> = {
7-
'/docs/intro': '/docs/introduction/index',
7+
'/docs/intro': '/docs/introduction',
88
'/docs/guide/dashboard/workflow/coreferenceresolution':
99
'/docs/introduction/guide/dashboard/workflow/coreferenceResolution',
1010
'/docs/guide/admin/sso_dingtalk':
Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
{
2+
"content/docs/api/api1.mdx": "2025-07-15T15:23:52+08:00",
3+
"content/docs/api/api2.mdx": "2025-07-17T19:11:49+08:00",
4+
"content/docs/api/index.mdx": "2025-07-15T15:23:52+08:00",
5+
"content/docs/index.mdx": "2025-07-17T19:11:49+08:00",
6+
"content/docs/introduction/FAQ/app.mdx": "2025-07-15T15:23:52+08:00",
7+
"content/docs/introduction/FAQ/chat.mdx": "2025-07-15T15:23:52+08:00",
8+
"content/docs/introduction/FAQ/dataset.mdx": "2025-07-15T15:23:52+08:00",
9+
"content/docs/introduction/FAQ/docker.mdx": "2025-07-15T15:23:52+08:00",
10+
"content/docs/introduction/FAQ/error.mdx": "2025-07-15T15:23:52+08:00",
11+
"content/docs/introduction/FAQ/external_channel_integration.mdx": "2025-07-15T15:23:52+08:00",
12+
"content/docs/introduction/FAQ/other.mdx": "2025-07-15T15:23:52+08:00",
13+
"content/docs/introduction/FAQ/points_consumption.mdx": "2025-07-15T15:23:52+08:00",
14+
"content/docs/introduction/FAQ/privateDeploy.mdx": "2025-07-15T15:23:52+08:00",
15+
"content/docs/introduction/community.mdx": "2025-07-15T15:23:52+08:00",
16+
"content/docs/introduction/development/configuration.mdx": "2025-07-15T15:23:52+08:00",
17+
"content/docs/introduction/development/custom-models/bge-rerank.mdx": "2025-07-15T15:23:52+08:00",
18+
"content/docs/introduction/development/custom-models/chatglm2-m3e.mdx": "2025-07-15T15:23:52+08:00",
19+
"content/docs/introduction/development/custom-models/chatglm2.mdx": "2025-07-15T15:23:52+08:00",
20+
"content/docs/introduction/development/custom-models/m3e.mdx": "2025-07-15T15:23:52+08:00",
21+
"content/docs/introduction/development/custom-models/marker.mdx": "2025-07-15T15:23:52+08:00",
22+
"content/docs/introduction/development/custom-models/ollama.mdx": "2025-07-15T15:23:52+08:00",
23+
"content/docs/introduction/development/custom-models/xinference.mdx": "2025-07-15T15:23:52+08:00",
24+
"content/docs/introduction/development/design/dataset.mdx": "2025-07-15T15:23:52+08:00",
25+
"content/docs/introduction/development/design/design_plugin.mdx": "2025-07-15T15:23:52+08:00",
26+
"content/docs/introduction/development/docker.mdx": "2025-07-17T19:11:49+08:00",
27+
"content/docs/introduction/development/faq.mdx": "2025-07-17T19:11:49+08:00",
28+
"content/docs/introduction/development/intro.mdx": "2025-07-15T15:23:52+08:00",
29+
"content/docs/introduction/development/migration/docker_db.mdx": "2025-07-16T18:34:52+08:00",
30+
"content/docs/introduction/development/migration/docker_mongo.mdx": "2025-07-16T18:34:52+08:00",
31+
"content/docs/introduction/development/modelConfig/ai-proxy.mdx": "2025-07-15T15:23:52+08:00",
32+
"content/docs/introduction/development/modelConfig/intro.mdx": "2025-07-17T19:11:49+08:00",
33+
"content/docs/introduction/development/modelConfig/one-api.mdx": "2025-07-15T15:23:52+08:00",
34+
"content/docs/introduction/development/modelConfig/ppio.mdx": "2025-07-17T19:11:49+08:00",
35+
"content/docs/introduction/development/modelConfig/siliconCloud.mdx": "2025-07-15T15:23:52+08:00",
36+
"content/docs/introduction/development/openapi/chat.mdx": "2025-07-17T19:11:49+08:00",
37+
"content/docs/introduction/development/openapi/dataset.mdx": "2025-07-17T19:11:49+08:00",
38+
"content/docs/introduction/development/openapi/intro.mdx": "2025-07-15T15:23:52+08:00",
39+
"content/docs/introduction/development/openapi/share.mdx": "2025-07-17T19:11:49+08:00",
40+
"content/docs/introduction/development/proxy/cloudflare.mdx": "2025-07-15T15:23:52+08:00",
41+
"content/docs/introduction/development/proxy/http_proxy.mdx": "2025-07-15T15:23:52+08:00",
42+
"content/docs/introduction/development/proxy/nginx.mdx": "2025-07-15T15:23:52+08:00",
43+
"content/docs/introduction/development/sealos.mdx": "2025-07-15T15:23:52+08:00",
44+
"content/docs/introduction/development/upgrading/40.mdx": "2025-07-15T15:23:52+08:00",
45+
"content/docs/introduction/development/upgrading/41.mdx": "2025-07-15T15:23:52+08:00",
46+
"content/docs/introduction/development/upgrading/4100.mdx": "2025-07-16T18:34:52+08:00",
47+
"content/docs/introduction/development/upgrading/4101.mdx": "2025-07-16T18:34:52+08:00",
48+
"content/docs/introduction/development/upgrading/42.mdx": "2025-07-15T15:23:52+08:00",
49+
"content/docs/introduction/development/upgrading/421.mdx": "2025-07-15T15:23:52+08:00",
50+
"content/docs/introduction/development/upgrading/43.mdx": "2025-07-15T15:23:52+08:00",
51+
"content/docs/introduction/development/upgrading/44.mdx": "2025-07-15T15:23:52+08:00",
52+
"content/docs/introduction/development/upgrading/441.mdx": "2025-07-15T15:23:52+08:00",
53+
"content/docs/introduction/development/upgrading/442.mdx": "2025-07-15T15:23:52+08:00",
54+
"content/docs/introduction/development/upgrading/445.mdx": "2025-07-15T15:23:52+08:00",
55+
"content/docs/introduction/development/upgrading/446.mdx": "2025-07-15T15:23:52+08:00",
56+
"content/docs/introduction/development/upgrading/447.mdx": "2025-07-15T15:23:52+08:00",
57+
"content/docs/introduction/development/upgrading/45.mdx": "2025-07-15T15:23:52+08:00",
58+
"content/docs/introduction/development/upgrading/451.mdx": "2025-07-15T15:23:52+08:00",
59+
"content/docs/introduction/development/upgrading/452.mdx": "2025-07-15T15:23:52+08:00",
60+
"content/docs/introduction/development/upgrading/46.mdx": "2025-07-15T15:23:52+08:00",
61+
"content/docs/introduction/development/upgrading/461.mdx": "2025-07-15T15:23:52+08:00",
62+
"content/docs/introduction/development/upgrading/462.mdx": "2025-07-15T15:23:52+08:00",
63+
"content/docs/introduction/development/upgrading/463.mdx": "2025-07-15T15:23:52+08:00",
64+
"content/docs/introduction/development/upgrading/464.mdx": "2025-07-15T15:23:52+08:00",
65+
"content/docs/introduction/development/upgrading/465.mdx": "2025-07-15T15:23:52+08:00",
66+
"content/docs/introduction/development/upgrading/466.mdx": "2025-07-15T15:23:52+08:00",
67+
"content/docs/introduction/development/upgrading/467.mdx": "2025-07-15T15:23:52+08:00",
68+
"content/docs/introduction/development/upgrading/468.mdx": "2025-07-15T15:23:52+08:00",
69+
"content/docs/introduction/development/upgrading/469.mdx": "2025-07-15T15:23:52+08:00",
70+
"content/docs/introduction/development/upgrading/47.mdx": "2025-07-15T15:23:52+08:00",
71+
"content/docs/introduction/development/upgrading/471.mdx": "2025-07-15T15:23:52+08:00",
72+
"content/docs/introduction/development/upgrading/48.mdx": "2025-07-15T15:23:52+08:00",
73+
"content/docs/introduction/development/upgrading/481.mdx": "2025-07-15T15:23:52+08:00",
74+
"content/docs/introduction/development/upgrading/4810.mdx": "2025-07-15T15:23:52+08:00",
75+
"content/docs/introduction/development/upgrading/4811.mdx": "2025-07-15T15:23:52+08:00",
76+
"content/docs/introduction/development/upgrading/4812.mdx": "2025-07-15T15:23:52+08:00",
77+
"content/docs/introduction/development/upgrading/4813.mdx": "2025-07-15T15:23:52+08:00",
78+
"content/docs/introduction/development/upgrading/4814.mdx": "2025-07-15T15:23:52+08:00",
79+
"content/docs/introduction/development/upgrading/4815.mdx": "2025-07-15T15:23:52+08:00",
80+
"content/docs/introduction/development/upgrading/4816.mdx": "2025-07-15T15:23:52+08:00",
81+
"content/docs/introduction/development/upgrading/4817.mdx": "2025-07-15T15:23:52+08:00",
82+
"content/docs/introduction/development/upgrading/4818.mdx": "2025-07-15T15:23:52+08:00",
83+
"content/docs/introduction/development/upgrading/4819.mdx": "2025-07-15T15:23:52+08:00",
84+
"content/docs/introduction/development/upgrading/482.mdx": "2025-07-15T15:23:52+08:00",
85+
"content/docs/introduction/development/upgrading/4820.mdx": "2025-07-15T15:23:52+08:00",
86+
"content/docs/introduction/development/upgrading/4821.mdx": "2025-07-15T15:23:52+08:00",
87+
"content/docs/introduction/development/upgrading/4822.mdx": "2025-07-15T15:23:52+08:00",
88+
"content/docs/introduction/development/upgrading/4823.mdx": "2025-07-15T15:23:52+08:00",
89+
"content/docs/introduction/development/upgrading/483.mdx": "2025-07-15T15:23:52+08:00",
90+
"content/docs/introduction/development/upgrading/484.mdx": "2025-07-15T15:23:52+08:00",
91+
"content/docs/introduction/development/upgrading/485.mdx": "2025-07-15T15:23:52+08:00",
92+
"content/docs/introduction/development/upgrading/486.mdx": "2025-07-15T15:23:52+08:00",
93+
"content/docs/introduction/development/upgrading/487.mdx": "2025-07-15T15:23:52+08:00",
94+
"content/docs/introduction/development/upgrading/488.mdx": "2025-07-15T15:23:52+08:00",
95+
"content/docs/introduction/development/upgrading/489.mdx": "2025-07-15T15:23:52+08:00",
96+
"content/docs/introduction/development/upgrading/490.mdx": "2025-07-15T15:23:52+08:00",
97+
"content/docs/introduction/development/upgrading/491.mdx": "2025-07-15T15:23:52+08:00",
98+
"content/docs/introduction/development/upgrading/4910.mdx": "2025-07-15T15:23:52+08:00",
99+
"content/docs/introduction/development/upgrading/4911.mdx": "2025-07-15T15:23:52+08:00",
100+
"content/docs/introduction/development/upgrading/4912.mdx": "2025-07-15T15:23:52+08:00",
101+
"content/docs/introduction/development/upgrading/4913.mdx": "2025-07-15T15:23:52+08:00",
102+
"content/docs/introduction/development/upgrading/4914.mdx": "2025-07-15T15:23:52+08:00",
103+
"content/docs/introduction/development/upgrading/492.mdx": "2025-07-15T15:23:52+08:00",
104+
"content/docs/introduction/development/upgrading/493.mdx": "2025-07-15T15:23:52+08:00",
105+
"content/docs/introduction/development/upgrading/494.mdx": "2025-07-15T15:23:52+08:00",
106+
"content/docs/introduction/development/upgrading/495.mdx": "2025-07-15T15:23:52+08:00",
107+
"content/docs/introduction/development/upgrading/496.mdx": "2025-07-15T15:23:52+08:00",
108+
"content/docs/introduction/development/upgrading/497.mdx": "2025-07-15T15:23:52+08:00",
109+
"content/docs/introduction/development/upgrading/498.mdx": "2025-07-15T15:23:52+08:00",
110+
"content/docs/introduction/development/upgrading/499.mdx": "2025-07-15T15:23:52+08:00",
111+
"content/docs/introduction/development/upgrading/intro.mdx": "2025-07-15T15:23:52+08:00",
112+
"content/docs/introduction/guide/DialogBoxes/htmlRendering.mdx": "2025-07-15T15:23:52+08:00",
113+
"content/docs/introduction/guide/DialogBoxes/quoteList.mdx": "2025-07-15T15:23:52+08:00",
114+
"content/docs/introduction/guide/admin/sso.mdx": "2025-07-17T19:11:49+08:00",
115+
"content/docs/introduction/guide/admin/teamMode.mdx": "2025-07-15T15:23:52+08:00",
116+
"content/docs/introduction/guide/course/ai_settings.mdx": "2025-07-15T15:23:52+08:00",
117+
"content/docs/introduction/guide/course/chat_input_guide.mdx": "2025-07-15T15:23:52+08:00",
118+
"content/docs/introduction/guide/course/collection_tags.mdx": "2025-07-15T15:23:52+08:00",
119+
"content/docs/introduction/guide/course/fileInput.mdx": "2025-07-15T15:23:52+08:00",
120+
"content/docs/introduction/guide/course/quick-start.mdx": "2025-07-15T15:23:52+08:00",
121+
"content/docs/introduction/guide/dashboard/basic-mode.mdx": "2025-07-15T15:23:52+08:00",
122+
"content/docs/introduction/guide/dashboard/gapier.mdx": "2025-07-15T15:23:52+08:00",
123+
"content/docs/introduction/guide/dashboard/intro.mdx": "2025-07-15T15:23:52+08:00",
124+
"content/docs/introduction/guide/dashboard/mcp_server.mdx": "2025-07-15T15:23:52+08:00",
125+
"content/docs/introduction/guide/dashboard/mcp_tools.mdx": "2025-07-15T15:23:52+08:00",
126+
"content/docs/introduction/guide/dashboard/workflow/ai_chat.mdx": "2025-07-15T15:23:52+08:00",
127+
"content/docs/introduction/guide/dashboard/workflow/content_extract.mdx": "2025-07-15T15:23:52+08:00",
128+
"content/docs/introduction/guide/dashboard/workflow/coreferenceResolution.mdx": "2025-07-15T15:23:52+08:00",
129+
"content/docs/introduction/guide/dashboard/workflow/custom_feedback.mdx": "2025-07-15T15:23:52+08:00",
130+
"content/docs/introduction/guide/dashboard/workflow/dataset_search.mdx": "2025-07-15T15:23:52+08:00",
131+
"content/docs/introduction/guide/dashboard/workflow/document_parsing.mdx": "2025-07-15T15:23:52+08:00",
132+
"content/docs/introduction/guide/dashboard/workflow/form_input.mdx": "2025-07-15T15:23:52+08:00",
133+
"content/docs/introduction/guide/dashboard/workflow/http.mdx": "2025-07-17T19:11:49+08:00",
134+
"content/docs/introduction/guide/dashboard/workflow/knowledge_base_search_merge.mdx": "2025-07-15T15:23:52+08:00",
135+
"content/docs/introduction/guide/dashboard/workflow/laf.mdx": "2025-07-15T15:23:52+08:00",
136+
"content/docs/introduction/guide/dashboard/workflow/loop.mdx": "2025-07-15T15:23:52+08:00",
137+
"content/docs/introduction/guide/dashboard/workflow/question_classify.mdx": "2025-07-15T15:23:52+08:00",
138+
"content/docs/introduction/guide/dashboard/workflow/reply.mdx": "2025-07-15T15:23:52+08:00",
139+
"content/docs/introduction/guide/dashboard/workflow/sandbox.mdx": "2025-07-15T15:23:52+08:00",
140+
"content/docs/introduction/guide/dashboard/workflow/text_editor.mdx": "2025-07-15T15:23:52+08:00",
141+
"content/docs/introduction/guide/dashboard/workflow/tfswitch.mdx": "2025-07-15T15:23:52+08:00",
142+
"content/docs/introduction/guide/dashboard/workflow/tool.mdx": "2025-07-15T15:23:52+08:00",
143+
"content/docs/introduction/guide/dashboard/workflow/user-selection.mdx": "2025-07-15T15:23:52+08:00",
144+
"content/docs/introduction/guide/dashboard/workflow/variable_update.mdx": "2025-07-15T15:23:52+08:00",
145+
"content/docs/introduction/guide/knowledge_base/RAG.mdx": "2025-07-15T15:23:52+08:00",
146+
"content/docs/introduction/guide/knowledge_base/api_dataset.mdx": "2025-07-17T19:11:49+08:00",
147+
"content/docs/introduction/guide/knowledge_base/dataset_engine.mdx": "2025-07-15T15:23:52+08:00",
148+
"content/docs/introduction/guide/knowledge_base/externalFile.mdx": "2025-07-15T15:23:52+08:00",
149+
"content/docs/introduction/guide/knowledge_base/lark_dataset.mdx": "2025-07-15T15:23:52+08:00",
150+
"content/docs/introduction/guide/knowledge_base/template.mdx": "2025-07-15T15:23:52+08:00",
151+
"content/docs/introduction/guide/knowledge_base/third_dataset.mdx": "2025-07-15T15:23:52+08:00",
152+
"content/docs/introduction/guide/knowledge_base/websync.mdx": "2025-07-15T15:23:52+08:00",
153+
"content/docs/introduction/guide/knowledge_base/yuque_dataset.mdx": "2025-07-15T15:23:52+08:00",
154+
"content/docs/introduction/guide/plugins/bing_search_plugin.mdx": "2025-07-15T15:23:52+08:00",
155+
"content/docs/introduction/guide/plugins/dev_system_tool.mdx": "2025-07-15T15:23:52+08:00",
156+
"content/docs/introduction/guide/plugins/doc2x_plugin_guide.mdx": "2025-07-15T15:23:52+08:00",
157+
"content/docs/introduction/guide/plugins/google_search_plugin_guide.mdx": "2025-07-15T15:23:52+08:00",
158+
"content/docs/introduction/guide/plugins/how_to_submit_system_plugin.mdx": "2025-07-15T15:23:52+08:00",
159+
"content/docs/introduction/guide/plugins/searxng_plugin_guide.mdx": "2025-07-15T15:23:52+08:00",
160+
"content/docs/introduction/guide/team_permissions/invitation_link.mdx": "2025-07-15T15:23:52+08:00",
161+
"content/docs/introduction/guide/team_permissions/team_roles_permissions.mdx": "2025-07-15T15:23:52+08:00",
162+
"content/docs/introduction/index.en.mdx": "2025-07-17T19:11:49+08:00",
163+
"content/docs/introduction/index.mdx": "2025-07-17T19:11:49+08:00",
164+
"content/docs/introduction/shopping_cart/intro.mdx": "2025-07-15T15:23:52+08:00",
165+
"content/docs/introduction/shopping_cart/saas.mdx": "2025-07-15T15:23:52+08:00",
166+
"content/docs/protocol/index.mdx": "2025-07-15T15:23:52+08:00",
167+
"content/docs/protocol/open-source.en.mdx": "2025-07-15T15:23:52+08:00",
168+
"content/docs/protocol/open-source.mdx": "2025-07-15T15:23:52+08:00",
169+
"content/docs/protocol/privacy.en.mdx": "2025-07-15T15:23:52+08:00",
170+
"content/docs/protocol/privacy.mdx": "2025-07-15T15:23:52+08:00",
171+
"content/docs/protocol/terms.en.mdx": "2025-07-15T15:23:52+08:00",
172+
"content/docs/protocol/terms.mdx": "2025-07-15T15:23:52+08:00",
173+
"content/docs/use-cases/app-cases/dalle3.mdx": "2025-05-15T10:53:31+08:00",
174+
"content/docs/use-cases/app-cases/english_essay_correction_bot.mdx": "2025-05-15T10:53:31+08:00",
175+
"content/docs/use-cases/app-cases/feishu_webhook.mdx": "2025-05-15T10:53:31+08:00",
176+
"content/docs/use-cases/app-cases/fixingEvidence.mdx": "2025-05-15T10:53:31+08:00",
177+
"content/docs/use-cases/app-cases/google_search.mdx": "2025-05-15T10:53:31+08:00",
178+
"content/docs/use-cases/app-cases/lab_appointment.mdx": "2025-05-15T10:53:31+08:00",
179+
"content/docs/use-cases/app-cases/multi_turn_translation_bot.mdx": "2025-05-15T10:53:31+08:00",
180+
"content/docs/use-cases/app-cases/submit_application_template.mdx": "2025-05-15T10:53:31+08:00",
181+
"content/docs/use-cases/app-cases/translate-subtitle-using-gpt.mdx": "2025-05-15T10:53:31+08:00",
182+
"content/docs/use-cases/external-integration/dingtalk.mdx": "2025-05-15T10:53:31+08:00",
183+
"content/docs/use-cases/external-integration/feishu.mdx": "2025-05-15T10:53:31+08:00",
184+
"content/docs/use-cases/external-integration/official_account.mdx": "2025-05-15T10:53:31+08:00",
185+
"content/docs/use-cases/external-integration/openapi.mdx": "2025-05-15T10:53:31+08:00",
186+
"content/docs/use-cases/index.mdx": "2025-07-16T18:34:52+08:00"
187+
}

0 commit comments

Comments
 (0)