内容
<div align="center">
<img src="public/eps-logo-color.svg" alt="Eko 平台服务" width="96">
# Eko 平台服务
<!-- 构建与元数据 -->
[](https://github.com/ekoindia/eps-platform/actions/workflows/ci.yml)
[](https://github.com/ekoindia/eps-platform/actions/workflows/release.yml)
[](LICENSE)
[](https://nodejs.org)
[](https://eps.eko.in/docs)
<!-- 已发布软件包:版本 · 每月下载量 -->
[](https://www.npmjs.com/package/@ekoindia/eps-sdk)
[](https://www.npmjs.com/package/@ekoindia/eps-context-mcp)
[](https://www.npmjs.com/package/@ekoindia/eps-mock-server)
</div>
**适用于 [Eko 平台服务](https://eps.eko.in) 的 AI 就绪开发者平台 - 印度的金融科技 API** (AePS、DMT、BBPS、PPI 钱包、KYC 和验证、代理银行)。
单一的真实数据源 **数据层** 描述了每个 EPS API。从中,构建生成开发者或其 AI 编码代理所需的一切:后端 SDK、MCP 服务器、即插即用的 AI 上下文包、离线模拟服务器、OpenAPI + Postman、LLM 可读文档以及营销 + 开发者文档网站本身。编辑数据,所有工件都会同步再生。
## 为什么存在
- **单一数据源,零漂移。** 规格、SDK、MCP、文档、OpenAPI 和代码样本均源自同一数据源(`src/lib/data/`)。没有手动维护的副本会过时。
- **设计时即为 AI 就绪。** 配备 MCP 服务器和即插即用的上下文包(`CLAUDE.md`、`AGENTS.md`、`cursorrules`、`copilot-instructions.md`),因此代理可以正确集成 EPS - 包括棘手的部分:每请求 HMAC-SHA256 签名和多步骤配方(例如 DMT 的 `463 → 注册发送者` 分支)。
- **后端安全的 SDK。** JS 和 PHP SDK 从具有内置签名和跨语言黄金矢量一致性测试的 SDK 表面生成。覆盖范围是不断增长的子集 - 请参见 [API 覆盖路线图](docs/api-coverage-roadmap.md)。
- **开放且离线。** MCP 在本地运行,带有内置捆绑包(无托管服务,无密钥);离线模拟服务器为测试重放记录的固定装置。
## 使用 EPS
```bash
# AI 代理上下文(任何 MCP 兼容的托管)
npx -y @ekoindia/eps-context-mcp
# 后端 SDK(仅服务器端 - 签名密钥必须保持机密)
npm install @ekoindia/eps-sdk # Node.js
composer require ekoindia/eps-sdk # PHP 8.1+
# 用于本地开发和测试的离线模拟服务器
npx -y @ekoindia/eps-mock-server
```
对于 Claude Code,安装捆绑插件(连接 MCP + 技能 + `/eps` 命令)。将任何代理指向站点 `/llms.txt` 和 `/ai` 中心,以获取完整的机器可读索引。
## 项目结构
```
src/
lib/
data/ # ← 真实数据源层(规格、产品、配方、行业、解决方案、定价)
agent/ # 生成器:代理捆绑包、固定装置、安装矩阵、上下文包
sdk/ # 生成器:SDK 表面、Postman 集合
openapi/ # 生成器:OpenAPI 3.1 文档
markdown/ # 生成器:/llms.txt、/index.md、/products.md、每页 markdown
config/ # 全局配置常量(站点 URL、API 端点)
components/ hooks/ pages/ assets/ # React 网站
App.tsx / AppServer.tsx / entry-server.tsx / main.tsx # SPA + SSG 入口点
ssg/ # 用于静态预渲染的自定义 Vite 插件
public/ # 直接提供的静态文件(robots.txt、_redirects)
docs/ # 详细文档(以下索引)
vite-plugin-generate-*.ts # 构建时发射器(openapi、代理捆绑包、markdown、xlsx)
packages/ # 已发布的工件(每个从构建输出中烘焙):
eps-context-mcp/ # @ekoindia/eps-context-mcp — 本地 MCP 服务器(npm)
sdk-js/ # @ekoindia/eps-sdk — Node.js 后端 SDK(npm)
eps-mock-server/ # @ekoindia/eps-mock-server — 离线模拟服务器(npm)
sdk-php/ # ekoindia/eps-sdk — PHP 后端 SDK(Composer/Packagist)
claude-plugin-eps/ # Claude Code 插件捆绑包(清单 + 技能 + /eps 命令;不是 npm 包)
dist/ # 构建输出(生成,gitignored)
packages/*/data/ # 烘焙工件复制到此处(生成,gitignored - 绝不手动编辑)
```
这就是 **3 个 npm 软件包、1 个 Composer 软件包和 1 个 Claude Code 插件捆绑包**。
> [!CAUTION]
> `packages/*/data/` 文件是生成的输出 - 它们可能存在于您的工作树中,但被 gitignored 且 **绝不手动编辑或提交**。
## 数据和配置
**真实数据源** (`src/lib/data/`):
| 文件 | 角色 |
|------|------|
| [`api-specs.ts`](src/lib/data/api-specs.ts) | 技术 REST 规格,每个 API 一个条目(仅增量) |
| `api-auth.ts` / `api-error-codes.ts` / `api-specs-common.ts` | 共享身份验证标头、错误目录、公共参数/信封 + 解析器 |
| [`api-products.ts`](src/lib/data/api-products.ts) | API 产品注册 + 元数据 |
| [`api-product-pages.ts`](src/lib/data/api-product-pages.ts) | 产品页面营销内容(英雄、功能、FAQ、SEO)- 无技术数据 |
| `api-recipes.ts` | 多步骤集成配方(例如 DMT 注册后转账) |
| [`industries.ts`](src/lib/data/industries.ts) / [`solutions.ts`](src/lib/data/solutions.ts) | 行业页面 + 解决方案/包定义 |
| `api-pricing.ts` / `payments-pricing.ts` | 定价数据(驱动定价页面 + xlsx 计算器) |
| `docs-registry.ts` | 将 MDX 指南 + API 端点合并到文档导航中 |
**配置文件** (根目录):`package.json`(npm 工作区)、`vite.config.ts`、`vitest.config.ts`、`tsconfig*.json`、`eslint.config.js`、`components.json`、`vite-plugin-generate-*.ts` 发射器,以及每个平台的部署重写(`vercel.json`、`netlify.toml`、`nginx.conf`、`htaccess`)。
> [!TIP]
> **所有** 配置文件的完整索引位于 [docs/configuration.md](docs/configuration.md)。
## 它是如何工作的
```
src/lib/data/ ──▶ npm run build
├─ vite build → dist/ (网站、openapi.json、/agent/*.json + 每个 API 和主题的切片、
│ 上下文包、/llms.txt、/index.md、/products.md、定价 xlsx)
└─ bake:all → 将相关工件复制到每个 packages/*/data/
(然后每个软件包都从那里构建和发布)
```
`npm run build` 运行 Vite 构建,然后自动调用 `bake:all` - 您不需要单独运行它们。
## 开发此仓库
**设置** (节点 `>=20`):
```bash
npm install
npm run dev # 本地开发服务器
npm run build # 完整构建 + 烘焙(生成所有工件)
npm test # vitest 运行
npm run lint # eslint
```
`npm install`、`npm run build`、`npm run lint` 和 `npm test` 都在 **没有任何凭证的情况下运行** - 不需要 API 密钥来构建站点或运行套件。仅当在 `/docs` 中使用 **“Try it”** 控制台实时时,才需要沙盒凭证:复制 `.env.example` → `.env.local` 并填写您自己的 Eko UAT/沙盒密钥。这些值仅在 `vite dev` 时读取(由 `import.meta.env.DEV` 控制),绝不会被捆绑到生产环境中,访问密钥仅用于浏览器中的 HMAC 签名。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 以获取完整的贡献者工作流程。
**如何添加内容:**
| 添加... | 编辑 | 指南 |
|--------|------|-------|
| API 产品 | `api-products.ts` + `api-product-pages.ts`,然后将其添加到 `ProductsSection.tsx` 选项卡 | [docs/configuration.md](docs/configuration.md) |
| API 规格 | `api-specs.ts`(设置 `productId`) | [docs/api-specs.md](docs/api-specs.md) |
| 开发文档 API 参考 | (自动从 `api-specs.ts`) | [docs/developer-docs/api-documentation.md](docs/developer-docs/api-documentation.md) |
| 开发文档指南(MDX 散文) | 添加 MDX 指南 | [docs/developer-docs/mdx-guides.md](docs/developer-docs/mdx-guides.md) |
| 行业 / 解决方案包 | `industries.ts` / `solutions.ts` | [docs/industry-and-packs-plan.md](docs/industry-and-packs-plan.md) |
| AI 工件 / 上下文包 | `src/lib/agent/` 生成器 | [docs/ai-agent-platform.md](docs/ai-agent-platform.md) |
**注意事项:**
- `packages/*/data/` 和 `dist/` 是 **生成的** 由 `bake:all` 构建/ - 绝不手动编辑,绝不提交(gitignored)。如果预览显示了这些目录中的更改,那是构建输出,而不是源代码。
- 站点构建为 **静态预渲染 HTML** (SSG),适用于每个已知路由;未知路由通过每个平台的 catch-all 重写回退到 SPA 外壳(`__spa-fallback.html`)。请参阅 [docs/static-page-generation.md](docs/static-page-generation.md) 和 [docs/ssg-hydration.md](docs/ssg-hydration.md)。
- 重新部署后,旧 JS 块会自动重新加载 - 请参阅 [docs/chunk-error-auto-reload.md](docs/chunk-error-auto-reload.md)。
- **部署:** 在本地构建,然后将 `dist/` 部署到 Vercel / Netlify / Apache / Nginx 中的任意一个 - 每个都只读取其自己的重写文件(`vercel.json` / `netlify.toml` / `.htaccess` / `nginx.conf`),因此它们不会冲突。
## 文档
**平台和 AI**
- [AI 代理平台](docs/ai-agent-platform.md)
- [API 覆盖路线图](docs/api-coverage-roadmap.md)
**API 和数据模型**
- [API 技术规格](docs/api-specs.md)
- [Markdown / LLM 内容生成](docs/markdown-generation.md)
- [开发者文档门户架构](docs/developer-docs/)
- [行业和解决方案计划](docs/industry-and-packs-plan.md)
**SDK 和发布**
- [SDK 黄金矢量一致性](docs/sdk-golden-vector.md)
- [发布代理软件包](docs/releasing-agent-packages.md)
**站点构建和运维**
- [配置 - 每个配置文件](docs/configuration.md)
- [静态页面生成(SSG)](docs/static-page-generation.md) · [水合规则](docs/ssg-hydration.md)
- [定价计算器](docs/pricing-calculator.md) · [命令调色板(⌘K)](docs/command-palette-search.md) · [过时块自动重新加载](docs/chunk-error-auto-reload.md)
## 技术栈
Vite · React · TypeScript · Tailwind CSS · shadcn-ui · npm 工作区。
## 贡献和安全
- [CONTRIBUTING.md](CONTRIBUTING.md) - 开发者设置、分支/提交约定、PR 工作流程。
- [SECURITY.md](SECURITY.md) - 如何报告漏洞(请勿 **公开** 安全报告的公共问题)。
- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) - 社区标准。
## 许可证
源代码在 [MIT License](LICENSE) 下发布。MIT 授予 **代码** 仅限使用。**“Eko”名称、徽标和品牌资产** 是其所有者的商标,**不** 允许重用。营销副本、页面内容和 `src/` 和 `public/` 下的设计资产可能受单独条款约束 - 请参阅 `LICENSE` 以获取确切范围,然后再重用非代码材料。