OFREP Single flag evaluation (Core API)

未关闭
#8,435 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
55/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
openapi, python
领域
api, backend

调研方向

首先定位 Core API 中现有的 identity flag 评估逻辑以及其他计费 endpoint,然后将它们在请求、持久化和计费方面的行为与 OFREP evaluateFlag 规范进行比较。根据验收标准,验证新 endpoint 的值回退、原因词汇、404 响应、identity-trait 持久化和计费行为。

由索引模型根据 Issue 内容生成。

描述

In order to implement the OFREP specification, our Core API needs a new endpoint that evaluates a single flag given a set of identity traits. The Edge API counterpart is Flagsmith/edge-api#712.

An interpretation of the specification to our data model is as the following example:

(request)

POST /ofrep/v1/evaluate/flags/{feature.name} HTTP/1.1
Host: {flagsmith_host}
X-API-Key: {server_side_environment_key}
Content-Type: application/json

{
  "context": {
    "targetingKey": "{identity.identifier}",
    "trait1": "value1",
    "trait2": "value2"
  }
}

(response)

HTTP/1.1 200 OK
Content-Type: application/json

{
  "key": "{feature.name}",
  "value": "{multivariate_feature_option.value}",
  "reason": "SPLIT",
  "variant": "{multivariate_feature_option.key}"
}

(response, unknown flag)

HTTP/1.1 404 Not Found
Content-Type: application/json

{
  "key": "{feature.name}",
  "errorCode": "FLAG_NOT_FOUND"
}

Acceptance criteria

  • Our API exposes a new endpoint POST /ofrep/v1/evaluate/flags/{flagKey} compliant to the OFREP specification. As such, the endpoint:
    • Serves the flag's value as its remote configuration value, falling back to the flag's enabled state when no value is set.
    • Reports the flag's evaluation reason using the vocabulary OFREP defines.
    • Responds 404 Not Found when the environment has no such flag.
    • Is billed similarly to other billed endpoints.
    • Persists the identity and its traits on the same terms as identity flag evaluation.
主要语言
Python
星标
7.1k
派生
603
平均合并
3 天 8 小时
30 天内合并 PR
102

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Flagsmith/flagsmith 的其他 Issue

查看 Flagsmith/flagsmith 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。