feat: 完善听力口语辅助状态记录、练习分块与复习抽查间隔机制

This commit is contained in:
shen
2026-09-23 18:33:22 -07:00
parent 6b42b7abc3
commit d740a9e19c
106 changed files with 2933 additions and 845 deletions
@@ -147,13 +147,21 @@ class _PlacementPageState extends State<PlacementPage>
bool get _answeredName =>
coreItemUsedIn('A0-P01', answerController.text.trim());
/// Placement only picks an A0 starting point until A1 content is frozen, and
/// it never marks a lesson as passed.
String get _suggestedLessonId =>
_understoodGreeting && _answeredName ? 'a0-02' : 'a0-01';
/// Self report only moves the starting point when both short checks pass.
/// Placement never marks the earlier lessons as completed.
String get _suggestedLessonId {
if (!_understoodGreeting || !_answeredName) return 'a0-01';
return switch (selected) {
PlacementLevel.beginner => 'a0-02',
PlacementLevel.someBasics => 'a0-03',
PlacementLevel.simpleConversation => 'a0-04',
};
}
String get _reason => _understoodGreeting && _answeredName
? '你已经能听懂问候,也能说出自己的名字,可以从拼写名字开始。'
? selected == PlacementLevel.beginner
? '你已经能听懂问候,也能说出自己的名字,可以从拼写名字开始。'
: '你通过了两项基础检查,结合自选基础,建议从这课试学;前面的课随时可以返回。'
: _understoodGreeting
? '你能听懂问候,先把自我介绍说完整会更稳。'
: '先从问候和介绍名字开始,打好第一句的基础。';