diff --git a/middleware/comparison_report.md b/middleware/comparison_report.md new file mode 100644 index 000000000..f00ed5e16 --- /dev/null +++ b/middleware/comparison_report.md @@ -0,0 +1,888 @@ +# 文档对比报告 + +## 目录结构问题 + +- EN 文件数量不一致: workshop/basic (ZH: 3, EN: 2) +差异文件: travel-assistant.md +- EN 文件数量不一致: plugins/quick-start/develop-plugins (ZH: 7, EN: 6) +差异文件: tool-cha-jian.md +- EN 目录缺失: workspace +- EN 文件数量不一致: features (ZH: 0, EN: 1) +差异文件: workflow.md +- EN 目录缺失: features/datasets +- EN 目录缺失: features/ai-plugins +- EN 文件数量不一致: learn-more/extended-reading (ZH: 5, EN: 3) +差异文件: what-is-array-variable.md, prompt-engineering.md +- EN 目录缺失: learn-more/extended-reading/prompt-engineering +- EN 目录缺失: learn-more/extended-reading/prompt-engineering/prompt-engineering-1 +- EN 文件数量不一致: learn-more/use-cases (ZH: 18, EN: 12) +差异文件: dify-on-whatsapp.md, dify-on-wechat.md, train-a-qa-chatbot-that-belongs-to-you.md, create-a-midjourney-prompt-bot-with-dify.md, how-to-creat-dify-schedule.md, practical-implementation-of-building-llm-applications-using-a-full-set-of-open-source-tools.md, create-a-midjoureny-prompt-word-robot-with-zero-code.md, how-to-make-llm-app-provide-a-progressive-chat-experience.md, dify-on-dingtalk.md, dify-on-teams.md +- EN 目录缺失: explore +- EN 目录缺失: explore/images +- EN 文件数量不一致: guides/extension/api-based-extension (ZH: 4, EN: 5) +差异文件: moderation-extension.md +- EN 文件数量不一致: guides/workspace (ZH: 3, EN: 5) +差异文件: billing.md, explore.md +- EN 文件数量不一致: guides/application-orchestrate (ZH: 5, EN: 8) +差异文件: text-generation-application.md, llms-use-faq.md, overview.md +- EN 文件数量不一致: guides/knowledge-base (ZH: 8, EN: 10) +差异文件: external-data-tool.md, connect-external-knowledge.md, sync-from-website.md, connect-external-knowledge-base.md, create-knowledge-and-upload-documents.md, knowledge-and-documents-maintenance.md +- EN 文件数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance (ZH: 3, EN: 2) +差异文件: README.md +- EN 文件数量不一致: guides/knowledge-base/create-knowledge-and-upload-documents (ZH: 3, EN: 2) +差异文件: 3.-select-the-indexing-method-and-retrieval-setting.md, setting-indexing-methods.md, 2.-choose-a-chunk-mode.md, README.md, chunking-and-cleaning-text.md +- EN 目录缺失: guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data +- EN 目录缺失: .gitbook/assets/dify-on-wechat +- EN 目录缺失: .gitbook/assets/dify-on-whatsapp +- EN 目录缺失: .gitbook/assets/dify-on-dingtalk +- EN 目录缺失: .gitbook/assets/dify-on-teams +- JA 文件数量不一致: workshop (ZH: 0, JA: 1) +差异文件: README.md +- JA 文件数量不一致: workshop/intermediate (ZH: 4, JA: 3) +差异文件: customer-service-bot.md +- JA 文件数量不一致: plugins/quick-start/develop-plugins (ZH: 7, JA: 6) +差异文件: tool-cha-jian.md +- JA 目录缺失: features/datasets +- JA 文件数量不一致: learn-more/use-cases (ZH: 18, JA: 15) +差异文件: how-to-make-llm-app-provide-a-progressive-chat-experience.md, dify-on-dingtalk.md, dify-on-teams.md +- JA 文件数量不一致: guides/tools/tool-configuration (ZH: 13, JA: 14) +差异文件: perplexity-search.md, perplexity.md, Perplexity.md +- JA 文件数量不一致: guides/extension/api-based-extension (ZH: 4, JA: 5) +差异文件: dtatsru.md +- JA 文件数量不一致: guides/knowledge-base (ZH: 8, JA: 7) +差异文件: external-data-tool.md +- JA 文件数量不一致: guides/knowledge-base/create-knowledge-and-upload-documents (ZH: 3, JA: 4) +差异文件: selecting-retrieval-settings.md +- JA 目录缺失: guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data +- JA 文件数量不一致: guides/workflow/error-handling (ZH: 3, JA: 4) +差异文件: saretaerrojikku.md +- JA 文件数量不一致: guides/workflow/node (ZH: 20, JA: 19) +差异文件: agent.md +- JA 目录缺失: .gitbook/assets/dify-on-dingtalk +- JA 目录缺失: .gitbook/assets/dify-on-teams +- 文件缺失: workshop/basic/travel-assistant.md ([Errno 2] No such file or directory: '../en/workshop/basic/travel-assistant.md') +- 文件缺失: workshop/intermediate/customer-service-bot.md ([Errno 2] No such file or directory: '../jp/workshop/intermediate/customer-service-bot.md') +- 文件缺失: plugins/quick-start/develop-plugins/tool-cha-jian.md ([Errno 2] No such file or directory: '../en/plugins/quick-start/develop-plugins/tool-cha-jian.md') +- 文件缺失: plugins/quick-start/develop-plugins/model-plugin/integrate-the-predefined-model.md ([Errno 2] No such file or directory: '../en/plugins/quick-start/develop-plugins/model-plugin/integrate-the-predefined-model.md') +- 文件缺失: workspace/app.md ([Errno 2] No such file or directory: '../en/workspace/app.md') +- 文件缺失: features/datasets/sync-from-notion.md ([Errno 2] No such file or directory: '../en/features/datasets/sync-from-notion.md') +- 文件缺失: features/datasets/maintain-dataset-via-api.md ([Errno 2] No such file or directory: '../en/features/datasets/maintain-dataset-via-api.md') +- 文件缺失: features/ai-plugins/based-on-frontend-templates.md ([Errno 2] No such file or directory: '../en/features/ai-plugins/based-on-frontend-templates.md') +- 文件缺失: learn-more/faq/llms-use-faq.md ([Errno 2] No such file or directory: '../en/learn-more/faq/llms-use-faq.md') +- 文件缺失: learn-more/extended-reading/what-is-array-variable.md ([Errno 2] No such file or directory: '../en/learn-more/extended-reading/what-is-array-variable.md') +- 文件缺失: learn-more/extended-reading/prompt-engineering.md ([Errno 2] No such file or directory: '../en/learn-more/extended-reading/prompt-engineering.md') +- 文件缺失: learn-more/extended-reading/prompt-engineering/README.md ([Errno 2] No such file or directory: '../en/learn-more/extended-reading/prompt-engineering/README.md') +- 文件缺失: learn-more/extended-reading/prompt-engineering/prompt-engineering-1/prompt-engineering-template.md ([Errno 2] No such file or directory: '../en/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/prompt-engineering-template.md') +- 文件缺失: learn-more/extended-reading/prompt-engineering/prompt-engineering-1/README.md ([Errno 2] No such file or directory: '../en/learn-more/extended-reading/prompt-engineering/prompt-engineering-1/README.md') +- 文件缺失: learn-more/use-cases/dify-on-teams.md ([Errno 2] No such file or directory: '../en/learn-more/use-cases/dify-on-teams.md') +- 文件缺失: learn-more/use-cases/practical-implementation-of-building-llm-applications-using-a-full-set-of-open-source-tools.md ([Errno 2] No such file or directory: '../en/learn-more/use-cases/practical-implementation-of-building-llm-applications-using-a-full-set-of-open-source-tools.md') +- 文件缺失: learn-more/use-cases/dify-on-wechat.md ([Errno 2] No such file or directory: '../en/learn-more/use-cases/dify-on-wechat.md') +- 文件缺失: learn-more/use-cases/train-a-qa-chatbot-that-belongs-to-you.md ([Errno 2] No such file or directory: '../en/learn-more/use-cases/train-a-qa-chatbot-that-belongs-to-you.md') +- 文件缺失: learn-more/use-cases/how-to-make-llm-app-provide-a-progressive-chat-experience.md ([Errno 2] No such file or directory: '../en/learn-more/use-cases/how-to-make-llm-app-provide-a-progressive-chat-experience.md') +- 文件缺失: learn-more/use-cases/dify-on-dingtalk.md ([Errno 2] No such file or directory: '../en/learn-more/use-cases/dify-on-dingtalk.md') +- 文件缺失: learn-more/use-cases/dify-on-whatsapp.md ([Errno 2] No such file or directory: '../en/learn-more/use-cases/dify-on-whatsapp.md') +- 文件缺失: learn-more/use-cases/create-a-midjoureny-prompt-word-robot-with-zero-code.md ([Errno 2] No such file or directory: '../en/learn-more/use-cases/create-a-midjoureny-prompt-word-robot-with-zero-code.md') +- 文件缺失: getting-started/dify-premium.md ([Errno 2] No such file or directory: '../en/getting-started/dify-premium.md') +- 文件缺失: getting-started/install-self-hosted/faq.md ([Errno 2] No such file or directory: '../en/getting-started/install-self-hosted/faq.md') +- 文件缺失: getting-started/install-self-hosted/zeabur.md ([Errno 2] No such file or directory: '../en/getting-started/install-self-hosted/zeabur.md') +- 文件缺失: guides/knowledge-base/external-data-tool.md ([Errno 2] No such file or directory: '../en/guides/knowledge-base/external-data-tool.md') +- 文件缺失: guides/knowledge-base/connect-external-knowledge-base.md ([Errno 2] No such file or directory: '../en/guides/knowledge-base/connect-external-knowledge-base.md') +- 文件缺失: guides/knowledge-base/knowledge-and-documents-maintenance/README.md ([Errno 2] No such file or directory: '../en/guides/knowledge-base/knowledge-and-documents-maintenance/README.md') +- 文件缺失: guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text.md ([Errno 2] No such file or directory: '../en/guides/knowledge-base/create-knowledge-and-upload-documents/chunking-and-cleaning-text.md') +- 文件缺失: guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods.md ([Errno 2] No such file or directory: '../en/guides/knowledge-base/create-knowledge-and-upload-documents/setting-indexing-methods.md') +- 文件缺失: guides/knowledge-base/create-knowledge-and-upload-documents/README.md ([Errno 2] No such file or directory: '../en/guides/knowledge-base/create-knowledge-and-upload-documents/README.md') +- 文件缺失: guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website.md ([Errno 2] No such file or directory: '../en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-website.md') +- 文件缺失: guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/README.md ([Errno 2] No such file or directory: '../en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/README.md') +- 文件缺失: guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion.md ([Errno 2] No such file or directory: '../en/guides/knowledge-base/create-knowledge-and-upload-documents/import-content-data/sync-from-notion.md') +- 文件缺失: guides/workflow/extract-import-template.md ([Errno 2] No such file or directory: '../en/guides/workflow/extract-import-template.md') +- 文件缺失: guides/workflow/key-concept.md ([Errno 2] No such file or directory: '../en/guides/workflow/key-concept.md') +- 文件缺失: guides/workflow/error-handling/predefined-nodes-failure-logic.md ([Errno 2] No such file or directory: '../en/guides/workflow/error-handling/predefined-nodes-failure-logic.md') +- 文件缺失: guides/workflow/node/agent.md ([Errno 2] No such file or directory: '../jp/guides/workflow/node/agent.md') + + +## 标题格式问题 + +- EN 标题数量不一致: ./SUMMARY.md (ZH: 9, EN: 10) +- JA 标题级别不一致: ./README.md 第2个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: ./README.md 第3个标题 (ZH: ###, JA: ##) +- EN 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第2个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第3个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第4个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第5个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第6个标题 (ZH: ####, EN: ###) +- EN 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第7个标题 (ZH: ####, EN: ###) +- EN 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第8个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第9个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第10个标题 (ZH: ###, EN: ##) +- JA 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第2个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第3个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第4个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第5个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第6个标题 (ZH: ####, JA: ###) +- JA 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第7个标题 (ZH: ####, JA: ###) +- JA 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第8个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第9个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: workshop/basic/build-ai-image-generation-app.md 第10个标题 (ZH: ###, JA: ##) +- EN 标题数量不一致: workshop/intermediate/twitter-chatflow.md (ZH: 15, EN: 18) +- JA 标题数量不一致: workshop/intermediate/twitter-chatflow.md (ZH: 15, JA: 18) +- EN 标题数量不一致: workshop/intermediate/article-reader.md (ZH: 27, EN: 17) +- JA 标题级别不一致: workshop/intermediate/article-reader.md 第2个标题 (ZH: ##, JA: ###) +- JA 标题级别不一致: workshop/intermediate/article-reader.md 第3个标题 (ZH: ##, JA: ###) +- JA 标题粗体不一致: workshop/intermediate/article-reader.md 第3个标题 (ZH: 无, JA: 加粗) +- JA 标题级别不一致: workshop/intermediate/article-reader.md 第4个标题 (ZH: ##, JA: ###) +- JA 标题粗体不一致: workshop/intermediate/article-reader.md 第4个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: workshop/intermediate/article-reader.md 第5个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: workshop/intermediate/article-reader.md 第6个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: workshop/intermediate/article-reader.md 第7个标题 (ZH: 无, JA: 加粗) +- JA 标题级别不一致: workshop/intermediate/article-reader.md 第9个标题 (ZH: #, JA: ####) +- JA 标题粗体不一致: workshop/intermediate/article-reader.md 第26个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: workshop/intermediate/article-reader.md 第27个标题 (ZH: 无, JA: 加粗) +- JA 标题数量不一致: development/backend/sandbox/README.md (ZH: 5, JA: 3) +- EN 标题数量不一致: development/models-integration/litellm.md (ZH: 5, EN: 6) +- JA 标题数量不一致: development/models-integration/litellm.md (ZH: 5, JA: 6) +- EN 标题级别不一致: development/models-integration/ollama.md 第9个标题 (ZH: ###, EN: ##) +- JA 标题数量不一致: development/models-integration/ollama.md (ZH: 9, JA: 10) +- EN 标题数量不一致: development/models-integration/aws-bedrock-deepseek.md (ZH: 9, EN: 14) +- JA 标题数量不一致: development/models-integration/aws-bedrock-deepseek.md (ZH: 9, JA: 14) +- EN 标题数量不一致: development/models-integration/localai.md (ZH: 4, EN: 3) +- EN 标题级别不一致: plugins/introduction.md 第2个标题 (ZH: ###, EN: ##) +- EN 标题粗体不一致: plugins/introduction.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题级别不一致: plugins/introduction.md 第3个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: plugins/introduction.md 第4个标题 (ZH: ###, EN: ##) +- EN 标题粗体不一致: plugins/introduction.md 第4个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/introduction.md 第5个标题 (ZH: 无, EN: 加粗) +- EN 标题级别不一致: plugins/introduction.md 第6个标题 (ZH: ###, EN: ##) +- JA 标题级别不一致: plugins/introduction.md 第2个标题 (ZH: ###, JA: ##) +- JA 标题粗体不一致: plugins/introduction.md 第2个标题 (ZH: 无, JA: 加粗) +- JA 标题级别不一致: plugins/introduction.md 第3个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/introduction.md 第4个标题 (ZH: ###, JA: ##) +- JA 标题粗体不一致: plugins/introduction.md 第4个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/introduction.md 第5个标题 (ZH: 无, JA: 加粗) +- JA 标题级别不一致: plugins/introduction.md 第6个标题 (ZH: ###, JA: ##) +- EN 标题粗体不一致: plugins/manage-plugins.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/manage-plugins.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/manage-plugins.md 第4个标题 (ZH: 无, EN: 加粗) +- JA 标题粗体不一致: plugins/manage-plugins.md 第2个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/manage-plugins.md 第3个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/manage-plugins.md 第4个标题 (ZH: 无, JA: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第4个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第5个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第6个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第7个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第8个标题 (ZH: 无, EN: 加粗) +- JA 标题级别不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第2个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第3个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第4个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第5个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第6个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第7个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md 第8个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/README.md 第2个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/README.md 第3个标题 (ZH: ####, JA: ###) +- JA 标题粗体不一致: plugins/publish-plugins/README.md 第3个标题 (ZH: 加粗, JA: 无) +- JA 标题级别不一致: plugins/publish-plugins/README.md 第4个标题 (ZH: ####, JA: ###) +- JA 标题粗体不一致: plugins/publish-plugins/README.md 第4个标题 (ZH: 加粗, JA: 无) +- JA 标题级别不一致: plugins/publish-plugins/README.md 第5个标题 (ZH: ####, JA: ###) +- JA 标题级别不一致: plugins/publish-plugins/README.md 第6个标题 (ZH: ###, JA: ##) +- JA 标题粗体不一致: plugins/publish-plugins/README.md 第6个标题 (ZH: 加粗, JA: 无) +- EN 标题粗体不一致: plugins/publish-plugins/package-plugin-file-and-publish.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/package-plugin-file-and-publish.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/package-plugin-file-and-publish.md 第4个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/package-plugin-file-and-publish.md 第5个标题 (ZH: 无, EN: 加粗) +- JA 标题级别不一致: plugins/publish-plugins/package-plugin-file-and-publish.md 第2个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/package-plugin-file-and-publish.md 第3个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/package-plugin-file-and-publish.md 第4个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: plugins/publish-plugins/package-plugin-file-and-publish.md 第5个标题 (ZH: ###, JA: ##) +- EN 标题粗体不一致: plugins/publish-plugins/publish-to-dify-marketplace/README.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/publish-to-dify-marketplace/README.md 第5个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/publish-plugins/publish-to-dify-marketplace/README.md 第6个标题 (ZH: 无, EN: 加粗) +- JA 标题数量不一致: plugins/publish-plugins/publish-to-dify-marketplace/README.md (ZH: 6, JA: 8) +- EN 标题数量不一致: plugins/publish-plugins/publish-to-dify-marketplace/plugin-privacy-protection-guidelines.md (ZH: 5, EN: 4) +- JA 标题数量不一致: plugins/publish-plugins/publish-to-dify-marketplace/plugin-privacy-protection-guidelines.md (ZH: 5, JA: 4) +- EN 标题数量不一致: plugins/schema-definition/agent.md (ZH: 7, EN: 6) +- JA 标题数量不一致: plugins/schema-definition/agent.md (ZH: 7, JA: 6) +- EN 标题粗体不一致: plugins/schema-definition/endpoint.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/endpoint.md 第4个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/endpoint.md 第5个标题 (ZH: 无, EN: 加粗) +- JA 标题级别不一致: plugins/schema-definition/endpoint.md 第1个标题 (ZH: #, JA: ##) +- JA 标题粗体不一致: plugins/schema-definition/endpoint.md 第2个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/endpoint.md 第4个标题 (ZH: 无, JA: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/general-specifications.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/general-specifications.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/general-specifications.md 第4个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/general-specifications.md 第5个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/general-specifications.md 第9个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/general-specifications.md 第10个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/general-specifications.md 第11个标题 (ZH: 无, EN: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/general-specifications.md 第2个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/general-specifications.md 第3个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/general-specifications.md 第4个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/general-specifications.md 第5个标题 (ZH: 无, JA: 加粗) +- EN 标题数量不一致: plugins/schema-definition/tool.md (ZH: 10, EN: 11) +- JA 标题数量不一致: plugins/schema-definition/tool.md (ZH: 10, JA: 11) +- EN 标题粗体不一致: plugins/schema-definition/persistent-storage.md 第4个标题 (ZH: 加粗, EN: 无) +- JA 标题粗体不一致: plugins/schema-definition/persistent-storage.md 第4个标题 (ZH: 加粗, JA: 无) +- EN 标题粗体不一致: plugins/schema-definition/manifest.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/manifest.md 第3个标题 (ZH: 无, EN: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/manifest.md 第2个标题 (ZH: 无, JA: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题级别不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第3个标题 (ZH: ####, EN: ###) +- EN 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第4个标题 (ZH: 加粗, EN: 无) +- EN 标题级别不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第6个标题 (ZH: ###, EN: ####) +- EN 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第6个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第7个标题 (ZH: 加粗, EN: 无) +- EN 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第9个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第10个标题 (ZH: 加粗, EN: 无) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第2个标题 (ZH: 无, JA: 加粗) +- JA 标题级别不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第3个标题 (ZH: ####, JA: ###) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第4个标题 (ZH: 加粗, JA: 无) +- JA 标题级别不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第6个标题 (ZH: ###, JA: ####) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第6个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第7个标题 (ZH: 加粗, JA: 无) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第9个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md 第10个标题 (ZH: 加粗, JA: 无) +- EN 标题数量不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/model.md (ZH: 12, EN: 15) +- JA 标题数量不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/model.md (ZH: 12, JA: 15) +- EN 标题数量不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/tool.md (ZH: 4, EN: 3) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/tool.md 第2个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/tool.md 第3个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/tool.md 第4个标题 (ZH: 无, JA: 加粗) +- EN 标题数量不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/node.md (ZH: 8, EN: 4) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/node.md 第2个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/node.md 第6个标题 (ZH: 无, JA: 加粗) +- EN 标题数量不一致: plugins/schema-definition/model/model-schema.md (ZH: 30, EN: 20) +- JA 标题级别不一致: plugins/schema-definition/model/model-schema.md 第2个标题 (ZH: ###, JA: #) +- JA 标题数量不一致: plugins/schema-definition/model/README.md (ZH: 1, JA: 0) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第4个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第5个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第6个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第7个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第8个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第9个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第10个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第11个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第12个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第13个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第14个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第15个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/schema-definition/model/model-designing-rules.md 第16个标题 (ZH: 无, EN: 加粗) +- EN 标题数量不一致: plugins/quick-start/install-plugins.md (ZH: 10, EN: 12) +- JA 标题数量不一致: plugins/quick-start/install-plugins.md (ZH: 10, JA: 12) +- JA 标题数量不一致: plugins/quick-start/README.md (ZH: 5, JA: 1) +- JA 标题级别不一致: plugins/quick-start/debug-plugin.md 第1个标题 (ZH: #, JA: ##) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/extension-plugin.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/extension-plugin.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/extension-plugin.md 第5个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/extension-plugin.md 第6个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/extension-plugin.md 第8个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/extension-plugin.md 第9个标题 (ZH: 无, EN: 加粗) +- EN 标题级别不一致: plugins/quick-start/develop-plugins/extension-plugin.md 第14个标题 (ZH: ###, EN: ####) +- JA 标题数量不一致: plugins/quick-start/develop-plugins/extension-plugin.md (ZH: 14, JA: 13) +- EN 标题级别不一致: plugins/quick-start/develop-plugins/agent-strategy-plugin.md 第7个标题 (ZH: ####, EN: ###) +- EN 标题级别不一致: plugins/quick-start/develop-plugins/agent-strategy-plugin.md 第8个标题 (ZH: ####, EN: ###) +- EN 标题级别不一致: plugins/quick-start/develop-plugins/agent-strategy-plugin.md 第9个标题 (ZH: ####, EN: ###) +- JA 标题数量不一致: plugins/quick-start/develop-plugins/agent-strategy-plugin.md (ZH: 18, JA: 16) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/README.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/README.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/README.md 第4个标题 (ZH: 无, EN: 加粗) +- EN 标题数量不一致: plugins/quick-start/develop-plugins/tool-plugin.md (ZH: 18, EN: 15) +- JA 标题数量不一致: plugins/quick-start/develop-plugins/tool-plugin.md (ZH: 18, JA: 15) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/bundle.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/bundle.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/bundle.md 第4个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/bundle.md 第5个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/bundle.md 第6个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/initialize-development-tools.md 第4个标题 (ZH: 无, EN: 加粗) +- JA 标题数量不一致: plugins/quick-start/develop-plugins/initialize-development-tools.md (ZH: 4, JA: 5) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md 第3个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md 第4个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md 第5个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md 第6个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md 第7个标题 (ZH: 无, EN: 加粗) +- JA 标题级别不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md 第1个标题 (ZH: #, JA: ##) +- EN 标题级别不一致: plugins/quick-start/develop-plugins/model-plugin/customizable-model.md 第2个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: plugins/quick-start/develop-plugins/model-plugin/customizable-model.md 第7个标题 (ZH: ###, EN: ##) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/customizable-model.md 第7个标题 (ZH: 加粗, EN: 无) +- JA 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/customizable-model.md 第7个标题 (ZH: 加粗, JA: 无) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/README.md 第2个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/README.md 第3个标题 (ZH: 无, EN: 加粗) +- JA 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/README.md 第2个标题 (ZH: 无, JA: 加粗) +- JA 标题粗体不一致: plugins/quick-start/develop-plugins/model-plugin/README.md 第3个标题 (ZH: 无, JA: 加粗) +- EN 标题数量不一致: plugins/best-practice/develop-a-slack-bot-plugin.md (ZH: 14, EN: 15) +- JA 标题数量不一致: learn-more/how-to-use-json-schema-in-dify.md (ZH: 10, JA: 8) +- JA 标题数量不一致: learn-more/faq/README.md (ZH: 1, JA: 2) +- EN 标题数量不一致: learn-more/faq/install-faq.md (ZH: 26, EN: 25) +- EN 标题级别不一致: learn-more/faq/plugins.md 第2个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: learn-more/extended-reading/how-to-use-json-schema-in-dify.md 第4个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: learn-more/extended-reading/how-to-use-json-schema-in-dify.md 第5个标题 (ZH: ###, EN: ##) +- JA 标题数量不一致: learn-more/extended-reading/how-to-use-json-schema-in-dify.md (ZH: 10, JA: 9) +- EN 标题数量不一致: learn-more/extended-reading/retrieval-augment/README.md (ZH: 3, EN: 2) +- JA 标题级别不一致: learn-more/extended-reading/retrieval-augment/README.md 第3个标题 (ZH: ###, JA: ##) +- EN 标题粗体不一致: learn-more/extended-reading/retrieval-augment/hybrid-search.md 第3个标题 (ZH: 加粗, EN: 无) +- EN 标题粗体不一致: learn-more/extended-reading/retrieval-augment/hybrid-search.md 第4个标题 (ZH: 加粗, EN: 无) +- EN 标题粗体不一致: learn-more/extended-reading/retrieval-augment/hybrid-search.md 第5个标题 (ZH: 加粗, EN: 无) +- JA 标题数量不一致: learn-more/extended-reading/retrieval-augment/hybrid-search.md (ZH: 8, JA: 3) +- EN 标题级别不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md 第9个标题 (ZH: ####, EN: ###) +- EN 标题级别不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md 第12个标题 (ZH: ####, EN: ###) +- JA 标题数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md (ZH: 14, JA: 19) +- JA 标题粗体不一致: learn-more/use-cases/dify-schedule.md 第10个标题 (ZH: 无, JA: 加粗) +- EN 标题数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md (ZH: 13, EN: 16) +- JA 标题数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md (ZH: 13, JA: 16) +- EN 标题数量不一致: learn-more/use-cases/create-an-ai-chatbot-with-business-data-in-minutes.md (ZH: 3, EN: 6) +- EN 标题数量不一致: policies/agreement/README.md (ZH: 4, EN: 3) +- JA 标题数量不一致: policies/agreement/README.md (ZH: 4, JA: 3) +- EN 标题数量不一致: policies/agreement/get-compliance-report.md (ZH: 6, EN: 5) +- EN 标题级别不一致: getting-started/install-self-hosted/bt-panel.md 第2个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: getting-started/install-self-hosted/bt-panel.md 第3个标题 (ZH: ###, EN: ##) +- JA 标题级别不一致: getting-started/install-self-hosted/bt-panel.md 第2个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: getting-started/install-self-hosted/bt-panel.md 第3个标题 (ZH: ###, JA: ##) +- EN 标题数量不一致: getting-started/install-self-hosted/local-source-code.md (ZH: 9, EN: 10) +- EN 标题级别不一致: getting-started/install-self-hosted/docker-compose.md 第2个标题 (ZH: ###, EN: ##) +- JA 标题数量不一致: guides/tools/tool-configuration/comfyui.md (ZH: 7, JA: 6) +- EN 标题数量不一致: guides/tools/tool-configuration/stable-diffusion.md (ZH: 7, EN: 11) +- EN 标题级别不一致: guides/tools/tool-configuration/siliconflow.md 第2个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/tools/tool-configuration/siliconflow.md 第3个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/tools/tool-configuration/siliconflow.md 第4个标题 (ZH: ###, EN: ##) +- JA 标题级别不一致: guides/tools/tool-configuration/siliconflow.md 第2个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: guides/tools/tool-configuration/siliconflow.md 第3个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: guides/tools/tool-configuration/siliconflow.md 第4个标题 (ZH: ###, JA: ##) +- EN 标题数量不一致: guides/extension/api-based-extension/external-data-tool.md (ZH: 5, EN: 10) +- EN 标题数量不一致: guides/extension/api-based-extension/README.md (ZH: 14, EN: 22) +- EN 标题级别不一致: guides/management/personal-account-management.md 第8个标题 (ZH: ####, EN: ###) +- JA 标题级别不一致: guides/management/personal-account-management.md 第8个标题 (ZH: ####, JA: ###) +- JA 标题数量不一致: guides/management/version-control.md (ZH: 18, JA: 19) +- JA 标题数量不一致: guides/management/app-management.md (ZH: 6, JA: 7) +- JA 标题数量不一致: guides/model-configuration/schema.md (ZH: 16, JA: 15) +- EN 标题级别不一致: guides/model-configuration/README.md 第2个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/model-configuration/README.md 第3个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/model-configuration/README.md 第4个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/model-configuration/README.md 第5个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/model-configuration/README.md 第6个标题 (ZH: ###, EN: ##) +- EN 标题数量不一致: guides/model-configuration/interfaces.md (ZH: 30, EN: 29) +- JA 标题数量不一致: guides/model-configuration/interfaces.md (ZH: 30, JA: 57) +- EN 标题级别不一致: guides/application-orchestrate/agent.md 第2个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/application-orchestrate/agent.md 第3个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/application-orchestrate/agent.md 第4个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/application-orchestrate/agent.md 第5个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/application-orchestrate/agent.md 第6个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/application-orchestrate/agent.md 第8个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/application-orchestrate/agent.md 第9个标题 (ZH: ###, EN: ##) +- EN 标题数量不一致: guides/application-orchestrate/chatbot-application.md (ZH: 10, EN: 6) +- JA 标题级别不一致: guides/application-orchestrate/chatbot-application.md 第7个标题 (ZH: ####, JA: ###) +- EN 标题数量不一致: guides/application-orchestrate/README.md (ZH: 2, EN: 3) +- JA 标题数量不一致: guides/application-orchestrate/README.md (ZH: 2, JA: 3) +- JA 标题级别不一致: guides/application-orchestrate/multiple-llms-debugging.md 第1个标题 (ZH: #, JA: ##) +- EN 标题数量不一致: guides/application-orchestrate/app-toolkits/README.md (ZH: 8, EN: 6) +- EN 标题级别不一致: guides/application-orchestrate/app-toolkits/moderation-tool.md 第2个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/application-orchestrate/app-toolkits/moderation-tool.md 第3个标题 (ZH: ###, EN: ##) +- EN 标题级别不一致: guides/application-orchestrate/app-toolkits/moderation-tool.md 第4个标题 (ZH: ###, EN: ##) +- EN 标题数量不一致: guides/knowledge-base/integrate-knowledge-within-application.md (ZH: 9, EN: 10) +- JA 标题数量不一致: guides/knowledge-base/integrate-knowledge-within-application.md (ZH: 9, JA: 11) +- EN 标题粗体不一致: guides/knowledge-base/README.md 第2个标题 (ZH: 无, EN: 加粗) +- JA 标题数量不一致: guides/knowledge-base/external-knowledge-api-documentation.md (ZH: 9, JA: 10) +- JA 标题级别不一致: guides/knowledge-base/retrieval-test-and-citation.md 第4个标题 (ZH: ###, JA: ####) +- JA 标题级别不一致: guides/knowledge-base/retrieval-test-and-citation.md 第5个标题 (ZH: ####, JA: ###) +- EN 标题数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api.md (ZH: 26, EN: 27) +- JA 标题数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api.md (ZH: 26, JA: 25) +- EN 标题数量不一致: guides/workflow/bulletin.md (ZH: 8, EN: 12) +- JA 标题数量不一致: guides/workflow/bulletin.md (ZH: 8, JA: 12) +- EN 标题数量不一致: guides/workflow/file-upload.md (ZH: 13, EN: 6) +- JA 标题数量不一致: guides/workflow/file-upload.md (ZH: 13, JA: 7) +- EN 标题数量不一致: guides/workflow/orchestrate-node.md (ZH: 8, EN: 12) +- JA 标题数量不一致: guides/workflow/orchestrate-node.md (ZH: 8, JA: 12) +- EN 标题级别不一致: guides/workflow/additional-features.md 第2个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: guides/workflow/additional-features.md 第3个标题 (ZH: ###, EN: ####) +- EN 标题粗体不一致: guides/workflow/variables.md 第2个标题 (ZH: 加粗, EN: 无) +- JA 标题粗体不一致: guides/workflow/variables.md 第2个标题 (ZH: 加粗, JA: 无) +- JA 标题级别不一致: guides/workflow/error-handling/error-type.md 第2个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: guides/workflow/error-handling/error-type.md 第3个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: guides/workflow/error-handling/error-type.md 第4个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: guides/workflow/error-handling/error-type.md 第5个标题 (ZH: ###, JA: ##) +- JA 标题级别不一致: guides/workflow/error-handling/error-type.md 第6个标题 (ZH: ###, JA: ##) +- EN 标题数量不一致: guides/workflow/error-handling/README.md (ZH: 16, EN: 13) +- JA 标题数量不一致: guides/workflow/error-handling/README.md (ZH: 16, JA: 6) +- EN 标题数量不一致: guides/workflow/node/variable-assigner.md (ZH: 8, EN: 5) +- JA 标题数量不一致: guides/workflow/node/variable-assigner.md (ZH: 8, JA: 5) +- EN 标题数量不一致: guides/workflow/node/template.md (ZH: 8, EN: 5) +- EN 标题数量不一致: guides/workflow/node/knowledge-retrieval.md (ZH: 4, EN: 1) +- EN 标题数量不一致: guides/workflow/node/doc-extractor.md (ZH: 7, EN: 5) +- EN 标题数量不一致: guides/workflow/node/list-operator.md (ZH: 8, EN: 3) +- EN 标题数量不一致: guides/workflow/node/answer.md (ZH: 2, EN: 1) +- EN 标题数量不一致: guides/workflow/node/iteration.md (ZH: 10, EN: 11) +- JA 标题数量不一致: guides/workflow/node/iteration.md (ZH: 10, JA: 11) +- EN 标题数量不一致: guides/workflow/node/llm.md (ZH: 7, EN: 8) +- EN 标题级别不一致: guides/workflow/node/start.md 第2个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: guides/workflow/node/start.md 第3个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: guides/workflow/node/start.md 第4个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: guides/workflow/node/start.md 第5个标题 (ZH: ###, EN: ####) +- EN 标题数量不一致: guides/workflow/node/ifelse.md (ZH: 4, EN: 3) +- EN 标题粗体不一致: guides/workflow/node/question-classifier.md 第2个标题 (ZH: 加粗, EN: 无) +- EN 标题粗体不一致: guides/workflow/node/question-classifier.md 第3个标题 (ZH: 加粗, EN: 无) +- EN 标题粗体不一致: guides/workflow/node/question-classifier.md 第5个标题 (ZH: 加粗, EN: 无) +- JA 标题级别不一致: guides/workflow/node/tools.md 第2个标题 (ZH: ##, JA: ###) +- JA 标题级别不一致: guides/workflow/node/tools.md 第4个标题 (ZH: ##, JA: ###) +- EN 标题级别不一致: guides/application-publishing/developing-with-apis.md 第2个标题 (ZH: ####, EN: ###) +- EN 标题级别不一致: guides/application-publishing/developing-with-apis.md 第3个标题 (ZH: ####, EN: ###) +- EN 标题级别不一致: guides/application-publishing/developing-with-apis.md 第4个标题 (ZH: ####, EN: ###) +- EN 标题级别不一致: guides/application-publishing/developing-with-apis.md 第5个标题 (ZH: ####, EN: ###) +- JA 标题级别不一致: guides/application-publishing/developing-with-apis.md 第2个标题 (ZH: ####, JA: ###) +- JA 标题级别不一致: guides/application-publishing/developing-with-apis.md 第3个标题 (ZH: ####, JA: ###) +- JA 标题级别不一致: guides/application-publishing/developing-with-apis.md 第4个标题 (ZH: ####, JA: ###) +- JA 标题级别不一致: guides/application-publishing/developing-with-apis.md 第5个标题 (ZH: ####, JA: ###) +- EN 标题数量不一致: guides/monitoring/integrate-external-ops-tools/integrate-opik.md (ZH: 16, EN: 15) +- JA 标题数量不一致: guides/monitoring/integrate-external-ops-tools/integrate-opik.md (ZH: 16, JA: 14) +- EN 标题粗体不一致: guides/monitoring/integrate-external-ops-tools/integrate-langsmith.md 第10个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: guides/monitoring/integrate-external-ops-tools/integrate-langsmith.md 第11个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: guides/monitoring/integrate-external-ops-tools/integrate-langsmith.md 第12个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: guides/monitoring/integrate-external-ops-tools/integrate-langsmith.md 第13个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: guides/monitoring/integrate-external-ops-tools/integrate-langsmith.md 第14个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: guides/monitoring/integrate-external-ops-tools/integrate-langsmith.md 第15个标题 (ZH: 无, EN: 加粗) +- EN 标题粗体不一致: guides/monitoring/integrate-external-ops-tools/integrate-langsmith.md 第16个标题 (ZH: 无, EN: 加粗) +- JA 标题数量不一致: guides/monitoring/integrate-external-ops-tools/integrate-langsmith.md (ZH: 16, JA: 13) +- JA 标题数量不一致: guides/monitoring/integrate-external-ops-tools/README.md (ZH: 3, JA: 1) +- EN 标题级别不一致: community/contribution.md 第2个标题 (ZH: ##, EN: ###) +- EN 标题级别不一致: community/contribution.md 第3个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: community/contribution.md 第4个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: community/contribution.md 第5个标题 (ZH: ##, EN: ###) +- EN 标题级别不一致: community/contribution.md 第6个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: community/contribution.md 第7个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: community/contribution.md 第8个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: community/contribution.md 第9个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: community/contribution.md 第10个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: community/contribution.md 第11个标题 (ZH: ##, EN: ###) +- EN 标题级别不一致: community/contribution.md 第12个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: community/contribution.md 第13个标题 (ZH: ###, EN: ####) +- EN 标题级别不一致: community/contribution.md 第14个标题 (ZH: ##, EN: ###) +- EN 标题级别不一致: community/contribution.md 第15个标题 (ZH: ##, EN: ###) +- JA 标题级别不一致: community/docs-contribution.md 第5个标题 (ZH: ###, JA: ##) + + +## 段落数量问题 + +- 段落数量不一致: ./SUMMARY.md +ZH: 17, EN: 19, JA: 17 +- 段落数量不一致: ./README.md +ZH: 13, EN: 17, JA: 14 +- 段落数量不一致: workshop/basic/build-ai-image-generation-app.md +ZH: 80, EN: 79, JA: 75 +- 段落数量不一致: workshop/intermediate/twitter-chatflow.md +ZH: 57, EN: 72, JA: 96 +- 段落数量不一致: workshop/intermediate/article-reader.md +ZH: 67, EN: 52, JA: 67 +- 段落数量不一致: development/backend/sandbox/README.md +ZH: 5, EN: 5, JA: 4 +- 段落数量不一致: development/models-integration/openllm.md +ZH: 9, EN: 11, JA: 9 +- 段落数量不一致: development/models-integration/xinference.md +ZH: 19, EN: 21, JA: 19 +- 段落数量不一致: development/models-integration/litellm.md +ZH: 21, EN: 25, JA: 25 +- 段落数量不一致: development/models-integration/ollama.md +ZH: 55, EN: 47, JA: 53 +- 段落数量不一致: development/models-integration/aws-bedrock-deepseek.md +ZH: 30, EN: 33, JA: 33 +- 段落数量不一致: development/models-integration/localai.md +ZH: 39, EN: 38, JA: 40 +- 段落数量不一致: development/migration/migrate-to-v1.md +ZH: 33, EN: 33, JA: 34 +- 段落数量不一致: plugins/introduction.md +ZH: 42, EN: 40, JA: 39 +- 段落数量不一致: plugins/manage-plugins.md +ZH: 18, EN: 16, JA: 17 +- 段落数量不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md +ZH: 34, EN: 32, JA: 27 +- 段落数量不一致: plugins/publish-plugins/README.md +ZH: 30, EN: 30, JA: 27 +- 段落数量不一致: plugins/publish-plugins/package-plugin-file-and-publish.md +ZH: 18, EN: 20, JA: 19 +- 段落数量不一致: plugins/publish-plugins/publish-to-dify-marketplace/README.md +ZH: 37, EN: 37, JA: 43 +- 段落数量不一致: plugins/publish-plugins/publish-to-dify-marketplace/plugin-developer-guidelines.md +ZH: 12, EN: 15, JA: 14 +- 段落数量不一致: plugins/schema-definition/agent.md +ZH: 72, EN: 73, JA: 72 +- 段落数量不一致: plugins/schema-definition/endpoint.md +ZH: 22, EN: 19, JA: 19 +- 段落数量不一致: plugins/schema-definition/tool.md +ZH: 34, EN: 33, JA: 33 +- 段落数量不一致: plugins/schema-definition/persistent-storage.md +ZH: 19, EN: 20, JA: 19 +- 段落数量不一致: plugins/schema-definition/manifest.md +ZH: 10, EN: 8, JA: 8 +- 段落数量不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/app.md +ZH: 29, EN: 25, JA: 25 +- 段落数量不一致: plugins/schema-definition/reverse-invocation-of-the-dify-service/node.md +ZH: 20, EN: 19, JA: 19 +- 段落数量不一致: plugins/schema-definition/model/model-schema.md +ZH: 169, EN: 96, JA: 170 +- 段落数量不一致: plugins/schema-definition/model/README.md +ZH: 4, EN: 1, JA: 1 +- 段落数量不一致: plugins/schema-definition/model/model-designing-rules.md +ZH: 42, EN: 33, JA: 42 +- 段落数量不一致: plugins/quick-start/install-plugins.md +ZH: 41, EN: 44, JA: 45 +- 段落数量不一致: plugins/quick-start/README.md +ZH: 18, EN: 19, JA: 1 +- 段落数量不一致: plugins/quick-start/debug-plugin.md +ZH: 9, EN: 11, JA: 8 +- 段落数量不一致: plugins/quick-start/develop-plugins/extension-plugin.md +ZH: 65, EN: 63, JA: 64 +- 段落数量不一致: plugins/quick-start/develop-plugins/agent-strategy-plugin.md +ZH: 155, EN: 153, JA: 152 +- 段落数量不一致: plugins/quick-start/develop-plugins/tool-plugin.md +ZH: 85, EN: 82, JA: 82 +- 段落数量不一致: plugins/quick-start/develop-plugins/bundle.md +ZH: 35, EN: 33, JA: 35 +- 段落数量不一致: plugins/quick-start/develop-plugins/initialize-development-tools.md +ZH: 25, EN: 25, JA: 27 +- 段落数量不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md +ZH: 60, EN: 56, JA: 59 +- 段落数量不一致: plugins/quick-start/develop-plugins/model-plugin/customizable-model.md +ZH: 73, EN: 68, JA: 73 +- 段落数量不一致: plugins/best-practice/develop-a-slack-bot-plugin.md +ZH: 91, EN: 87, JA: 91 +- 段落数量不一致: learn-more/how-to-use-json-schema-in-dify.md +ZH: 44, EN: 45, JA: 34 +- 段落数量不一致: learn-more/faq/README.md +ZH: 3, EN: 3, JA: 4 +- 段落数量不一致: learn-more/faq/install-faq.md +ZH: 98, EN: 97, JA: 98 +- 段落数量不一致: learn-more/faq/plugins.md +ZH: 6, EN: 7, JA: 7 +- 段落数量不一致: learn-more/extended-reading/how-to-use-json-schema-in-dify.md +ZH: 44, EN: 34, JA: 32 +- 段落数量不一致: learn-more/extended-reading/README.md +ZH: 1, EN: 1, JA: 4 +- 段落数量不一致: learn-more/extended-reading/what-is-llmops.md +ZH: 9, EN: 10, JA: 9 +- 段落数量不一致: learn-more/extended-reading/retrieval-augment/README.md +ZH: 14, EN: 11, JA: 15 +- 段落数量不一致: learn-more/extended-reading/retrieval-augment/rerank.md +ZH: 27, EN: 25, JA: 25 +- 段落数量不一致: learn-more/extended-reading/retrieval-augment/hybrid-search.md +ZH: 40, EN: 40, JA: 21 +- 段落数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md +ZH: 62, EN: 64, JA: 63 +- 段落数量不一致: learn-more/use-cases/dify-schedule.md +ZH: 39, EN: 32, JA: 32 +- 段落数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md +ZH: 79, EN: 76, JA: 73 +- 段落数量不一致: learn-more/use-cases/integrate-deepseek-to-build-an-ai-app.md +ZH: 41, EN: 46, JA: 46 +- 段落数量不一致: learn-more/use-cases/build-an-notion-ai-assistant.md +ZH: 77, EN: 75, JA: 65 +- 段落数量不一致: learn-more/use-cases/how-to-connect-aws-bedrock.md +ZH: 45, EN: 45, JA: 47 +- 段落数量不一致: learn-more/use-cases/how-to-integrate-dify-chatbot-to-your-wix-website.md +ZH: 36, EN: 37, JA: 37 +- 段落数量不一致: learn-more/use-cases/create-an-ai-chatbot-with-business-data-in-minutes.md +ZH: 32, EN: 27, JA: 32 +- 段落数量不一致: policies/agreement/README.md +ZH: 10, EN: 9, JA: 9 +- 段落数量不一致: policies/agreement/get-compliance-report.md +ZH: 27, EN: 26, JA: 27 +- 段落数量不一致: getting-started/cloud.md +ZH: 8, EN: 14, JA: 8 +- 段落数量不一致: getting-started/install-self-hosted/environments.md +ZH: 228, EN: 267, JA: 263 +- 段落数量不一致: getting-started/install-self-hosted/bt-panel.md +ZH: 14, EN: 17, JA: 19 +- 段落数量不一致: getting-started/install-self-hosted/local-source-code.md +ZH: 59, EN: 68, JA: 58 +- 段落数量不一致: getting-started/install-self-hosted/README.md +ZH: 7, EN: 6, JA: 7 +- 段落数量不一致: getting-started/install-self-hosted/docker-compose.md +ZH: 41, EN: 42, JA: 41 +- 段落数量不一致: getting-started/install-self-hosted/start-the-frontend-docker-container.md +ZH: 8, EN: 10, JA: 8 +- 段落数量不一致: getting-started/readme/model-providers.md +ZH: 5, EN: 6, JA: 5 +- 段落数量不一致: guides/tools/README.md +ZH: 33, EN: 32, JA: 32 +- 段落数量不一致: guides/tools/tool-configuration/comfyui.md +ZH: 10, EN: 9, JA: 9 +- 段落数量不一致: guides/tools/tool-configuration/README.md +ZH: 6, EN: 6, JA: 7 +- 段落数量不一致: guides/tools/tool-configuration/dall-e.md +ZH: 16, EN: 14, JA: 15 +- 段落数量不一致: guides/tools/tool-configuration/searxng.md +ZH: 14, EN: 12, JA: 7 +- 段落数量不一致: guides/tools/tool-configuration/stable-diffusion.md +ZH: 28, EN: 21, JA: 25 +- 段落数量不一致: guides/tools/tool-configuration/siliconflow.md +ZH: 18, EN: 17, JA: 17 +- 段落数量不一致: guides/extension/README.md +ZH: 4, EN: 4, JA: 5 +- 段落数量不一致: guides/extension/api-based-extension/external-data-tool.md +ZH: 14, EN: 46, JA: 14 +- 段落数量不一致: guides/extension/api-based-extension/README.md +ZH: 73, EN: 79, JA: 73 +- 段落数量不一致: guides/extension/api-based-extension/cloudflare-workers.md +ZH: 30, EN: 29, JA: 30 +- 段落数量不一致: guides/extension/code-based-extension/external-data-tool.md +ZH: 43, EN: 46, JA: 46 +- 段落数量不一致: guides/extension/code-based-extension/moderation.md +ZH: 57, EN: 59, JA: 59 +- 段落数量不一致: guides/workspace/app.md +ZH: 11, EN: 10, JA: 11 +- 段落数量不一致: guides/workspace/app/README.md +ZH: 11, EN: 10, JA: 11 +- 段落数量不一致: guides/management/personal-account-management.md +ZH: 35, EN: 34, JA: 32 +- 段落数量不一致: guides/management/subscription-management.md +ZH: 36, EN: 25, JA: 25 +- 段落数量不一致: guides/management/version-control.md +ZH: 88, EN: 95, JA: 87 +- 段落数量不一致: guides/management/app-management.md +ZH: 21, EN: 21, JA: 23 +- 段落数量不一致: guides/model-configuration/schema.md +ZH: 52, EN: 51, JA: 53 +- 段落数量不一致: guides/model-configuration/README.md +ZH: 35, EN: 33, JA: 35 +- 段落数量不一致: guides/model-configuration/interfaces.md +ZH: 194, EN: 195, JA: 381 +- 段落数量不一致: guides/application-orchestrate/chatbot-application.md +ZH: 41, EN: 44, JA: 43 +- 段落数量不一致: guides/application-orchestrate/creating-an-application.md +ZH: 25, EN: 26, JA: 24 +- 段落数量不一致: guides/application-orchestrate/README.md +ZH: 10, EN: 11, JA: 11 +- 段落数量不一致: guides/application-orchestrate/app-toolkits/README.md +ZH: 25, EN: 18, JA: 26 +- 段落数量不一致: guides/application-orchestrate/app-toolkits/moderation-tool.md +ZH: 14, EN: 13, JA: 14 +- 段落数量不一致: guides/knowledge-base/integrate-knowledge-within-application.md +ZH: 81, EN: 77, JA: 82 +- 段落数量不一致: guides/knowledge-base/README.md +ZH: 21, EN: 23, JA: 18 +- 段落数量不一致: guides/knowledge-base/metadata.md +ZH: 126, EN: 131, JA: 126 +- 段落数量不一致: guides/knowledge-base/knowledge-request-rate-limit.md +ZH: 10, EN: 11, JA: 10 +- 段落数量不一致: guides/knowledge-base/external-knowledge-api-documentation.md +ZH: 35, EN: 36, JA: 36 +- 段落数量不一致: guides/knowledge-base/retrieval-test-and-citation.md +ZH: 34, EN: 34, JA: 30 +- 段落数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents.md +ZH: 102, EN: 107, JA: 100 +- 段落数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance/maintain-dataset-via-api.md +ZH: 125, EN: 132, JA: 117 +- 段落数量不一致: guides/workflow/bulletin.md +ZH: 49, EN: 54, JA: 54 +- 段落数量不一致: guides/workflow/file-upload.md +ZH: 65, EN: 60, JA: 61 +- 段落数量不一致: guides/workflow/orchestrate-node.md +ZH: 52, EN: 47, JA: 47 +- 段落数量不一致: guides/workflow/additional-features.md +ZH: 48, EN: 45, JA: 45 +- 段落数量不一致: guides/workflow/variables.md +ZH: 35, EN: 36, JA: 35 +- 段落数量不一致: guides/workflow/debug-and-preview/log.md +ZH: 5, EN: 4, JA: 5 +- 段落数量不一致: guides/workflow/debug-and-preview/yu-lan-yu-yun-hang.md +ZH: 7, EN: 6, JA: 7 +- 段落数量不一致: guides/workflow/error-handling/error-type.md +ZH: 48, EN: 50, JA: 37 +- 段落数量不一致: guides/workflow/error-handling/README.md +ZH: 67, EN: 63, JA: 52 +- 段落数量不一致: guides/workflow/node/variable-assigner.md +ZH: 54, EN: 54, JA: 55 +- 段落数量不一致: guides/workflow/node/template.md +ZH: 17, EN: 11, JA: 17 +- 段落数量不一致: guides/workflow/node/loop.md +ZH: 25, EN: 22, JA: 20 +- 段落数量不一致: guides/workflow/node/parameter-extractor.md +ZH: 30, EN: 27, JA: 30 +- 段落数量不一致: guides/workflow/node/variable-aggregator.md +ZH: 19, EN: 20, JA: 19 +- 段落数量不一致: guides/workflow/node/knowledge-retrieval.md +ZH: 22, EN: 16, JA: 22 +- 段落数量不一致: guides/workflow/node/list-operator.md +ZH: 36, EN: 32, JA: 38 +- 段落数量不一致: guides/workflow/node/http-request.md +ZH: 28, EN: 28, JA: 29 +- 段落数量不一致: guides/workflow/node/answer.md +ZH: 12, EN: 9, JA: 12 +- 段落数量不一致: guides/workflow/node/iteration.md +ZH: 72, EN: 74, JA: 72 +- 段落数量不一致: guides/workflow/node/llm.md +ZH: 73, EN: 76, JA: 78 +- 段落数量不一致: guides/workflow/node/code.md +ZH: 44, EN: 43, JA: 43 +- 段落数量不一致: guides/workflow/node/start.md +ZH: 29, EN: 21, JA: 29 +- 段落数量不一致: guides/workflow/node/ifelse.md +ZH: 17, EN: 15, JA: 17 +- 段落数量不一致: guides/workflow/node/question-classifier.md +ZH: 25, EN: 24, JA: 25 +- 段落数量不一致: guides/workflow/node/tools.md +ZH: 21, EN: 24, JA: 21 +- 段落数量不一致: guides/application-publishing/embedding-in-websites.md +ZH: 41, EN: 34, JA: 34 +- 段落数量不一致: guides/application-publishing/developing-with-apis.md +ZH: 33, EN: 32, JA: 33 +- 段落数量不一致: guides/application-publishing/README.md +ZH: 5, EN: 3, JA: 5 +- 段落数量不一致: guides/application-publishing/based-on-frontend-templates.md +ZH: 13, EN: 14, JA: 13 +- 段落数量不一致: guides/application-publishing/launch-your-webapp-quickly/conversation-application.md +ZH: 26, EN: 23, JA: 23 +- 段落数量不一致: guides/application-publishing/launch-your-webapp-quickly/README.md +ZH: 17, EN: 18, JA: 23 +- 段落数量不一致: guides/monitoring/integrate-external-ops-tools/integrate-opik.md +ZH: 59, EN: 59, JA: 58 +- 段落数量不一致: guides/monitoring/integrate-external-ops-tools/integrate-langsmith.md +ZH: 71, EN: 72, JA: 54 +- 段落数量不一致: guides/monitoring/integrate-external-ops-tools/README.md +ZH: 14, EN: 14, JA: 2 +- 段落数量不一致: community/docs-contribution.md +ZH: 30, EN: 31, JA: 30 + + +## 图片差异问题 + +- 图片数量不一致: workshop/basic/build-ai-image-generation-app.md Section 1 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: workshop/basic/build-ai-image-generation-app.md Section 3 (ZH: 0, EN: 2, JA: 2) +- 图片数量不一致: workshop/basic/build-ai-image-generation-app.md Section 4 (ZH: 0, EN: 2, JA: 3) +- 图片数量不一致: workshop/basic/build-ai-image-generation-app.md Section 5 (ZH: 0, EN: 6, JA: 6) +- 图片数量不一致: workshop/basic/build-ai-image-generation-app.md Section 6 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: workshop/basic/build-ai-image-generation-app.md Section 7 (ZH: 0, EN: 2, JA: 2) +- 图片数量不一致: workshop/basic/build-ai-image-generation-app.md Section 8 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: workshop/basic/build-ai-image-generation-app.md Section 9 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: workshop/basic/build-ai-image-generation-app.md Section 12 (ZH: 0, EN: 1, JA: 2) +- 图片数量不一致: development/models-integration/aws-bedrock-deepseek.md Section 5 (ZH: 3, EN: 0, JA: 0) +- 图片数量不一致: development/models-integration/aws-bedrock-deepseek.md Section 6 (ZH: 2, EN: 1, JA: 1) +- 图片数量不一致: development/models-integration/aws-bedrock-deepseek.md Section 8 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: development/models-integration/aws-bedrock-deepseek.md Section 10 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: development/models-integration/aws-bedrock-deepseek.md Section 11 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: development/models-integration/aws-bedrock-deepseek.md Section 12 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: development/migration/migrate-to-v1.md Section 6 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: plugins/introduction.md Section 3 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: plugins/manage-plugins.md Section 2 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: plugins/manage-plugins.md Section 3 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: plugins/manage-plugins.md Section 4 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md Section 7 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: plugins/publish-plugins/publish-plugin-on-personal-github-repo.md Section 8 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: plugins/publish-plugins/package-plugin-file-and-publish.md Section 3 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: plugins/publish-plugins/package-plugin-file-and-publish.md Section 4 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: plugins/publish-plugins/publish-to-dify-marketplace/README.md Section 1 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: plugins/publish-plugins/publish-to-dify-marketplace/README.md Section 2 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: plugins/schema-definition/endpoint.md Section 2 (ZH: 2, EN: 0, JA: 0) +- 图片数量不一致: plugins/quick-start/install-plugins.md Section 2 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: plugins/quick-start/install-plugins.md Section 3 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: plugins/quick-start/install-plugins.md Section 6 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: plugins/quick-start/install-plugins.md Section 7 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: plugins/quick-start/install-plugins.md Section 8 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: plugins/quick-start/install-plugins.md Section 9 (ZH: 2, EN: 0, JA: 0) +- 图片数量不一致: plugins/quick-start/install-plugins.md Section 10 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: plugins/quick-start/install-plugins.md Section 11 (ZH: 0, EN: 2, JA: 0) +- 图片数量不一致: plugins/quick-start/debug-plugin.md Section 1 (ZH: 0, EN: 3, JA: 0) +- 图片数量不一致: plugins/quick-start/develop-plugins/extension-plugin.md Section 4 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: plugins/quick-start/develop-plugins/extension-plugin.md Section 5 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: plugins/quick-start/develop-plugins/extension-plugin.md Section 6 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: plugins/quick-start/develop-plugins/extension-plugin.md Section 10 (ZH: 3, EN: 1, JA: 3) +- 图片数量不一致: plugins/quick-start/develop-plugins/agent-strategy-plugin.md Section 5 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: plugins/quick-start/develop-plugins/agent-strategy-plugin.md Section 6 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: plugins/quick-start/develop-plugins/agent-strategy-plugin.md Section 7 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: plugins/quick-start/develop-plugins/agent-strategy-plugin.md Section 10 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: plugins/quick-start/develop-plugins/tool-plugin.md Section 11 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: plugins/quick-start/develop-plugins/bundle.md Section 4 (ZH: 2, EN: 0, JA: 2) +- 图片数量不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md Section 4 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md Section 5 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: plugins/quick-start/develop-plugins/model-plugin/create-model-providers.md Section 6 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: plugins/best-practice/develop-a-slack-bot-plugin.md Section 9 (ZH: 3, EN: 0, JA: 5) +- 图片数量不一致: plugins/best-practice/develop-a-slack-bot-plugin.md Section 10 (ZH: 1, EN: 3, JA: 1) +- 图片数量不一致: plugins/best-practice/develop-a-slack-bot-plugin.md Section 11 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: learn-more/how-to-use-json-schema-in-dify.md Section 3 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: learn-more/how-to-use-json-schema-in-dify.md Section 4 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: learn-more/how-to-use-json-schema-in-dify.md Section 7 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: learn-more/how-to-use-json-schema-in-dify.md Section 8 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: learn-more/extended-reading/how-to-use-json-schema-in-dify.md Section 3 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: learn-more/extended-reading/how-to-use-json-schema-in-dify.md Section 4 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: learn-more/extended-reading/how-to-use-json-schema-in-dify.md Section 7 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: learn-more/extended-reading/how-to-use-json-schema-in-dify.md Section 8 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md Section 9 (ZH: 4, EN: 4, JA: 0) +- 图片数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md Section 10 (ZH: 5, EN: 5, JA: 0) +- 图片数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md Section 11 (ZH: 3, EN: 3, JA: 0) +- 图片数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md Section 12 (ZH: 2, EN: 2, JA: 0) +- 图片数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md Section 14 (ZH: 0, EN: 0, JA: 4) +- 图片数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md Section 15 (ZH: 0, EN: 0, JA: 5) +- 图片数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md Section 16 (ZH: 0, EN: 0, JA: 3) +- 图片数量不一致: learn-more/use-cases/building-an-ai-thesis-slack-bot.md Section 17 (ZH: 0, EN: 0, JA: 2) +- 图片数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md Section 5 (ZH: 2, EN: 0, JA: 0) +- 图片数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md Section 7 (ZH: 2, EN: 0, JA: 0) +- 图片数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md Section 8 (ZH: 0, EN: 2, JA: 2) +- 图片数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md Section 9 (ZH: 3, EN: 0, JA: 0) +- 图片数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md Section 10 (ZH: 3, EN: 1, JA: 1) +- 图片数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md Section 12 (ZH: 0, EN: 3, JA: 3) +- 图片数量不一致: learn-more/use-cases/private-ai-ollama-deepseek-dify.md Section 13 (ZH: 0, EN: 3, JA: 3) +- 图片数量不一致: learn-more/use-cases/build-an-notion-ai-assistant.md Section 5 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: learn-more/use-cases/build-an-notion-ai-assistant.md Section 7 (ZH: 4, EN: 1, JA: 4) +- 图片数量不一致: learn-more/use-cases/build-an-notion-ai-assistant.md Section 9 (ZH: 2, EN: 3, JA: 2) +- 图片数量不一致: learn-more/use-cases/create-an-ai-chatbot-with-business-data-in-minutes.md Section 3 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: policies/agreement/get-compliance-report.md Section 3 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: policies/agreement/get-compliance-report.md Section 4 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: policies/agreement/get-compliance-report.md Section 5 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: policies/agreement/get-compliance-report.md Section 6 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: guides/tools/tool-configuration/dall-e.md Section 4 (ZH: 2, EN: 0, JA: 2) +- 图片数量不一致: guides/extension/api-based-extension/external-data-tool.md Section 5 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: guides/extension/code-based-extension/external-data-tool.md Section 5 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: guides/extension/code-based-extension/moderation.md Section 5 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: guides/management/personal-account-management.md Section 2 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: guides/management/app-management.md Section 4 (ZH: 2, EN: 2, JA: 0) +- 图片数量不一致: guides/management/app-management.md Section 5 (ZH: 1, EN: 1, JA: 2) +- 图片数量不一致: guides/management/app-management.md Section 6 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: guides/model-configuration/customizable-model.md Section 2 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: guides/application-orchestrate/chatbot-application.md Section 4 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: guides/application-orchestrate/chatbot-application.md Section 5 (ZH: 2, EN: 5, JA: 1) +- 图片数量不一致: guides/application-orchestrate/chatbot-application.md Section 6 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: guides/application-orchestrate/chatbot-application.md Section 7 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: guides/application-orchestrate/chatbot-application.md Section 8 (ZH: 1, EN: 0, JA: 2) +- 图片数量不一致: guides/application-orchestrate/creating-an-application.md Section 3 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: guides/application-orchestrate/multiple-llms-debugging.md Section 1 (ZH: 3, EN: 3, JA: 0) +- 图片数量不一致: guides/application-orchestrate/multiple-llms-debugging.md Section 2 (ZH: 0, EN: 0, JA: 3) +- 图片数量不一致: guides/knowledge-base/integrate-knowledge-within-application.md Section 6 (ZH: 8, EN: 0, JA: 0) +- 图片数量不一致: guides/knowledge-base/integrate-knowledge-within-application.md Section 7 (ZH: 1, EN: 8, JA: 0) +- 图片数量不一致: guides/knowledge-base/integrate-knowledge-within-application.md Section 8 (ZH: 1, EN: 1, JA: 8) +- 图片数量不一致: guides/knowledge-base/integrate-knowledge-within-application.md Section 9 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: guides/knowledge-base/README.md Section 1 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: guides/knowledge-base/retrieval-test-and-citation.md Section 2 (ZH: 3, EN: 0, JA: 0) +- 图片数量不一致: guides/knowledge-base/retrieval-test-and-citation.md Section 5 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents.md Section 4 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents.md Section 6 (ZH: 5, EN: 0, JA: 5) +- 图片数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents.md Section 8 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents.md Section 9 (ZH: 4, EN: 0, JA: 4) +- 图片数量不一致: guides/knowledge-base/knowledge-and-documents-maintenance/maintain-knowledge-documents.md Section 10 (ZH: 1, EN: 2, JA: 1) +- 图片数量不一致: guides/workflow/file-upload.md Section 5 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: guides/workflow/file-upload.md Section 6 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: guides/workflow/orchestrate-node.md Section 1 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: guides/workflow/orchestrate-node.md Section 3 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: guides/workflow/orchestrate-node.md Section 4 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: guides/workflow/orchestrate-node.md Section 6 (ZH: 0, EN: 5, JA: 5) +- 图片数量不一致: guides/workflow/orchestrate-node.md Section 8 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: guides/workflow/orchestrate-node.md Section 9 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: guides/workflow/orchestrate-node.md Section 10 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: guides/workflow/orchestrate-node.md Section 11 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: guides/workflow/orchestrate-node.md Section 12 (ZH: 0, EN: 1, JA: 1) +- 图片数量不一致: guides/workflow/error-handling/error-type.md Section 3 (ZH: 4, EN: 0, JA: 0) +- 图片数量不一致: guides/workflow/error-handling/error-type.md Section 4 (ZH: 3, EN: 0, JA: 0) +- 图片数量不一致: guides/workflow/error-handling/error-type.md Section 6 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: guides/workflow/error-handling/README.md Section 3 (ZH: 2, EN: 0, JA: 2) +- 图片数量不一致: guides/workflow/error-handling/README.md Section 4 (ZH: 0, EN: 0, JA: 2) +- 图片数量不一致: guides/workflow/error-handling/README.md Section 5 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: guides/workflow/error-handling/README.md Section 6 (ZH: 0, EN: 2, JA: 0) +- 图片数量不一致: guides/workflow/error-handling/README.md Section 9 (ZH: 1, EN: 0, JA: 0) +- 图片数量不一致: guides/workflow/node/variable-assigner.md Section 3 (ZH: 0, EN: 1, JA: 0) +- 图片数量不一致: guides/workflow/node/llm.md Section 4 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: guides/workflow/node/llm.md Section 5 (ZH: 1, EN: 0, JA: 1) +- 图片数量不一致: guides/workflow/node/llm.md Section 7 (ZH: 1, EN: 1, JA: 0) +- 图片数量不一致: guides/workflow/node/start.md Section 5 (ZH: 0, EN: 0, JA: 1) +- 图片数量不一致: guides/workflow/node/tools.md Section 3 (ZH: 2, EN: 2, JA: 0) +- 图片数量不一致: guides/workflow/node/tools.md Section 4 (ZH: 0, EN: 0, JA: 2) +- 图片数量不一致: guides/application-publishing/launch-your-webapp-quickly/README.md Section 3 (ZH: 1, EN: 1, JA: 0) + diff --git a/middleware/md_comparator.py b/middleware/md_comparator.py new file mode 100644 index 000000000..2448118cd --- /dev/null +++ b/middleware/md_comparator.py @@ -0,0 +1,314 @@ +#此代码可以直接对比三份不同语言版本,找出下面几点: +# 1. 标题格式不正确:比如,中文版里小标题都是###,英文版却是####;再比如中文版里标题是普通格式,但英文版里标题加粗或是倾斜。 +# 2. 文字格式不正确:比如,中文版有三段内容,英文版却有两段。 +# 3. 图片缺失:比如,英文版内的小标题里有一张照片,日语版里没有或者有两张。 +# 4. 文件不正确:比如中文版内的一个文件夹里有三份文件,但日语版内只有两份或者是有四份。 + +# 使用方式: +# 在命令行依次输入下面的命令 +# cd middleware +# python md_comparator.py (或者 python3 md_comparator.py) + +# -*- coding: utf-8 -*- +import os +import re +from pathlib import Path +from collections import defaultdict + +class MDComparator: + def __init__(self, zh_path, en_path, ja_path): + self.paths = {'zh': zh_path, 'en': en_path, 'ja': ja_path} + self.report = defaultdict(list) + self.report_file = Path("comparison_report.md") # 固定报告文件名 + self.summary_files = { + 'zh': 'SUMMARY.md', + 'en': 'SUMMARY.md', + 'ja': 'SUMMARY.md' + } + + def compare_all(self): + self._compare_directory_structure() + self._compare_summary_files() # 新增的SUMMARY对比 + for file_path in self._get_all_md_files(): + self._compare_file(file_path) + self.generate_report() + + # 新增的SUMMARY对比方法 + def _compare_summary_files(self): + """对比各语言版本的SUMMARY.md目录结构""" + summary_contents = {} + + # 读取各语言SUMMARY文件内容 + for lang in ['zh', 'en', 'ja']: + summary_path = os.path.join(self.paths[lang], self.summary_files[lang]) + try: + with open(summary_path, 'r', encoding='utf-8') as f: + content = f.read() + summary_contents[lang] = self._parse_summary(content) + except FileNotFoundError: + self.report['directory_structure'].append( + f"{lang.upper()} SUMMARY文件缺失: {self.summary_files[lang]}" + ) + summary_contents[lang] = set() + + # 先检查英文版 + self._compare_single_lang_summary('en', summary_contents) + # 添加分隔标记 + self.report['summary_structure'].append("--- ENGLISH CHECK COMPLETED / 日文检查开始 ---") + # 再检查日语版 + self._compare_single_lang_summary('ja', summary_contents) + + def _compare_single_lang_summary(self, lang, summary_contents): + """对比单个语言的SUMMARY差异""" + all_paths = summary_contents['zh'].union(summary_contents['en'], summary_contents['ja']) + + # 检查缺失路径 + for path in summary_contents['zh'] - summary_contents[lang]: + self.report['summary_structure'].append( + f"{lang.upper()} SUMMARY缺失路径: {path} (存在于中文版)" + ) + + # 检查多余路径 + for path in summary_contents[lang] - summary_contents['zh']: + self.report['summary_structure'].append( + f"{lang.upper()} SUMMARY多余路径: {path} (不存在于中文版)" + ) + def _parse_summary(self, content): + """解析SUMMARY.md文件,提取所有md路径""" + paths = set() + # 匹配所有[...](...)格式的链接 + pattern = re.compile(r'\[.*?\]\((.*?\.md)\)') + + # 递归处理嵌套列表 + stack = [] + for line in content.split('\n'): + # 计算缩进级别 + indent = len(re.match(r'^(\s*)\*', line).group(1)) if re.match(r'^\s*\*', line) else 0 + + # 维护缩进栈 + while stack and stack[-1][0] >= indent: + stack.pop() + + # 解析当前行路径 + match = pattern.search(line) + if match: + path = match.group(1) + # 拼接父级路径 + full_path = os.path.join(*[p[1] for p in stack], path) + paths.add(full_path.replace('\\', '/')) # 统一使用斜杠 + + # 如果是目录节点,加入栈 + if line.strip().endswith('.md') and not line.strip().startswith('*'): + stack.append((indent, os.path.dirname(path))) + + return paths + + def _get_all_md_files(self): + """获取中文版目录下所有md文件的相对路径""" + md_files = [] + for root, _, files in os.walk(self.paths['zh']): + for file in files: + if file.endswith('.md'): + rel_path = os.path.relpath(root, self.paths['zh']) + md_files.append(os.path.join(rel_path, file)) + return md_files + + def _compare_directory_structure(self): + """对比目录结构差异""" + for lang in ['en', 'ja']: + for root, _, files in os.walk(self.paths['zh']): + rel_path = os.path.relpath(root, self.paths['zh']) + target_dir = os.path.join(self.paths[lang], rel_path) + print(rel_path) + + # 检查目标目录是否存在 + if not os.path.exists(target_dir): + self.report['directory_structure'].append( + f"{lang.upper()} 目录缺失: {rel_path}" + ) + continue + + # 比较文件数量 + zh_files = set(f for f in files if f.endswith('.md')) + target_files = set(f for f in os.listdir(target_dir) if f.endswith('.md')) + + if len(zh_files) != len(target_files): + diff = zh_files.symmetric_difference(target_files) + self.report['directory_structure'].append( + f"{lang.upper()} 文件数量不一致: {rel_path} " + f"(ZH: {len(zh_files)}, {lang.upper()}: {len(target_files)})\n" + f"差异文件: {', '.join(diff)}" + ) + + def _compare_file(self, rel_path): + """对比单个文件内容""" + contents = {} + try: + for lang in ['zh', 'en', 'ja']: + full_path = os.path.join(self.paths[lang], rel_path) + with open(full_path, 'r', encoding='utf-8') as f: + contents[lang] = f.read() + except FileNotFoundError as e: + self.report['directory_structure'].append(f"文件缺失: {rel_path} ({e})") + return + + self._compare_headings(contents, rel_path) + self._compare_paragraphs(contents, rel_path) + self._compare_images(contents, rel_path) + + # ------------------- 标题对比逻辑 ------------------- + def _compare_headings(self, contents, rel_path): + """对比各语言标题结构""" + headings = {} + for lang, content in contents.items(): + lang_headings = [] + # 添加flags参数修复正则匹配问题 + for match in re.finditer(r'^(#{1,6})\s*(\*?)(.*?)(\*?)\s*$', content, flags=re.M): + level = len(match.group(1)) + is_bold = '**' in match.group(0) + is_italic = '*' in match.group(0) and not is_bold + lang_headings.append({ + 'level': level, + 'bold': is_bold, + 'italic': is_italic, + 'text': match.group(3).strip() + }) + headings[lang] = lang_headings + + # 以中文版为基准进行对比 + zh_headings = headings['zh'] + for lang in ['en', 'ja']: + if lang not in headings: + continue + + other_headings = headings[lang] + + # 检查标题数量 + if len(zh_headings) != len(other_headings): + self.report['headings'].append( + f"{lang.upper()} 标题数量不一致: {rel_path} " + f"(ZH: {len(zh_headings)}, {lang.upper()}: {len(other_headings)})" + ) + continue + + # 逐个对比标题属性 + for i, (zh_h, other_h) in enumerate(zip(zh_headings, other_headings)): + # 比较标题级别 + if zh_h['level'] != other_h['level']: + self.report['headings'].append( + f"{lang.upper()} 标题级别不一致: {rel_path} 第{i+1}个标题 " + f"(ZH: {'#'*zh_h['level']}, {lang.upper()}: {'#'*other_h['level']})" + ) + + # 比较粗体样式 + if zh_h['bold'] != other_h['bold']: + self.report['headings'].append( + f"{lang.upper()} 标题粗体不一致: {rel_path} 第{i+1}个标题 " + f"(ZH: {'加粗' if zh_h['bold'] else '无'}, " + f"{lang.upper()}: {'加粗' if other_h['bold'] else '无'})" + ) + + # 比较斜体样式 + if zh_h['italic'] != other_h['italic']: + self.report['headings'].append( + f"{lang.upper()} 标题斜体不一致: {rel_path} 第{i+1}个标题 " + f"(ZH: {'斜体' if zh_h['italic'] else '无'}, " + f"{lang.upper()}: {'斜体' if other_h['italic'] else '无'})" + ) + + # ------------------- 段落对比逻辑 ------------------- + def _compare_paragraphs(self, contents, rel_path): + """对比段落数量差异""" + para_counts = {} + for lang, content in contents.items(): + # 用两个以上换行分割段落,并过滤空段落 + paragraphs = [p.strip() for p in re.split(r'\n{2,}', content) if p.strip()] + para_counts[lang] = len(paragraphs) + + if len(set(para_counts.values())) > 1: + self.report['paragraphs'].append( + f"段落数量不一致: {rel_path}\n" + f"ZH: {para_counts['zh']}, EN: {para_counts['en']}, JA: {para_counts['ja']}" + ) + + # ------------------- 报告生成逻辑 ------------------- + def _compare_images(self, contents, rel_path): + img_counts = {} + for lang, content in contents.items(): + sections = re.split(r'^#{2,6}\s+.*', content, flags=re.M) + img_counts[lang] = [len(re.findall(r'!\[.*?\]\(.*?\)', sec)) for sec in sections] + + # 比较每个section的图片数量 + max_sections = max(len(img_counts[lang]) for lang in img_counts) + for i in range(max_sections): + counts = [img_counts[lang][i] if i < len(img_counts[lang]) else 0 + for lang in ['zh', 'en', 'ja']] + if len(set(counts)) > 1: + self.report['images'].append( + f"图片数量不一致: {rel_path} Section {i+1} " + f"(ZH: {counts[0]}, EN: {counts[1]}, JA: {counts[2]})" + ) + + # ------------------- 报告生成逻辑 ------------------- + def generate_report(self): + """生成Markdown格式报告""" + report_content = ["# 文档对比报告\n"] + + # 添加SUMMARY结构问题(带分隔线) + if self.report.get('summary_structure'): + report_content.append("## SUMMARY文件结构问题\n") + + # 插入英文检查结果 + en_items = [item for item in self.report['summary_structure'] + if item.startswith('EN ') or 'ENGLISH CHECK' in item] + report_content.extend(f"- {item}" for item in en_items) + + # 插入日文检查结果 + ja_items = [item for item in self.report['summary_structure'] + if item.startswith('JA ')] + if ja_items: + report_content.append("\n--- 日文版检查结果 ---") # 添加分隔线 + report_content.extend(f"- {item}" for item in ja_items) + + report_content.append("\n") + + # 目录结构问题 + if self.report['directory_structure']: + report_content.append("## 目录结构问题\n") + report_content.extend(f"- {item}" for item in self.report['directory_structure']) + report_content.append("\n") + + # 标题格式问题 + if self.report['headings']: + report_content.append("## 标题格式问题\n") + report_content.extend(f"- {item}" for item in self.report['headings']) + report_content.append("\n") + + # 段落数量问题 + if self.report['paragraphs']: + report_content.append("## 段落数量问题\n") + report_content.extend(f"- {item}" for item in self.report['paragraphs']) + report_content.append("\n") + + # 图片差异问题 + if self.report['images']: + report_content.append("## 图片差异问题\n") + report_content.extend(f"- {item}" for item in self.report['images']) + report_content.append("\n") + + # 写入文件(自动覆盖旧报告) + with open(self.report_file, 'w', encoding='utf-8') as f: + f.write('\n'.join(report_content)) + print(f"报告已生成:{self.report_file.absolute()}") + + # [原有代码:_compare_headings() 和 _compare_images() 需保留] + # ...(保持原有标题和图片对比逻辑不变)... + +if __name__ == "__main__": + # 使用示例(路径需替换为实际路径) + comparator = MDComparator( + zh_path="../zh_CN", + en_path="../en", + ja_path="../jp" + ) + comparator.compare_all() \ No newline at end of file