개선관리 요구사항과 Google 로그인을 완료
This commit is contained in:
parent
cc0a15b7c6
commit
2a39636163
112 changed files with 10166 additions and 527 deletions
|
|
@ -21,7 +21,7 @@ from ..contracts.deliberate_practice import (
|
|||
PracticePrescription,
|
||||
)
|
||||
from ..deps import AIView, Principal, Role, db_for_ai_view, require_role
|
||||
from ..services import deliberate_practice_store
|
||||
from ..services import deliberate_practice_store, feedback_policy
|
||||
|
||||
|
||||
router = APIRouter(tags=["deliberate-practice"])
|
||||
|
|
@ -248,6 +248,14 @@ class DeliberatePracticeReadModelResponse(BaseModel):
|
|||
|
||||
|
||||
def _http_error(exc: Exception) -> HTTPException:
|
||||
if isinstance(
|
||||
exc,
|
||||
deliberate_practice_store.DeliberatePracticeFeedbackDisabledError,
|
||||
):
|
||||
return HTTPException(
|
||||
status.HTTP_403_FORBIDDEN,
|
||||
detail=feedback_policy.LEARNER_FEEDBACK_DISABLED_DETAIL,
|
||||
)
|
||||
if isinstance(exc, deliberate_practice_store.DeliberatePracticeNotFoundError):
|
||||
return HTTPException(status.HTTP_404_NOT_FOUND, detail=str(exc))
|
||||
if isinstance(exc, deliberate_practice_store.DeliberatePracticeConflictError):
|
||||
|
|
@ -295,6 +303,7 @@ async def create_practice_attempt(
|
|||
body: PracticeAttemptSubmissionRequest,
|
||||
principal: LearnerPrincipal,
|
||||
) -> PracticeAttemptSubmissionResponse:
|
||||
feedback_policy.require_principal_learner_feedback(principal)
|
||||
try:
|
||||
payload = await deliberate_practice_store.append_learner_attempt_submission(
|
||||
principal=principal,
|
||||
|
|
@ -305,6 +314,7 @@ async def create_practice_attempt(
|
|||
except (
|
||||
deliberate_practice_store.DeliberatePracticeNotFoundError,
|
||||
deliberate_practice_store.DeliberatePracticeConflictError,
|
||||
deliberate_practice_store.DeliberatePracticeFeedbackDisabledError,
|
||||
deliberate_practice_store.DeliberatePracticeStateError,
|
||||
) as exc:
|
||||
raise _http_error(exc) from exc
|
||||
|
|
@ -321,6 +331,10 @@ async def observe_completed_practice_session(
|
|||
practice_session_id: UUID,
|
||||
principal: LearnerPrincipal,
|
||||
) -> PracticeAttemptSubmissionResponse:
|
||||
await feedback_policy.require_session_learner_feedback(
|
||||
practice_session_id,
|
||||
principal,
|
||||
)
|
||||
try:
|
||||
payload = await deliberate_practice_store.append_runtime_practice_session(
|
||||
principal=principal,
|
||||
|
|
@ -330,6 +344,7 @@ async def observe_completed_practice_session(
|
|||
except (
|
||||
deliberate_practice_store.DeliberatePracticeNotFoundError,
|
||||
deliberate_practice_store.DeliberatePracticeConflictError,
|
||||
deliberate_practice_store.DeliberatePracticeFeedbackDisabledError,
|
||||
deliberate_practice_store.DeliberatePracticeStateError,
|
||||
) as exc:
|
||||
raise _http_error(exc) from exc
|
||||
|
|
@ -368,6 +383,7 @@ async def correct_practice_attempt(
|
|||
async def get_my_deliberate_practice(
|
||||
principal: LearnerPrincipal,
|
||||
) -> DeliberatePracticeReadModelResponse:
|
||||
feedback_policy.require_principal_learner_feedback(principal)
|
||||
try:
|
||||
payload = await deliberate_practice_store.read_deliberate_practice(
|
||||
principal=principal
|
||||
|
|
@ -375,6 +391,7 @@ async def get_my_deliberate_practice(
|
|||
except (
|
||||
deliberate_practice_store.DeliberatePracticeNotFoundError,
|
||||
deliberate_practice_store.DeliberatePracticeConflictError,
|
||||
deliberate_practice_store.DeliberatePracticeFeedbackDisabledError,
|
||||
deliberate_practice_store.DeliberatePracticeStateError,
|
||||
) as exc:
|
||||
raise _http_error(exc) from exc
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue