Activity Facts · real save test
Записать активность: смотрел рилс 15 минут
Эта страница вызывает реальный backend route /api/activity/facts/save-gate из браузера с текущей authenticated-сессией. После успешной записи факт должен появиться в /activity-facts.
Нажми большую синюю кнопку, чтобы записать тестовую активность: смотрел рилс 15 минут.
Save response
null
GET /api/activity/facts response
null
Request body preview
{
"routeMode": "future_server_mediated_write",
"idempotencyKey": "reels-15-min-7cebbe7f-bb40-4061-b27a-e8ee520a3f8f",
"sourcePackageId": "reels-15-min-package-7cebbe7f-bb40-4061-b27a-e8ee520a3f8f",
"activityProcessingPackage": {
"packageId": "reels-15-min-package-7cebbe7f-bb40-4061-b27a-e8ee520a3f8f",
"status": "ready_for_save_gate",
"rawInput": {
"text": "смотрел рилс 15 минут",
"locale": "ru",
"source": "manual_test_fixture",
"capturedAtIso": "2026-06-25T17:09:56.723Z"
},
"recognition": {
"status": "obvious_activity",
"confidence": 1,
"reason": "Manual authenticated browser save test for activity facts runtime.",
"detectedActivityTitle": "смотрел рилс 15 минут",
"shouldAskUserBeforeSaving": false
},
"measures": [
{
"localId": "measure-duration-15-min",
"measureType": "duration",
"unit": "minute",
"numericValue": 15,
"textValue": null,
"confidence": 1,
"evidenceText": "15 минут",
"normalizedLabel": "15 минут"
}
],
"semanticCategories": [
{
"localId": "category-watching-reels",
"semanticObjectKey": "watching_reels",
"labelRu": "Просмотр рилсов",
"layer": "activity_type",
"confidence": 1,
"evidenceText": "смотрел рилс",
"reason": "The user reported watching reels."
}
],
"valueObjectMatches": [
{
"semanticCategoryLocalId": "category-watching-reels",
"matchStatus": "not_applicable",
"valueObjectId": null,
"valueObjectTitle": null,
"parentValueObjectId": null,
"parentValueObjectTitle": null,
"confidence": 1,
"reason": "This first runtime test saves a semantic fact without requiring an existing Value Object."
}
],
"missingValueObjectCandidates": [],
"factPreviews": [
{
"localId": "fact-watching-reels-duration",
"activityEventId": null,
"measureLocalId": "measure-duration-15-min",
"semanticCategoryLocalId": "category-watching-reels",
"semanticObjectKey": "watching_reels",
"valueObjectId": null,
"valueObjectTitle": null,
"measureType": "duration",
"unit": "minute",
"numericValue": 15,
"textValue": null,
"status": "ready_for_fact_write",
"confidence": 1,
"explanation": "Факт: пользователь смотрел рилс 15 минут."
}
],
"safety": {
"previewOnly": false,
"dbWriteAllowed": true,
"sqlAllowed": false,
"openAiCallAllowed": false,
"medicalDiagnosisAllowed": false,
"notes": [
"Authenticated browser test.",
"No OpenAI call.",
"No manual SQL execution."
]
},
"counters": {
"measureCount": 1,
"semanticCategoryCount": 1,
"matchedValueObjectCount": 0,
"missingValueObjectCandidateCount": 0,
"factPreviewCount": 1
}
},
"factDecisions": [
{
"factLocalId": "fact-watching-reels-duration",
"decision": "accept",
"reasonRu": "Пользователь подтвердил тестовую запись факта: смотрел рилс 15 минут."
}
],
"editedFactDecisions": [],
"valueObjectCandidateDecisions": [],
"clientSafetyConfirmation": {
"userReviewedPreview": true,
"userConfirmedMissingValueObjectCreation": false,
"userConfirmedFactWrite": true,
"userUnderstandsPreviewIsNotDiagnosis": true
}
}