@deepintel-ltd/farmpro-contracts

中文文档
1.36.11发布于 2026/10/27ISCTypeScriptES Module近 30 天下载 3877

FarmPro API的安全性API合同

中文使用文档
文档目录33 节
  1. 概览
  2. 安装
  3. 结构
  4. 使用量
  5. 后端( NestJS)
  6. 前端
  7. API 模块
  8. 认证
  9. 用户
  10. 农场
  11. 字段
  12. 任务
  13. 库存
  14. 财务
  15. 收获
  16. 土壤试验
  17. 天气
  18. 团队
  19. 设备
  20. 文档
  21. 供应商
  22. 分析
  23. 常见特征
  24. 倾斜
  25. 日期范围过滤
  26. GeoJSON 支持
  27. 错误回复
  28. 类型安全
  29. 发展
  30. 大楼
  31. 类型检查
  32. 出版
  33. 许可证

FarmPro API 合同

使用 FarmPro API 的 API 型安全合同 ts-resst (英语) 财务报告和审定财务报表 佐德语Name。 。 。 .

概览

这个包为所有FarmPro模块提供全面,型式安全的API合同. 这些合同遵循RESTFUL原则,并使用Zod计划进行运行时间验证.

安装

npm install @farmpro/contracts

结构

合同分为以下单元:

src/
├── index.ts                 # Main exports
├── routes/                  # API route definitions
│   ├── index.ts            # Main contract combining all routers
│   ├── farms.routes.ts
│   ├── fields.routes.ts
│   ├── tasks.routes.ts
│   ├── inventory.routes.ts
│   ├── finance.routes.ts
│   ├── harvest.routes.ts
│   ├── soil-tests.routes.ts
│   ├── weather.routes.ts
│   ├── team.routes.ts
│   ├── equipment.routes.ts
│   ├── documents.routes.ts
│   ├── suppliers.routes.ts
│   └── analytics.routes.ts
└── schemas/                 # Zod schemas
    ├── common.schemas.ts   # Shared schemas (pagination, errors, GeoJSON)
    ├── farms.schemas.ts
    ├── fields.schemas.ts
    ├── tasks.schemas.ts
    ├── inventory.schemas.ts
    ├── finance.schemas.ts
    ├── harvest.schemas.ts
    ├── soil-tests.schemas.ts
    ├── weather.schemas.ts
    ├── team.schemas.ts
    ├── equipment.schemas.ts
    ├── documents.schemas.ts
    ├── suppliers.schemas.ts
    └── analytics.schemas.ts

使用量

后端( NestJS)

import { apiContract } from '@farmpro/contracts';
import { TsRestHandler, tsRestHandler } from '@ts-rest/nest';

@Controller()
export class FarmsController {
  @TsRestHandler(apiContract.farms)
  async handler() {
    return tsRestHandler(apiContract.farms, {
      listFarms: async ({ query }) => {
        // Implementation
      },
      createFarm: async ({ body }) => {
        // Implementation
      },
      // ... other handlers
    });
  }
}

前端

import { initClient } from '@ts-rest/core';
import { apiContract } from '@farmpro/contracts';

const client = initClient(apiContract, {
  baseUrl: 'http://localhost:3000/api',
  baseHeaders: {
    'Content-Type': 'application/json',
  },
});

// Use the client
const farms = await client.farms.listFarms({ query: { page: 1, limit: 20 } });
const farm = await client.farms.createFarm({ body: { name: 'My Farm', location: 'Kano' } });

API 模块

认证

  • POST /auth/login - 用电子邮件和密码登录
  • POST /auth/signup - 登记新用户
  • POST /auth/google/initiate - 启动谷歌OAuth流量
  • POST /auth/google/callback - 处理谷歌OAuth召回
  • POST /auth/refresh - 刷新访问标志
  • POST /auth/logout - 登录用户
  • POST /auth/password/reset-request - 请求密码重置
  • POST /auth/password/reset - 重新设定密码
  • POST /auth/password/change - 更改密码(认证)
  • POST /auth/email/verify - 验证电子邮件地址
  • POST /auth/email/resend-verification - 重新发送验证邮件

用户

  • GET /user/profile - 获取当前用户配置
  • PATCH /user/profile - 更新用户配置

农场

  • GET /farms - 名单农场
  • POST /farms - 创建农场
  • GET /farms/:id - 去农场
  • PATCH /farms/:id - 更新农场
  • DELETE /farms/:id - 删除农场

字段

  • GET /farms/:farmId/fields - 列表字段
  • POST /farms/:farmId/fields - 创建字段
  • GET /farms/:farmId/fields/:id - 获得野外
  • PATCH /farms/:farmId/fields/:id - 更新字段
  • DELETE /farms/:farmId/fields/:id - 删除字段

任务

  • GET /farms/:farmId/tasks - 列出任务
  • POST /farms/:farmId/tasks - 创建任务
  • GET /farms/:farmId/tasks/:id - 得到任务
  • PATCH /farms/:farmId/tasks/:id - 更新任务
  • POST /farms/:farmId/tasks/:id/complete - 完成任务
  • DELETE /farms/:farmId/tasks/:id - 删除任务
  • POST /farms/:farmId/tasks/:id/notes - 添加任务说明

库存

  • GET /farms/:farmId/inventory - 清单物项
  • POST /farms/:farmId/inventory - 创建库存项目
  • GET /farms/:farmId/inventory/:id - 获得库存物品
  • PATCH /farms/:farmId/inventory/:id - 更新库存项目
  • DELETE /farms/:farmId/inventory/:id - 删除库存项目
  • POST /farms/:farmId/inventory/purchase - 购买日志

财务

  • 预算: GET, (中文(简体) ), POST, (中文(简体) ), PATCH, (中文(简体) ), DELETE /farms/:farmId/budget
  • 费用: GET, (中文(简体) ), POST, (中文(简体) ), PATCH, (中文(简体) ), DELETE /farms/:farmId/expenses
  • 收入: GET, (中文(简体) ), POST, (中文(简体) ), PATCH, (中文(简体) ), DELETE /farms/:farmId/revenue
  • GET /farms/:farmId/finance/summary - 财务摘要

收获

  • GET /farms/:farmId/harvests - 清单收成
  • POST /farms/:farmId/harvests - 创造收获
  • GET /farms/:farmId/harvests/:id - 收获吧
  • PATCH /farms/:farmId/harvests/:id - 更新收获情况
  • DELETE /farms/:farmId/harvests/:id - 删除收成

土壤试验

  • GET /farms/:farmId/soil-tests - 列出土壤试验
  • POST /farms/:farmId/soil-tests - 建立土壤测试
  • GET /farms/:farmId/soil-tests/:id - 进行土壤测试
  • PATCH /farms/:farmId/soil-tests/:id - 更新土壤测试
  • DELETE /farms/:farmId/soil-tests/:id - 删除土壤试验

天气

  • GET /farms/:farmId/weather - 获取天气数据

团队

  • GET /farms/:farmId/team - 名单小组成员
  • POST /farms/:farmId/team - 创建团队成员
  • GET /farms/:farmId/team/:id - 叫队员来
  • PATCH /farms/:farmId/team/:id - 更新小组成员
  • DELETE /farms/:farmId/team/:id - 删除小组成员

设备

  • GET /farms/:farmId/equipment - 清单设备
  • POST /farms/:farmId/equipment - 创建设备
  • GET /farms/:farmId/equipment/:id - 拿设备
  • PATCH /farms/:farmId/equipment/:id - 更新设备
  • DELETE /farms/:farmId/equipment/:id - 删除设备
  • POST /farms/:farmId/equipment/:id/maintenance - 增加维护记录

文档

  • GET /farms/:farmId/documents - 清单文件
  • POST /farms/:farmId/documents - 创建文档
  • GET /farms/:farmId/documents/:id - 获取文档
  • PATCH /farms/:farmId/documents/:id - 更新文档
  • DELETE /farms/:farmId/documents/:id - 删除文档

供应商

  • 供应商: GET, (中文(简体) ), POST, (中文(简体) ), PATCH, (中文(简体) ), DELETE /farms/:farmId/suppliers
  • 买家 : GET, (中文(简体) ), POST, (中文(简体) ), PATCH, (中文(简体) ), DELETE /farms/:farmId/buyers

分析

  • GET /farms/:farmId/analytics - 获取分析数据

常见特征

倾斜

大多数列表终点支持 pagination :

{
  page?: number;  // Default: 1
  limit?: number; // Default: 20, Max: 100
}

日期范围过滤

许多端点支持日期范围过滤:

{
  startDate?: string; // ISO datetime
  endDate?: string;   // ISO datetime
}

GeoJSON 支持

农场和农田支持GeoJSON几何边界:

{
  type: 'Polygon' | 'MultiPolygon' | 'Point' | 'LineString';
  coordinates: number[][][] | number[][] | number[];
}

错误回复

所有端点返回标准化错误反应:

{
  message: string;
  code?: string;
  errors?: Array<{
    field?: string;
    message: string;
  }>;
}

类型安全

所有计划导出类型Script 类型 :

import type {
  FarmResponse,
  CreateFarmInput,
  FieldResponse,
  TaskResponse,
  // ... etc
} from '@farmpro/contracts';

发展

大楼

npm run build

类型检查

npm run type-check

出版

npm run prepublishOnly  # Builds and validates
npm publish

许可证

公务员制度委员会

版本与发布记录

@deepintel-ltd/farmpro-contracts 共发布 148 个版本,首次发布于 2025/11/08;过去 12 个月发布了 138 个版本。

版本发布日期距今
1.36.11latest2026/10/2716 天前
1.36.102026/10/2418 天前
1.36.92026/10/2418 天前
1.36.82026/10/2419 天前
1.36.72026/10/2319 天前
1.36.62026/10/2319 天前

关于 @deepintel-ltd/farmpro-contracts 的常见问题

@deepintel-ltd/farmpro-contracts 是什么?

FarmPro API的安全性API合同

如何安装 @deepintel-ltd/farmpro-contracts?

在项目目录运行 npm install @deepintel-ltd/farmpro-contracts,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:zod(^3.25.0)、@ts-rest/core(^3.52.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@deepintel-ltd/farmpro-contracts 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@deepintel-ltd/farmpro-contracts 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@deepintel-ltd/farmpro-contracts 可以商用吗?

@deepintel-ltd/farmpro-contracts 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@deepintel-ltd/farmpro-contracts 的下载量有多少?

根据 npm 官方下载统计,@deepintel-ltd/farmpro-contracts 在 2026/10/12 – 2026/11/10 这 30 天内被下载 3,877 次,日均约 129 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@deepintel-ltd/farmpro-contracts 还在维护吗?

最新版本 1.36.11 发布于 2026/10/27(16 天前);至今共发布 148 个版本,其中过去 12 个月发布了 138 个;首次发布于 2025/11/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。