Files
Edu/services/ai/pyproject.toml
SpecialX 1dcdcf23fd feat(ai): python graphql federation subgraph with strawberry
- strawberry-graphql[asgi] dependency added

- GeneratedReport and LessonPlanStatus @key types with resolve_reference

- RouterAuthMiddleware validates Router-Authorization header on /graphql

- GraphQL endpoint mounted at /graphql in FastAPI app

- WorkflowStateStore injected for lesson plan status resolution
2026-07-15 00:56:37 +08:00

55 lines
1.4 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[project]
name = "ai-service"
version = "0.1.0"
description = "AI 网关服务 - LLM 集成 + 出题 + 备课工作流D6 智能洞察领域 · 生成子域)"
requires-python = ">=3.12"
dependencies = [
# 通过 workspace 继承 shared-py 集中声明的共享库版本
"edu-shared-py",
# 服务特有依赖(非共享库)
"httpx>=0.27.0",
# gRPC
"grpcio>=1.66.0",
"protobuf>=5.28.0",
# Kafka用量事件发布派生数据豁免 Outbox
"aiokafka>=0.11.0",
# Prompt 模板渲染
"jinja2>=3.1.0",
"pyyaml>=6.0.2",
# Redis限流 + 缓存 + 工作流状态)
"redis>=5.1.0",
# 重试机制LLM 调用 + 下游 gRPC
"tenacity>=9.0.0",
# GraphQL Federation 2 子图v2.1 M1Apollo Router 组合)
"strawberry-graphql[asgi]>=0.257.0",
]
[tool.uv.sources]
edu-shared-py = { workspace = true }
[project.optional-dependencies]
dev = [
"grpcio-tools>=1.66.0",
"pytest>=8.3.0",
"pytest-asyncio>=0.24.0",
"pytest-cov>=5.0.0",
"ruff>=0.7.0",
]
[tool.ruff]
line-length = 100
target-version = "py312"
exclude = ["src/ai/proto_gen", "tests"]
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP", "B", "SIM"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
python_files = ["test_*.py"]
addopts = "--cov=src --cov-report=term-missing --cov-fail-under=80"
[tool.coverage.run]
omit = ["src/ai/proto_gen/*"]