Simplify lifecycle copy and parent folder selection

This commit is contained in:
Jaycelu 2026-06-29 14:06:45 +08:00
parent e5cf73db7f
commit cc1f1331bc
5 changed files with 16 additions and 8 deletions

View file

@ -73,7 +73,7 @@ Pausing is a scheduling decision and does not mark a note as mastered. Paused no
AI mastery exams are optional and require a configured model. They generate closed-book questions, grade answers against article-grounded criteria, show reference answers after submission, independently verify qualifying results, and require a delayed recheck before marking a note mastered. Confidence is derived from source-evidence coverage and agreement between the examiner and verifier, not from a model-provided percentage alone.
Every source article uses one longitudinal Markdown mastery record. Failed attempts, retries, and delayed rechecks append new `Attempt N` sections to the same file. The default folder is `Smart Review/Mastery Records`, and missing folders are created automatically. The folder path is relative to the vault root; use `00-Overview/Smart Review/Mastery Records` if you want the records under an existing folder.
Every source article uses one longitudinal Markdown mastery record. Failed attempts, retries, and delayed rechecks append new `Attempt N` sections to the same file. The default folder is `Smart Review/Mastery Records`, and missing folders are created automatically. In settings, choosing a parent folder such as `00-Overview` stores records under `00-Overview/Smart Review/Mastery Records`.
## AI Provider Setup and Network Disclosure

View file

@ -73,7 +73,7 @@ Smart Review Center 是插件内置的单一主页面,不需要额外安装 Ma
AI 掌握检验是可选能力,需要用户自行配置模型。它会生成保持、辨析、迁移和生成四类闭卷问题,按原文证据评分,提交后显示缺失点和参考答案,并对通过或临界结果执行独立复核。置信度来自原文证据覆盖和两次评分的一致性,不只采用模型自行报告的百分比。第一次通过后还需等待 30 天进行延迟复检。
每篇源文章只维护一份纵向掌握记录。失败、重试和延迟复检都会向同一 Markdown 文件追加 `Attempt N`。默认目录为 `Smart Review/Mastery Records`,目录不存在时自动创建。该路径相对当前 Vault 根目录;如果希望放在已有目录下,可以写成 `00-总览/Smart Review/Mastery Records`
每篇源文章只维护一份纵向掌握记录。失败、重试和延迟复检都会向同一 Markdown 文件追加 `Attempt N`。默认目录为 `Smart Review/Mastery Records`,目录不存在时自动创建。在设置中选择父目录,例如 `00-总览`,记录会保存到 `00-总览/Smart Review/Mastery Records`
## AI 模型配置与网络披露

View file

@ -175,8 +175,9 @@ const TRANSLATIONS = {
aiExaminerHeading: "AI mastery examiner",
aiExaminerDisclosure: "Optional. Only the current article and submitted answers are sent to the selected provider. API keys are stored in this plugin's local data.json and are not encrypted by Obsidian.",
masteryRecordsPath: "Mastery records folder",
masteryRecordsPathDesc: "Vault-relative folder. Example: Smart Review/Mastery Records or 00-Overview/Smart Review/Mastery Records. Missing folders are created automatically.",
masteryRecordsPathDesc: "Choose a parent folder for AI mastery records. Smart Review will use a Smart Review/Mastery Records subfolder.",
selectFolder: "Choose folder",
selectParentFolder: "Choose parent folder",
examinerConnection: "Examiner connection",
examinerConnectionDesc: "Generates questions and performs the first evidence-grounded grade.",
verifierConnection: "Verifier connection",
@ -423,8 +424,9 @@ const TRANSLATIONS = {
aiExaminerHeading: "AI 掌握考官",
aiExaminerDisclosure: "可选功能。只会把当前文章和本次回答发送到所选服务商。API Key 保存在插件本地 data.json 中Obsidian 不会对该文件加密。",
masteryRecordsPath: "掌握检验记录目录",
masteryRecordsPathDesc: "相对当前 Vault 根目录的文件夹。例如 Smart Review/Mastery Records 或 00-总览/Smart Review/Mastery Records。目录不存在时自动创建。",
masteryRecordsPathDesc: "选择保存 AI 掌握检验记录的父目录,插件会使用 Smart Review/Mastery Records 子目录。",
selectFolder: "选择目录",
selectParentFolder: "选择父目录",
examinerConnection: "考官连接",
examinerConnectionDesc: "负责生成问题并执行第一次基于原文证据的评分。",
verifierConnection: "复核连接",

View file

@ -273,7 +273,6 @@ export class ReviewCenterView extends ItemView {
const overview = container.createDiv({ cls: "smart-review-lifecycle-overview" });
const heading = overview.createDiv({ cls: "smart-review-lifecycle-heading" });
heading.createEl("h3", { text: t(this.plugin.locale, "lifecycleManagement") });
heading.createSpan({ cls: "smart-review-lifecycle-caption", text: t(this.plugin.locale, "lifecycleManagementDesc") });
const chips = overview.createDiv({ cls: "smart-review-lifecycle-chips" });
for (const group of groups) {

View file

@ -423,9 +423,9 @@ export class SmartReviewSettingTab extends PluginSettingTab {
await this.plugin.saveSettings();
});
})
.addButton((button) => button.setButtonText(t(locale, "selectFolder")).onClick(() => {
new FolderPickerModal(this.app, t(locale, "selectFolder"), async (folder) => {
this.plugin.settings.masteryRecordsPath = folder.path;
.addButton((button) => button.setButtonText(t(locale, "selectParentFolder")).onClick(() => {
new FolderPickerModal(this.app, t(locale, "selectParentFolder"), async (folder) => {
this.plugin.settings.masteryRecordsPath = buildMasteryRecordsPath(folder.path);
await this.plugin.saveSettings();
this.display();
}).open();
@ -653,6 +653,13 @@ function parsePositiveNumber(value: string, fallback: number): number {
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
}
function buildMasteryRecordsPath(parentPath: string): string {
const cleaned = parentPath.replace(/^\/+|\/+$/g, "");
return cleaned.length === 0
? DEFAULT_SETTINGS.masteryRecordsPath
: `${cleaned}/${DEFAULT_SETTINGS.masteryRecordsPath}`;
}
class FolderInputSuggest extends AbstractInputSuggest<TFolder> {
protected override getSuggestions(query: string): TFolder[] {
const normalized = query.trim().toLowerCase();