init: company-haness 설계
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
"""Deterministic request classifier: light operational, substantial, or strategic."""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from .coverage_model import tokens
|
||||
|
||||
STRATEGIC = {
|
||||
"strategy", "portfolio", "pricing", "budget", "roadmap", "acquisition", "partnership",
|
||||
"compliance", "legal", "production", "customer", "revenue", "one-way", "irreversible",
|
||||
"전략", "포트폴리오", "가격", "예산", "로드맵", "인수", "법무", "규제", "매출", "고객",
|
||||
}
|
||||
LIGHT = {
|
||||
"typo", "spelling", "docs", "comment", "rename", "format", "config", "test", "small",
|
||||
"오탈자", "문서", "주석", "이름", "포맷", "설정", "테스트", "작은",
|
||||
}
|
||||
SUBSTANTIAL = {
|
||||
"feature", "refactor", "migration", "architecture", "api", "database", "security", "design",
|
||||
"기능", "리팩터", "마이그레이션", "아키텍처", "데이터베이스", "보안", "설계",
|
||||
}
|
||||
|
||||
|
||||
def classify_request(request: str, facts: dict[str, Any] | None = None) -> dict[str, Any]:
|
||||
facts = facts or {}
|
||||
observed = tokens(request) | tokens(facts)
|
||||
searchable = (request + " " + str(facts)).lower()
|
||||
strategic_hits = sorted({term for term in STRATEGIC if term in observed or term in searchable})
|
||||
substantial_hits = sorted({term for term in SUBSTANTIAL if term in observed or term in searchable})
|
||||
light_hits = sorted({term for term in LIGHT if term in observed or term in searchable})
|
||||
if facts.get("one-way-door") or facts.get("blast-radius") == "production-customer-revenue" or strategic_hits:
|
||||
route = "strategic"
|
||||
plan = "cascade"
|
||||
executive = True
|
||||
elif substantial_hits or facts.get("cross-team"):
|
||||
route = "substantial"
|
||||
plan = "cascade"
|
||||
executive = False
|
||||
else:
|
||||
route = "light-operational"
|
||||
plan = "light"
|
||||
executive = False
|
||||
return {
|
||||
"classification": route,
|
||||
"plan": plan,
|
||||
"executive-required": executive,
|
||||
"signals": {
|
||||
"strategic": strategic_hits,
|
||||
"substantial": substantial_hits,
|
||||
"light": light_hits,
|
||||
},
|
||||
"reason": (
|
||||
"decision authority or high-blast signal" if executive else
|
||||
"substantial implementation/design signal" if route == "substantial" else
|
||||
"reversible owner-scoped task"
|
||||
),
|
||||
}
|
||||
Reference in New Issue
Block a user