# CII Best Practices Assessment

> 基于 [OpenSSF Best Practices Badge (通过级)](https://bestpractices.dev/en/criteria/0) 标准。每次迭代后审视并更新。

**最后更新**: 2026-06-01 &nbsp;|&nbsp; **项目版本**: v0.8.0 &nbsp;|&nbsp; **状态**: 未通过 (26/35, 74%)

---

## 通过级 (Passing) — 35 项

### 基础 (Basics)

| # | 标准 | 状态 | 证据 / 差距 |
| --- | --- | :-: | --- |
| 1 | 项目网站有唯一 URL | ✅ | [GitHub](https://github.com/lexmin0412/dify-app-hub) + [文档站](https://lexmin0412.github.io/dify-app-hub-docs/) |
| 2 | 网站说明如何获取/反馈/贡献 | ✅ | [CONTRIBUTING.md](./CONTRIBUTING.md) |
| 3 | 产出 FLOSS 软件 | ✅ | [MIT License](./LICENSE)，OSI 认可 |
| 4 | 提供基本文档 | ✅ | Rspress 文档站点：入门/部署/功能/API 参考 |
| 5 | 网站使用 HTTPS | ✅ | GitHub Pages 强制 HTTPS |
| 6 | 有 Bug 报告机制 | ✅ | [Issue 模板](./.github/ISSUE_TEMPLATE/bug_report.yml) |
| 7 | 支持安全交付 | ⚠️ | HTTPS ✅，无签名发布 |
| 8 | 无泄露私密信息 | ✅ | `.gitignore` 明确忽略 `.env*`，`git ls-files` 确认无追踪 |
| 9 | 支持多语言 | ✅ | i18next + react-i18next 实现中英文切换，v0.7.0 已引入 |

### 变更控制 (Change Control)

| # | 标准 | 状态 | 证据 / 差距 |
| --- | --- | :-: | --- |
| 10 | 公开版本控制仓库 | ✅ | [GitHub Public Repo](https://github.com/lexmin0412/dify-app-hub) |
| 11 | 有公开问题追踪器 | ✅ | [GitHub Issues](https://github.com/lexmin0412/dify-app-hub/issues) + 结构化模板 |
| 12 | 承认外部贡献 | ✅ | [.all-contributorsrc](./.all-contributorsrc) (9 人) + README 贡献者表 |
| 13 | 明确标注小任务 | ✅ | Issues 已打 `good first issue` / `help wanted` 标签（如 #189） |
| 14 | 每个源文件有许可声明 | ❌ | 多数源文件无文件头 License 注释 |

### 报告 (Reporting)

| # | 标准 | 状态 | 证据 / 差距 |
| --- | --- | :-: | --- |
| 15 | Bug 报告流程已文档化 | ✅ | [结构化 Issue 模板](./.github/ISSUE_TEMPLATE/bug_report.yml) 含 Dify 版本、DSL、系统信息、运行环境等必填字段 |
| 16 | 漏洞报告流程已文档化 | ✅ | [SECURITY.md](./SECURITY.md) |
| 17 | 漏洞报告非公开处理 | ✅ | GitHub Security Advisory 支持私有报告 |

### 质量 (Quality)

| # | 标准 | 状态 | 证据 / 差距 |
| --- | --- | :-: | --- |
| 18 | 构建系统可工作 | ✅ | `pnpm build` 可执行，[Docker CI](./.github/workflows/docker-build-push.yaml) |
| 19 | 自动化测试套件 | ✅ | vitest + 12 个单元测试覆盖 api-utils 和 audio2text 核心逻辑 |
| 20 | 测试覆盖大部分代码 | ❌ | 12 个测试仅覆盖 2 个模块，距"大部分"仍有距离 |
| 21 | 新功能有测试要求 | ❌ | 无测试策略文档 |
| 22 | 持续集成运行测试 | ✅ | [CI 工作流](./.github/workflows/ci.yml) 在 PR 和 main 推送时运行测试 |
| 23 | 修复静态分析告警 | ⚠️ | oxlint 配置了但仅扫描部分文件，28 处 `@ts-expect-error` |
| 24 | 大部分警告已修复 | ⚠️ | `@ts-expect-error` 较多，未设告警上限 |

### 安全 (Security)

| #   | 标准                 | 状态 | 证据 / 差距                                                 |
| --- | -------------------- | :--: | ----------------------------------------------------------- |
| 25  | 基本安全设计原则     |  ⚠️  | API key 通过 `createSafeApp()` 屏蔽；但 45 个已知漏洞未处理 |
| 26  | 输入验证             |  ⚠️  | 路由处理程序验证 appId，但无集中式输入验证层                |
| 27  | 无硬编码凭据         |  ✅  | `.gitignore` 忽略所有 `.env*`，仅 `.env.template` 在仓库中  |
| 28  | 使用标准密码学       |  ✅  | bcryptjs 用于密码哈希；next-auth 内置安全机制               |
| 29  | 安全默认配置         |  ✅  | next-auth 安全默认；CORS 合理                               |
| 30  | 安全交付机制         |  ⚠️  | HTTPS ✅，无签名发布                                        |
| 31  | 已修复漏洞公开披露   |  ❌  | 无安全公告 / Release Notes 无漏洞修复记录                   |
| 32  | 不向用户暴露私密信息 |  ⚠️  | `createSafeApp()` 屏蔽 API key ✅；`.env` 存在风险          |

### 分析 (Analysis)

| #   | 标准         | 状态 | 证据 / 差距                                       |
| --- | ------------ | :--: | ------------------------------------------------- |
| 33  | 静态代码分析 |  ✅  | oxlint + [CodeQL](./.github/workflows/codeql.yml) |
| 34  | 动态分析     |  ❌  | 无 Fuzzing，无运行时安全测试                      |
| 35  | 外部安全审查 |  ❌  | 无安全审查记录                                    |

---

## 汇总

|             | 数量 | 占比 |
| ----------- | ---- | ---- |
| ✅ 通过     | 26   | 74%  |
| ⚠️ 部分通过 | 3    | 9%   |
| ❌ 未通过   | 6    | 17%  |

---

## 计划：达到「通过级」的最小路径

| 优先级 | 动作                            | 解锁项   |               预计投入               |
| :----: | ------------------------------- | -------- | :----------------------------------: |
|   P1   | 引入 vitest + 至少 1 个测试     | #19      |         ✅ 已完成 (12 测试)          |
|   P1   | CI 流程增加测试步骤             | #22      | ✅ 已完成 (.github/workflows/ci.yml) |
|   P1   | 处理已知漏洞 (`pnpm audit fix`) | #25      |                1 小时                |
|   P2   | 源文件添加 License 头           | #14      |                1 小时                |
|   P2   | 建立代码审查流程 + 分支保护     | #23, #24 |                配置项                |
|   P2   | 签名 Release                    | #7, #30  |                配置项                |

---

## 变更记录

| 日期 | 版本 | 通过项 | 变更说明 |
| --- | --- | --- | --- |
| 2026-06-01 | v0.8.0 | 26/35 | #15 → ✅：结构化 Bug 报告模板即流程文档 |
| 2026-05-31 | v0.8.0 | 23/35 | 项目更名为 dify-app-hub；#9 i18n 修正为 ✅；Docker 迁移脚本加固；CI 安全收紧 |
| 2026-05-22 | v0.7.1 | 22/35 | 新增 CodeQL 工作流、Issues 标签、CONTRIBUTING/SECURITY |
| 2026-05-22 | v0.7.1 | 17/35 | 初始评估；修正 #8 #27 为 ✅ |

---

> **注意**: 本文件是项目自评，用于内部追踪改进进度。如需官方 Badge，请到 [bestpractices.dev](https://bestpractices.dev) 注册并提交正式申请。
