feat: 结题报告初稿助手首版 v1.0.1(draft-closing-report-default)
All checks were successful
技能自动化发布 / release (push) Successful in 6s

This commit is contained in:
chenfuqiang
2026-09-13 16:04:01 +08:00
commit 7b24521b43
206 changed files with 29892 additions and 0 deletions

42
tests/test_db_smoke.py Normal file
View File

@@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
"""init_db:幂等创建元数据表与本技能业务表。"""
from __future__ import annotations
import unittest
from _support import IsolatedDataRoot
_BUSINESS_TABLES = {"closing_projects", "achievements", "expense_items", "report_drafts"}
class TestDbSmoke(unittest.TestCase):
def test_init_db_idempotent_metadata_only(self) -> None:
with IsolatedDataRoot():
from db.connection import get_conn, init_db
from db.display_metadata import METADATA_TABLES, iter_user_tables
init_db()
init_db()
conn = get_conn()
try:
cur = conn.cursor()
cur.execute(
"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'"
)
tables = {str(row[0]) for row in cur.fetchall()}
self.assertIn("_jiangchang_tables", tables)
self.assertIn("_jiangchang_columns", tables)
self.assertNotIn("task_logs", tables)
self.assertEqual(
sorted(iter_user_tables(cur)),
sorted(_BUSINESS_TABLES),
)
leftover = tables - METADATA_TABLES - _BUSINESS_TABLES
self.assertEqual(leftover, set())
finally:
conn.close()
if __name__ == "__main__":
unittest.main()