功能与入口

学习画像页的「我的日语画像」进入完整分区:概览、语言背景、目标、考试、兴趣与领域、阅读设置、自评、系统观察、知识、证据、洞察、修改记录、数据与隐私。桌面显示分区导航,手机显示分区选择器。原画像页继续提供假名、翻译、解释深度和挑战偏好等设置。 所有资料允许缺省。自评可修改,系统观察不可直接编辑。界面不显示未经校准的概率,也不把资料填写程度当成能力可信度。本期没有新增测验、推荐排序或理解概率算法。

数据字典

单值设置继续使用 learner_profiles。新增记录通常包含 record_iduser_idsourceversioncreated_atupdated_at;用户身份来自 JWT。
数据与身份
learner_language_backgrounds用户与语言唯一;母语标志、自报水平、汉字熟悉度、学习开始日期与经历
learner_goals每个目标独立 ID;名称、用途、类型、顺序、期限、进行/暂停/完成状态
learner_exam_records每次考试独立 ID;级别、日期或仅年份、状态、总分、分项成绩和自报来源
profile_taxonomy_terms / profile_taxonomy_aliases主题、体裁、领域、场景、优先方向;标准化名称、语言标签、别名与合并重定向。owner 0 为共享,其余为用户私有
learner_preferences用户、条目、偏好类型唯一;兴趣、排除与领域熟悉度分别记录
learner_self_assessments用户、对象、能力维度、条件唯一;判断文本和补充说明
learner_reading_settings每用户一条;单次/每日分钟数、每周天数、长度偏好、音频速度、字幕
learner_insights有来源的系统提案,用户仅确认、拒绝、撤销;本期不自动生成提案
learner_profile_changes修改前后、请求指纹、幂等响应及操作时间;与事实写入在同一事务
skill_senses词条下的词义;词条、词典来源、来源词义键唯一;未知词义不生成记录
skill_aliases / skill_relations表记别名、活用和其他知识关系;不替换现有 Skill ID
ability_dimensions识义、读音、听辨、回忆、运用、阅读、写作、口语、互动、Can-do
learner_ability_states用户、对象、维度、条件唯一;可空估计、证据数、可空可靠性、版本及时间
learning_event_targets / learning_event_contexts一个事件的多个目标及辅助条件、任务、尝试、材料修订和评价版本
learning_event_retractions本人的显式反馈撤销;原事件仍可解释,不参与后续投影
material_profiles文章修订与分析版本唯一;已知体裁、长度、句数、词法修订及是否当前有效
material_skill_features材料分析、词条、词义唯一;出现频次、位置及解析来源
learner_material_feedback文章主旨、细节、词汇难度、兴趣及辅助使用的显式反馈
comprehension_estimates未来估计缓存;本期不填充、不提供预测 API
JSON 仅承载有合同的分项成绩、辅助条件、位置、语言标签以及历史快照。目标和考试不会因为名称相似而自动合并。自定义分类按用户、分类和 NFKC/大小写/空白标准化名称去重。

接口

公开前缀 /api/adaptive/me/foundation,内部前缀 /v1/data/adaptive/foundation
  • GET /{resource}?offset=0&limit=50&q=...:SQL 分页和搜索,返回 schema_versionitemstotalnext_offset。知识页还支持 kindstate 筛选。
  • 可编辑资源:languagesgoalsexamspreferencesself-assessmentsreading-settingsmaterial-feedback
  • 只读资源:dimensionsobservationsknowledgeevidencehistorysensessensesq 为 Skill ID。
  • taxonomy 提供查询与私有条目创建;insights 提供查询与状态决策,用户不能伪造系统提案。
  • POST /{resource}/{record_id}{request_id, expected_version, values}。创建版本为 0,修改携带当前版本;values 使用该资源的完整字段合同。
  • POST /{resource}/{record_id}?delete=true:同一请求结构,values 为空对象,删除当前资料,保留修改历史。
  • POST /retractions/{event_id}:撤销本人的显式反馈;系统评价不能由这个入口撤销。
  • POST /clear-profile/all:expected_version 为当前 Profile 版本;清空显式资料、相关反馈和历史,保留复习与训练记录、隐私开关。前端明确确认后才发送。
相同请求键和内容返回原响应;键复用但内容不同返回 409。自然身份冲突也返回 409,不能吞掉错误。用户资料与目录写入均限定本人;管理员通过原有审计接口只读查看。 事件扩展置于 payload.foundation,包含有界的 targetssupportattempt_idtask_typearticle_revisionsource_record_idfirst_independent_attemptevaluator_version。辅助条件未知时保持空值;不能将缺省等价于无辅助。旧事件保持原合同。

更新、迁移和兼容

schema.sql 为唯一 DDL;启动初始化和独立 bootstrap 均调用 migrate_profile_foundation。迁移标记确保历史回填只执行一次,不重建用户数据库。历史考试只有年份时保留年份;历史词条不复制成多个词义。 显式认识反馈进入自评。observed-production-recall.v4 只延续复习/表达观察的启发式更新;原算法概率不是校准结果。规范能力读取使用 learner_ability_states,投影事务通过触发器同时维护规范状态与旧 SkillState 兼容缓存。旧版本快照在下一次投影读取时重放。 旧 Profile 写入仅对变动集合做兼容同步,保留未变动条目的详细资料。新集合修改更新旧客户端字段与 Profile 版本。未来估计缓存在资料和学习事件变化时失效。 材料特征由迁移及既有词法更新生成;按句子哈希筛除过期跨度,去重不同用户对同一材料的跨度副本。语法难度、主旨理解等未知特征不推断为零。文章或句子修改立即使旧分析过期;下一次词法处理重新生成特征。

验证边界

自动化回归覆盖资料 CRUD、用户隔离、乐观并发、幂等、历史、反馈撤销、迁移重入和旧客户端编辑兼容;Flutter 检查覆盖异步分区切换。完整服务及客户端结果记录在合并 PR 中。不宣称已完成水平测验、生产数据库升级或真实模型语法准确率评测。 规范观察从 learner_ability_states 读取;旧 SkillState 接口保留兼容缓存,避免丢失既有历史、计数和启发式可信度。旧分数不代表经过校准的概率。