首次运行数据播种与引导流程
一、适用场景
全新部署 / 空库首次启动,需要自动播种基础数据:账户、收支分类、制度文档登记、管理员密码、AI 索引源、配套表单。核心要求:幂等——只跑一次,库非空即跳过,绝不重复插。
二、操作步骤
seed()先connect()数accounts/categories/documents三表计数,三者全 0 才播种(见seed.pyL9-14)。- 账户(L16-18):现金 / 银行卡 / 支付宝 / 微信钱包(
op=0)。 - 分类(L20-24):收入 3(工资 / 理财收益 / 其他收入)+ 支出 6(餐饮 / 交通 / 教育 / 医疗 / 居家 / 其他支出)。
- documents(L26-44):总册 / 总册速查 / 财务汇编 / CW-01 / DA-02 五份(字段
code,title,domain,summary,source_path)。 - 管理员密码(L46-48):
ADMIN_PASSWORD and not has_admin_password()才写——激活登录网关,且不覆盖既有密码。 - 制度 Word 体检(L52-58):
instlib.word_status()打印已识别/缺项,缺失在"制度文件对照"页列出。 seed_inst_docs()(L65):登记 Word 原件为 AI 索引源。seed_form_data()(L77):调db.sync_auto_forms()按指纹自动重导配套表单。
三、代码锚点
seed.pyL9seed()、L16 账户、L20 分类、L26 documents、L47 密码守卫、L65seed_inst_docs、L77seed_form_datadb.sync_auto_forms(指纹重导,见 配套表单指纹重导纪律)
四、注意边界
- 幂等是铁律:计数 >0 绝不重复播种,否则重复账户/分类主键冲突或脏数据。
- 配套表单改由
sync_auto_forms指纹驱动,seed 不再一次性固化错源数据(根治历史 bug)。 - 密码只在"配置提供 且 库内无"时才写,改密码后 seed 不会覆盖。
五、反例避雷
- ❶ seed 每次启动都插 → 重复主键 / 脏数据。
- ❷ 把母本表单数据写死在 seed → 改母本要改代码(已用
sync_auto_forms根治)。 - ❸ 未判
has_admin_password直接写 → 运维改密码后被 seed 覆盖。
六、关联笔记
- 配套表单指纹重导(ledgers/forms_auto):一数一源,母本变才重导。
- Word母本驱动的表单自动生成流程(02 技术):母本解析来源。
七、实战战绩 / 版本记录
- 空库首启一键成型,制度体检即时可见缺项;AI 索引源 / 配套表单随首启自动就绪。
- v1.0.0(2026-10-03):
seed.py入栈归档。