taolib.symphony.tracker.linear.normalize#
Linear 响应规范化 — 将原始 GraphQL node 转换为领域模型 Issue。
主要处理: - labels → 小写规范化 - blocked_by → 从 inverseRelations 中提取 type=="blocks" 的关联 issue - priority → 非整数映射为 None - state → 从嵌套的 state.name 提取 - 日期 → ISO 8601 字符串解析为 datetime
Functions#
|
将 Linear GraphQL 返回的 issue node 规范化为 |
|
从嵌套的 state 对象中提取状态名称。 |
|
从 labels.nodes 中提取标签名并转为小写。 |
|
从 inverseRelations.nodes 中提取 type 为 'blocks' 的关联 issue ID。 |
|
优先级解析:仅整数 1-4 有效,其余映射为 None。 |
|
ISO 8601 日期字符串解析,失败返回 None。 |
Module Contents#
- taolib.symphony.tracker.linear.normalize.normalize_issue(node: dict) taolib.symphony.tracker.models.Issue#
将 Linear GraphQL 返回的 issue node 规范化为
Issue。- 参数:
node -- Linear API 返回的原始 issue 字典, 包含嵌套的
state、labels、inverseRelations等字段。- 返回:
规范化后的
Issue实例。
- taolib.symphony.tracker.linear.normalize._extract_labels(node: dict) list[str]#
从 labels.nodes 中提取标签名并转为小写。
- taolib.symphony.tracker.linear.normalize._extract_blocked_by(node: dict) list[str]#
从 inverseRelations.nodes 中提取 type 为 'blocks' 的关联 issue ID。
Linear 中
inverseRelations表示"该 issue 被其他 issue 阻塞", 其中type == "blocks"意味着关联的 issue 阻塞了当前 issue。
- taolib.symphony.tracker.linear.normalize._parse_priority(value: object) int | None#
优先级解析:仅整数 1-4 有效,其余映射为 None。
- taolib.symphony.tracker.linear.normalize._parse_datetime(raw: str | None) datetime.datetime | None#
ISO 8601 日期字符串解析,失败返回 None。