SECTION 02 · PROJECT ARCHIVE
项目档案
研究咨询、会议活动、内部运营三类项目的完整档案。项目结束后请及时填写知识提炼,将可复用知识同步至领域知识库。
知识归档提醒:项目结束后 1-2 周内,请完成「知识提炼」部分,并将核心发现同步至对应领域概览页,在案例一句话库中新增一条摘要。
// 共用:新建项目弹窗(Obsidian 原生 Modal,不依赖 window.prompt)
const { Modal } = require("obsidian");
 
class NewProjectModal extends Modal {
    constructor(app, folder, placeholder) {
        super(app);
        this.folder = folder;
        this.placeholder = placeholder;
    }
    onOpen() {
        const { contentEl } = this;
        contentEl.createEl("h3", { text: "新建项目" });
 
        const input = contentEl.createEl("input", { type: "text" });
        input.placeholder = this.placeholder;
        input.style.cssText = "width:100%;padding:6px 8px;margin:8px 0 12px;border-radius:4px;border:1px solid var(--background-modifier-border);font-size:14px;";
        input.focus();
 
        const hint = contentEl.createEl("div");
        hint.style.cssText = "font-size:12px;color:var(--text-muted);margin-bottom:12px;";
        hint.textContent = "新建后文件将保存至:" + this.folder;
 
        const confirmBtn = contentEl.createEl("button", { text: "创建并打开" });
        confirmBtn.style.cssText = "width:100%;background:var(--background-secondary);color:var(--text-normal);border:1px solid var(--background-modifier-border);border-radius:5px;padding:6px;font-size:14px;cursor:pointer;";
 
        const doCreate = async () => {
            const name = input.value.trim();
            if (!name) { input.focus(); return; }
            const tpl = app.vault.getAbstractFileByPath("Templates/项目概览模板.md");
            const content = tpl ? await app.vault.read(tpl) : "";
            const path = `${this.folder}/${name}.md`;
            try {
                const file = await app.vault.create(path, content);
                app.workspace.getLeaf().openFile(file);
                this.close();
            } catch (e) {
                new Notice("创建失败:" + e.message);
            }
        };
 
        confirmBtn.addEventListener("click", doCreate);
        input.addEventListener("keydown", e => { if (e.key === "Enter") doCreate(); });
    }
    onClose() { this.contentEl.empty(); }
}
 
// 注册到 window 供后续块复用
window._NewProjectModal = NewProjectModal;

研究咨询项目

TABLE 客户 AS "客户", 完成时间 AS "完成时间", 负责人 AS "负责人", 领域 AS "领域"
FROM "02_项目档案/研究咨询"
WHERE file.name != "_索引"
SORT 完成时间 DESC
const btn = dv.el("button", "+ 新建研究咨询项目", {attr: {style: "background:var(--background-secondary);color:var(--text-muted);border:1px solid var(--background-modifier-border);border-radius:5px;padding:4px 12px;font-size:0.82rem;cursor:pointer;"}});
btn.addEventListener("click", () => {
    new window._NewProjectModal(app, "02_项目档案/研究咨询", "YYYY_项目简称_客户简称").open();
});

会议活动项目

TABLE 客户 AS "主办方", 完成时间 AS "举办时间", 负责人 AS "负责人"
FROM "02_项目档案/会议活动"
WHERE file.name != "_索引"
SORT 完成时间 DESC
const btn = dv.el("button", "+ 新建会议活动项目", {attr: {style: "background:var(--background-secondary);color:var(--text-muted);border:1px solid var(--background-modifier-border);border-radius:5px;padding:4px 12px;font-size:0.82rem;cursor:pointer;"}});
btn.addEventListener("click", () => {
    new window._NewProjectModal(app, "02_项目档案/会议活动", "YYYY_活动简称_主办方简称").open();
});

内部运营项目

TABLE 完成时间 AS "时间", 负责人 AS "负责人"
FROM "02_项目档案/内部运营"
WHERE file.name != "_索引"
SORT 完成时间 DESC
const btn = dv.el("button", "+ 新建内部运营项目", {attr: {style: "background:var(--background-secondary);color:var(--text-muted);border:1px solid var(--background-modifier-border);border-radius:5px;padding:4px 12px;font-size:0.82rem;cursor:pointer;"}});
btn.addEventListener("click", () => {
    new window._NewProjectModal(app, "02_项目档案/内部运营", "YYYY_项目简称").open();
});

全部项目(按更新时间)

TABLE 项目类型 AS "类型", 客户 AS "客户", 完成时间 AS "完成", 负责人 AS "负责人"
FROM "02_项目档案"
WHERE file.name != "_索引"
SORT file.mtime DESC

原始文档索引(有网盘链接)

TABLE 领域 AS "领域", 客户 AS "客户", 完成时间 AS "完成",
  link(网盘链接, "📁 打开") AS "原始文档"
FROM "02_项目档案"
WHERE file.name != "_索引" AND 网盘链接 != ""
SORT 完成时间 DESC

待补充网盘链接

TABLE 项目类型 AS "类型", 客户 AS "客户", 完成时间 AS "完成", 负责人 AS "负责人"
FROM "02_项目档案"
WHERE file.name != "_索引" AND (网盘链接 = "" OR !网盘链接)
SORT 完成时间 DESC
📁 文档归档说明:原始文档(PPT/Word/PDF)存放于百度网盘,命名规范与填写方式参见 文档归档规范