WeKnora deployment source with the reviewed wiki identity, summary and recovery fixes
Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s

This commit is contained in:
yawan
2026-09-22 16:19:06 +08:00
commit f7fc992f57
3929 changed files with 1006607 additions and 0 deletions
+190
View File
@@ -0,0 +1,190 @@
import { readFileSync, readdirSync } from 'node:fs'
import { resolve } from 'node:path'
import { defineConfig, type DefaultTheme } from 'vitepress'
import { withMermaid } from 'vitepress-plugin-mermaid'
import './theme-config.d.ts'
import { repoVersionLabel } from './version'
const root = resolve(import.meta.dirname, '..')
const sections: { dir: string; label: string }[] = [
{ dir: '01-getting-started', label: '快速开始' },
{ dir: '02-architecture', label: '架构' },
{ dir: '03-features', label: '功能模块' },
{ dir: '04-api', label: 'API 参考' },
{ dir: '05-clients', label: '客户端' },
{ dir: '06-development', label: '开发指南' },
]
/** 侧边栏条目文字:取正文一级标题,去掉冗余前后缀 */
function itemText(dir: string, file: string): string {
const raw = readFileSync(resolve(root, dir, file), 'utf-8')
const heading = raw.match(/^#\s+(.+)$/m)?.[1] ?? file.replace(/\.md$/, '')
return heading
.replace(/^API 参考[::]\s*/, '')
.replace(/\s*[((][^(())]*[))]\s*/g, ' ')
.replace(/\s{2,}/g, ' ')
.trim()
}
function itemsOf(dir: string): DefaultTheme.SidebarItem[] {
return readdirSync(resolve(root, dir))
.filter((f) => f.endsWith('.md'))
.sort()
.map((f) => ({
text: itemText(dir, f),
link: `/${dir}/${f.replace(/\.md$/, '')}`,
}))
}
const sidebar: DefaultTheme.SidebarItem[] = sections.map((s) => ({
text: s.label,
collapsed: false,
items: itemsOf(s.dir),
}))
/** 本地搜索默认按空白分词,中文整段会被当作一个词,这里退化为字粒度切分 */
function tokenize(text: string): string[] {
const tokens: string[] = []
for (const part of text.split(/[\s\n\r#%*,=/:;?[\]{}()&+\-!'"$·、,。:;?!()【】《》…—]+/)) {
if (!part) continue
if (/[\u4e00-\u9fa5]/.test(part)) {
tokens.push(part, ...part.split(''))
} else {
tokens.push(part)
}
}
return tokens
}
const repo = 'https://github.com/Tencent/WeKnora'
const site = 'https://weknora.weixin.qq.com'
export default withMermaid(
defineConfig({
title: 'WeKnora',
titleTemplate: ':title · WeKnora 文档',
description: 'WeKnora(维娜拉)官方文档:部署、配置、功能说明、API 参考与二次开发',
lang: 'zh-CN',
base: '/docs/',
cleanUrls: true,
lastUpdated: true,
srcExclude: ['README.md'],
metaChunk: true,
head: [
['link', { rel: 'icon', href: '/favicon.svg', type: 'image/svg+xml' }],
['meta', { name: 'theme-color', content: '#101f38' }],
['meta', { property: 'og:type', content: 'website' }],
['meta', { property: 'og:title', content: 'WeKnora 文档' }],
[
'meta',
{
property: 'og:description',
content: '把 PDF、Word、网页与飞书 / Notion / 语雀的资料收进知识库,做成答案带出处的问答系统',
},
],
],
markdown: {
theme: { light: 'github-light', dark: 'github-dark' },
lineNumbers: false,
toc: { level: [2, 3] },
config(md) {
// 表格外面包一层滚动容器。默认主题把 <table> 本身设成 display:block 来做
// 横向滚动,副作用是表格按内容收缩——列少的表比正文列窄一截,页面里宽窄不一。
// 把滚动交给包裹层后,表格可以恢复 display:table + width:100%,统一撑满正文列。
md.renderer.rules.table_open = () => '<div class="wk-table">\n<table>\n'
md.renderer.rules.table_close = () => '</table>\n</div>\n'
},
},
themeConfig: {
logo: { light: '/logo-mark.svg', dark: '/logo-mark-dark.svg', alt: 'WeKnora' },
siteTitle: 'WeKnora',
nav: [
{ text: '快速开始', link: '/01-getting-started/01-introduction', activeMatch: '/01-getting-started/' },
{ text: '架构', link: '/02-architecture/01-overview', activeMatch: '/02-architecture/' },
{ text: '功能', link: '/03-features/01-tenant-auth', activeMatch: '/03-features/' },
{ text: 'API', link: '/04-api/01-api-overview', activeMatch: '/04-api/' },
{ text: '客户端', link: '/05-clients/01-frontend', activeMatch: '/05-clients/' },
{ text: '开发', link: '/06-development/01-dev-guide', activeMatch: '/06-development/' },
{ text: '官网', link: site },
],
weknoraVersion: repoVersionLabel,
sidebar,
socialLinks: [{ icon: 'github', link: repo }],
outline: { level: [2, 3], label: '本页目录' },
docFooter: { prev: '上一篇', next: '下一篇' },
returnToTopLabel: '回到顶部',
sidebarMenuLabel: '目录',
darkModeSwitchLabel: '外观',
lightModeSwitchTitle: '切换到浅色',
darkModeSwitchTitle: '切换到深色',
lastUpdated: {
text: '最后更新',
formatOptions: { dateStyle: 'medium', timeStyle: undefined },
},
editLink: {
pattern: `${repo}/edit/main/website-docs/:path`,
text: '在 GitHub 上编辑此页',
},
search: {
provider: 'local',
options: {
translations: {
button: { buttonText: '搜索文档', buttonAriaLabel: '搜索文档' },
modal: {
displayDetails: '展开详情',
resetButtonTitle: '清除',
backButtonTitle: '返回',
noResultsText: '没有找到结果',
footer: {
selectText: '选择',
navigateText: '切换',
closeText: '关闭',
},
},
},
miniSearch: {
options: { tokenize },
searchOptions: {
fuzzy: 0.2,
prefix: true,
boost: { title: 4, text: 2, titles: 1 },
},
},
},
},
footer: {
message: `基于 WeKnora ${repoVersionLabel} 源码整理 · MIT License`,
copyright: '© Tencent WeKnora',
},
},
mermaid: {
theme: 'base',
fontFamily:
'"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", ui-sans-serif, sans-serif',
themeVariables: {
primaryColor: '#eef1f6',
primaryTextColor: '#101f38',
primaryBorderColor: '#9aa8bd',
lineColor: '#7d8ba1',
secondaryColor: '#faf7ef',
tertiaryColor: '#f6f7f9',
fontSize: '14px',
},
},
}),
)