skill-home 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/dist/cli/cmd_read.d.ts +3 -0
  2. package/dist/cli/cmd_read.d.ts.map +1 -0
  3. package/dist/cli/cmd_read.js +868 -0
  4. package/dist/cli/cmd_read.js.map +1 -0
  5. package/dist/fetch/db.d.ts +107 -0
  6. package/dist/fetch/db.d.ts.map +1 -0
  7. package/dist/fetch/db.js +433 -0
  8. package/dist/fetch/db.js.map +1 -0
  9. package/dist/fetch/domains.d.ts +51 -0
  10. package/dist/fetch/domains.d.ts.map +1 -0
  11. package/dist/fetch/domains.js +203 -0
  12. package/dist/fetch/domains.js.map +1 -0
  13. package/dist/fetch/errors.d.ts +11 -0
  14. package/dist/fetch/errors.d.ts.map +1 -0
  15. package/dist/fetch/errors.js +18 -0
  16. package/dist/fetch/errors.js.map +1 -0
  17. package/dist/fetch/index.d.ts +6 -0
  18. package/dist/fetch/index.d.ts.map +1 -0
  19. package/dist/fetch/index.js +5 -0
  20. package/dist/fetch/index.js.map +1 -0
  21. package/dist/fetch/paths.d.ts +6 -0
  22. package/dist/fetch/paths.d.ts.map +1 -0
  23. package/dist/fetch/paths.js +31 -0
  24. package/dist/fetch/paths.js.map +1 -0
  25. package/dist/help/index.d.ts +3 -0
  26. package/dist/help/index.d.ts.map +1 -0
  27. package/dist/help/index.js +2 -0
  28. package/dist/help/index.js.map +1 -0
  29. package/dist/help/lookup.d.ts +11 -0
  30. package/dist/help/lookup.d.ts.map +1 -0
  31. package/dist/help/lookup.js +52 -0
  32. package/dist/help/lookup.js.map +1 -0
  33. package/dist/index.d.ts +5 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +6 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/policy/care.d.ts +4 -0
  38. package/dist/policy/care.d.ts.map +1 -0
  39. package/dist/policy/care.js +12 -0
  40. package/dist/policy/care.js.map +1 -0
  41. package/dist/policy/category.d.ts +8 -0
  42. package/dist/policy/category.d.ts.map +1 -0
  43. package/dist/policy/category.js +44 -0
  44. package/dist/policy/category.js.map +1 -0
  45. package/dist/policy/index.d.ts +9 -0
  46. package/dist/policy/index.d.ts.map +1 -0
  47. package/dist/policy/index.js +6 -0
  48. package/dist/policy/index.js.map +1 -0
  49. package/dist/policy/item.d.ts +18 -0
  50. package/dist/policy/item.d.ts.map +1 -0
  51. package/dist/policy/item.js +81 -0
  52. package/dist/policy/item.js.map +1 -0
  53. package/dist/policy/ticket.d.ts +6 -0
  54. package/dist/policy/ticket.d.ts.map +1 -0
  55. package/dist/policy/ticket.js +25 -0
  56. package/dist/policy/ticket.js.map +1 -0
  57. package/dist/policy/wakewords.d.ts +15 -0
  58. package/dist/policy/wakewords.d.ts.map +1 -0
  59. package/dist/policy/wakewords.js +120 -0
  60. package/dist/policy/wakewords.js.map +1 -0
  61. package/dist/render/envelope.d.ts +6 -0
  62. package/dist/render/envelope.d.ts.map +1 -0
  63. package/dist/render/envelope.js +61 -0
  64. package/dist/render/envelope.js.map +1 -0
  65. package/dist/render/errors.d.ts +5 -0
  66. package/dist/render/errors.d.ts.map +1 -0
  67. package/dist/render/errors.js +10 -0
  68. package/dist/render/errors.js.map +1 -0
  69. package/dist/render/html.d.ts +13 -0
  70. package/dist/render/html.d.ts.map +1 -0
  71. package/dist/render/html.js +66 -0
  72. package/dist/render/html.js.map +1 -0
  73. package/dist/render/index.d.ts +8 -0
  74. package/dist/render/index.d.ts.map +1 -0
  75. package/dist/render/index.js +6 -0
  76. package/dist/render/index.js.map +1 -0
  77. package/dist/render/templates.d.ts +5 -0
  78. package/dist/render/templates.d.ts.map +1 -0
  79. package/dist/render/templates.js +68 -0
  80. package/dist/render/templates.js.map +1 -0
  81. package/dist/render/views.d.ts +83 -0
  82. package/dist/render/views.d.ts.map +1 -0
  83. package/dist/render/views.js +56 -0
  84. package/dist/render/views.js.map +1 -0
  85. package/package.json +32 -0
  86. package/templates/care_query.html +16 -0
  87. package/templates/care_receipt.html +16 -0
  88. package/templates/help.html +16 -0
  89. package/templates/inventory_records.html +16 -0
  90. package/templates/inventory_round.html +16 -0
  91. package/templates/item_detail.html +16 -0
  92. package/templates/item_receipt.html +16 -0
  93. package/templates/item_search.html +16 -0
  94. package/templates/item_update_receipt.html +16 -0
  95. package/templates/location_query.html +16 -0
  96. package/templates/location_receipt.html +16 -0
  97. package/templates/outfit_pick.html +16 -0
  98. package/templates/shopping_query.html +16 -0
  99. package/templates/shopping_receipt.html +16 -0
  100. package/templates/stats_alert.html +16 -0
  101. package/templates/stats_overview.html +16 -0
  102. package/templates/tag_query.html +16 -0
  103. package/templates/tag_receipt.html +16 -0
  104. package/templates/ticket_query.html +16 -0
  105. package/templates/ticket_receipt.html +16 -0
  106. package/templates/trip_receipt.html +16 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmd_read.js","sourceRoot":"","sources":["../../src/cli/cmd_read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { DatabaseSync } from 'node:sqlite';
2
+ export declare const SCHEMA_VERSION = 1;
3
+ export interface HomeItem {
4
+ id: number;
5
+ name: string;
6
+ category: string | null;
7
+ category_id: number | null;
8
+ owner: string;
9
+ purchase_price: number | null;
10
+ remark: string | null;
11
+ photo: string | null;
12
+ access_count: number;
13
+ last_accessed_at: string | null;
14
+ fixed_location: string | null;
15
+ created_at: string;
16
+ updated_at: string;
17
+ }
18
+ export interface HomeLocation {
19
+ id: number;
20
+ item_id: number;
21
+ location: string;
22
+ quantity: number;
23
+ reason: string | null;
24
+ location_status: string;
25
+ purchase_date: string | null;
26
+ expiration_date: string | null;
27
+ created_at: string;
28
+ updated_at: string;
29
+ }
30
+ export interface HomeDb {
31
+ db: DatabaseSync;
32
+ path: string;
33
+ initialized: boolean;
34
+ }
35
+ export declare function openHomeDb(dbPath: string): HomeDb;
36
+ export declare function closeHomeDb(handle: HomeDb): void;
37
+ export declare function addItem(handle: HomeDb, input: {
38
+ name: string;
39
+ category: string | null;
40
+ category_id: number | null;
41
+ owner?: string;
42
+ purchase_price?: number | null;
43
+ remark?: string | null;
44
+ photo?: string | null;
45
+ location: string;
46
+ quantity?: number;
47
+ location_status?: string;
48
+ purchase_date?: string | null;
49
+ expiration_date?: string | null;
50
+ reason?: string | null;
51
+ tags?: string[];
52
+ }): HomeItem;
53
+ export declare function getItemById(handle: HomeDb, id: number): HomeItem;
54
+ export declare function listLocationsByItem(handle: HomeDb, itemId: number): HomeLocation[];
55
+ export declare function listTagsByItem(handle: HomeDb, itemId: number): string[];
56
+ export interface SearchFilter {
57
+ name?: string;
58
+ location?: string;
59
+ tag?: string;
60
+ categoryId?: number;
61
+ status?: string;
62
+ limit?: number;
63
+ exact?: boolean;
64
+ }
65
+ export declare function searchItems(handle: HomeDb, f: SearchFilter): {
66
+ item: HomeItem;
67
+ locations: HomeLocation[];
68
+ tags: string[];
69
+ }[];
70
+ export declare function updateItem(handle: HomeDb, id: number, patch: {
71
+ name?: string;
72
+ category?: string | null;
73
+ category_id?: number | null;
74
+ owner?: string;
75
+ purchase_price?: number | null;
76
+ remark?: string | null;
77
+ photo?: string | null;
78
+ fixed_location?: string | null;
79
+ }): HomeItem;
80
+ export declare function adjustQuantity(handle: HomeDb, id: number, opts: {
81
+ plus?: number;
82
+ minus?: number;
83
+ set?: number;
84
+ location?: string;
85
+ }): HomeLocation[];
86
+ export declare function setLocationStatus(handle: HomeDb, id: number, status: string, location?: string): HomeLocation[];
87
+ export declare function moveLocation(handle: HomeDb, id: number, from: string | undefined, to: string): HomeLocation[];
88
+ export declare function setItemTags(handle: HomeDb, id: number, tags: string[]): string[];
89
+ export declare function listAllTags(handle: HomeDb): {
90
+ tag: string;
91
+ count: number;
92
+ }[];
93
+ export declare function mergeTags(handle: HomeDb, from: string, to: string): number;
94
+ export declare function listCategories(handle: HomeDb): {
95
+ id: number;
96
+ parent_id: number | null;
97
+ name: string;
98
+ }[];
99
+ export declare function getCategoryById(handle: HomeDb, id: number): {
100
+ id: number;
101
+ parent_id: number | null;
102
+ name: string;
103
+ };
104
+ export declare function encryptPassword(masterKey: string, plain: string): string;
105
+ export declare function decryptPassword(masterKey: string, stored: string): string;
106
+ export declare function assertMasterKey(masterKey: unknown): string;
107
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/fetch/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,433 @@
1
+ // 取数层·sqlite DB:老家 scripts/home_manager/db.py 对应。
2
+ // 基础 5 表 + D1 9 域表,幂等建表 + 8 顶级种子;缺失/损坏大声失败,不返空。
3
+ // 真实数据禁迁:仅 fresh DB(测试 tmp 隔离由 paths.ts 守卫)。
4
+ import { createCipheriv, createDecipheriv, randomBytes, scryptSync } from 'node:crypto';
5
+ import { DatabaseSync } from 'node:sqlite';
6
+ import { HomeFetchError } from './errors.js';
7
+ export const SCHEMA_VERSION = 1;
8
+ const TOPS = [
9
+ '食物与饮品', '衣物与穿戴', '家居与陈设', '工具与器材',
10
+ '数码与电子', '健康与医药', '文体与娱乐', '资产与凭证',
11
+ ];
12
+ function exec(db, sql) {
13
+ db.exec(sql);
14
+ }
15
+ export function openHomeDb(dbPath) {
16
+ if (typeof dbPath !== 'string' || dbPath.length === 0) {
17
+ throw new HomeFetchError('HOME_DB_MISSING', '居家 DB 路径未指定');
18
+ }
19
+ let db;
20
+ try {
21
+ db = new DatabaseSync(dbPath);
22
+ }
23
+ catch (e) {
24
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '居家 DB 打不开:' + dbPath, { cause: e });
25
+ }
26
+ let initialized = false;
27
+ try {
28
+ db.exec('PRAGMA journal_mode=WAL');
29
+ db.exec('PRAGMA busy_timeout=5000');
30
+ db.exec('PRAGMA foreign_keys=ON');
31
+ const before = db.prepare("SELECT count(*) AS c FROM sqlite_master WHERE type='table'").get().c;
32
+ exec(db, `CREATE TABLE IF NOT EXISTS items (
33
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
34
+ name TEXT NOT NULL, category TEXT, category_id INTEGER REFERENCES categories(id),
35
+ owner TEXT DEFAULT '使用者', purchase_price REAL, remark TEXT, photo TEXT,
36
+ access_count INTEGER NOT NULL DEFAULT 0, last_accessed_at TEXT,
37
+ fixed_location TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP, updated_at TEXT DEFAULT CURRENT_TIMESTAMP
38
+ )`);
39
+ exec(db, `CREATE TABLE IF NOT EXISTS item_locations (
40
+ id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER NOT NULL REFERENCES items(id) ON DELETE CASCADE,
41
+ location TEXT NOT NULL, quantity INTEGER NOT NULL DEFAULT 1, reason TEXT,
42
+ location_status TEXT NOT NULL DEFAULT '在家', purchase_date TEXT, expiration_date TEXT,
43
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP, updated_at TEXT DEFAULT CURRENT_TIMESTAMP
44
+ )`);
45
+ exec(db, `CREATE TABLE IF NOT EXISTS item_tags (
46
+ id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER NOT NULL REFERENCES items(id) ON DELETE CASCADE,
47
+ tag TEXT NOT NULL, UNIQUE(item_id, tag)
48
+ )`);
49
+ exec(db, `CREATE TABLE IF NOT EXISTS categories (
50
+ id INTEGER PRIMARY KEY AUTOINCREMENT, parent_id INTEGER REFERENCES categories(id) ON DELETE RESTRICT,
51
+ name TEXT NOT NULL, description TEXT, sort_order INTEGER DEFAULT 0, is_active INTEGER DEFAULT 1,
52
+ seed_key TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP, updated_at TEXT DEFAULT CURRENT_TIMESTAMP
53
+ )`);
54
+ exec(db, `CREATE TABLE IF NOT EXISTS accounts (
55
+ id INTEGER PRIMARY KEY AUTOINCREMENT, platform TEXT UNIQUE NOT NULL,
56
+ username TEXT NOT NULL DEFAULT '', encrypted_password TEXT NOT NULL DEFAULT '',
57
+ type TEXT NOT NULL DEFAULT '其他', created_at TEXT DEFAULT CURRENT_TIMESTAMP, updated_at TEXT DEFAULT CURRENT_TIMESTAMP
58
+ )`);
59
+ exec(db, `CREATE TABLE IF NOT EXISTS purchase_records (
60
+ id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER REFERENCES items(id) ON DELETE SET NULL,
61
+ date TEXT NOT NULL, price REAL, channel TEXT, scene TEXT,
62
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP
63
+ )`);
64
+ exec(db, `CREATE TABLE IF NOT EXISTS warranties (
65
+ id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER REFERENCES items(id) ON DELETE CASCADE,
66
+ kind TEXT NOT NULL DEFAULT '保修', start_date TEXT NOT NULL, duration_days INTEGER NOT NULL,
67
+ scene TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP
68
+ )`);
69
+ exec(db, `CREATE TABLE IF NOT EXISTS service_events (
70
+ id INTEGER PRIMARY KEY AUTOINCREMENT, warranty_id INTEGER NOT NULL REFERENCES warranties(id) ON DELETE CASCADE,
71
+ date TEXT NOT NULL, cost REAL, scene TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP
72
+ )`);
73
+ exec(db, `CREATE TABLE IF NOT EXISTS certificates (
74
+ id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT NOT NULL, expires_at TEXT NOT NULL,
75
+ holder TEXT, number TEXT, photo TEXT, scene TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP
76
+ )`);
77
+ exec(db, `CREATE TABLE IF NOT EXISTS family_members (
78
+ id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL UNIQUE, relation TEXT,
79
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP
80
+ )`);
81
+ exec(db, `CREATE TABLE IF NOT EXISTS borrow_records (
82
+ id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER REFERENCES items(id) ON DELETE SET NULL,
83
+ member TEXT NOT NULL, action TEXT NOT NULL DEFAULT '借出', date TEXT NOT NULL,
84
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP
85
+ )`);
86
+ exec(db, `CREATE TABLE IF NOT EXISTS shopping_items (
87
+ id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, quantity INTEGER NOT NULL DEFAULT 1,
88
+ routine TEXT, checked INTEGER NOT NULL DEFAULT 0, created_at TEXT DEFAULT CURRENT_TIMESTAMP
89
+ )`);
90
+ exec(db, `CREATE TABLE IF NOT EXISTS stock_thresholds (
91
+ id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER UNIQUE NOT NULL REFERENCES items(id) ON DELETE CASCADE,
92
+ threshold INTEGER NOT NULL, created_at TEXT DEFAULT CURRENT_TIMESTAMP
93
+ )`);
94
+ exec(db, `CREATE TABLE IF NOT EXISTS item_events (
95
+ id INTEGER PRIMARY KEY AUTOINCREMENT, item_id INTEGER REFERENCES items(id) ON DELETE CASCADE,
96
+ event TEXT NOT NULL, detail TEXT, created_at TEXT DEFAULT CURRENT_TIMESTAMP
97
+ )`);
98
+ exec(db, `CREATE TABLE IF NOT EXISTS inventory_records (
99
+ id INTEGER PRIMARY KEY AUTOINCREMENT, scope TEXT NOT NULL DEFAULT 'all', location TEXT,
100
+ total INTEGER NOT NULL DEFAULT 0, missing INTEGER NOT NULL DEFAULT 0, extra INTEGER NOT NULL DEFAULT 0,
101
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP
102
+ )`);
103
+ exec(db, `CREATE TABLE IF NOT EXISTS location_nodes (
104
+ id INTEGER PRIMARY KEY AUTOINCREMENT, path TEXT NOT NULL UNIQUE,
105
+ created_at TEXT DEFAULT CURRENT_TIMESTAMP
106
+ )`);
107
+ exec(db, 'CREATE INDEX IF NOT EXISTS idx_items_name ON items(name)');
108
+ exec(db, 'CREATE INDEX IF NOT EXISTS idx_items_category_id ON items(category_id)');
109
+ exec(db, 'CREATE INDEX IF NOT EXISTS idx_locs_item ON item_locations(item_id)');
110
+ exec(db, 'CREATE INDEX IF NOT EXISTS idx_locs_location ON item_locations(location)');
111
+ exec(db, 'CREATE INDEX IF NOT EXISTS idx_tags_item ON item_tags(item_id)');
112
+ exec(db, 'CREATE INDEX IF NOT EXISTS idx_tags_tag ON item_tags(tag)');
113
+ exec(db, 'CREATE INDEX IF NOT EXISTS idx_cats_parent ON categories(parent_id)');
114
+ const after = db.prepare("SELECT count(*) AS c FROM sqlite_master WHERE type='table'").get().c;
115
+ initialized = before === 0 && after > 0;
116
+ // 8 顶级种子(幂等按 name 去重;余按需增,不做 277 全量)。
117
+ for (const n of TOPS) {
118
+ const hit = db.prepare('SELECT id FROM categories WHERE parent_id IS NULL AND name=?').get(n);
119
+ if (!hit)
120
+ db.prepare('INSERT INTO categories (parent_id, name) VALUES (NULL, ?)').run(n);
121
+ }
122
+ }
123
+ catch (e) {
124
+ if (e instanceof HomeFetchError)
125
+ throw e;
126
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '居家 DB 初始化失败:' + dbPath, { cause: e });
127
+ }
128
+ return { db, path: dbPath, initialized };
129
+ }
130
+ export function closeHomeDb(handle) {
131
+ try {
132
+ handle.db.close();
133
+ }
134
+ catch { /* 关闭失败不谎报 */ }
135
+ }
136
+ function rowItem(r) { return r; }
137
+ // ---- 物品 ----
138
+ export function addItem(handle, input) {
139
+ const db = handle.db;
140
+ let id = 0;
141
+ try {
142
+ const r = db.prepare('INSERT INTO items (name, category, category_id, owner, purchase_price, remark, photo) VALUES (?,?,?,?,?,?,?) RETURNING id').get(input.name, input.category, input.category_id, input.owner ?? '使用者', input.purchase_price ?? null, input.remark ?? null, input.photo ?? null);
143
+ id = r.id;
144
+ db.prepare('INSERT INTO item_locations (item_id, location, quantity, reason, location_status, purchase_date, expiration_date) VALUES (?,?,?,?,?,?,?)').run(id, input.location, input.quantity ?? 1, input.reason ?? null, input.location_status ?? '在家', input.purchase_date ?? null, input.expiration_date ?? null);
145
+ for (const t of input.tags ?? []) {
146
+ const tag = t.trim();
147
+ if (tag)
148
+ db.prepare('INSERT OR IGNORE INTO item_tags (item_id, tag) VALUES (?,?)').run(id, tag);
149
+ }
150
+ db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'create', input.location);
151
+ db.prepare('INSERT OR IGNORE INTO location_nodes (path) VALUES (?)').run(input.location);
152
+ }
153
+ catch (e) {
154
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '物品写盘失败', { cause: e });
155
+ }
156
+ return getItemById(handle, id);
157
+ }
158
+ export function getItemById(handle, id) {
159
+ if (!Number.isInteger(id) || id <= 0)
160
+ throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '物品 id 非法:' + String(id));
161
+ let row = null;
162
+ try {
163
+ row = handle.db.prepare('SELECT * FROM items WHERE id=?').get(id);
164
+ }
165
+ catch (e) {
166
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '物品读取失败:' + id, { cause: e });
167
+ }
168
+ if (!row)
169
+ throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '无此物品:' + id);
170
+ return rowItem(row);
171
+ }
172
+ export function listLocationsByItem(handle, itemId) {
173
+ try {
174
+ return handle.db.prepare('SELECT * FROM item_locations WHERE item_id=? ORDER BY id').all(itemId);
175
+ }
176
+ catch (e) {
177
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '位置读取失败:' + itemId, { cause: e });
178
+ }
179
+ }
180
+ export function listTagsByItem(handle, itemId) {
181
+ try {
182
+ const rows = handle.db.prepare('SELECT tag FROM item_tags WHERE item_id=? ORDER BY tag').all(itemId);
183
+ return rows.map((r) => r.tag);
184
+ }
185
+ catch (e) {
186
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '标签读取失败:' + itemId, { cause: e });
187
+ }
188
+ }
189
+ export function searchItems(handle, f) {
190
+ const limit = f.limit ?? 20;
191
+ if (!Number.isInteger(limit) || limit <= 0 || limit > 200)
192
+ throw new HomeFetchError('HOME_BAD_QUERY', 'limit 须为 1~200 正整数');
193
+ let rows = [];
194
+ try {
195
+ if (f.tag !== undefined) {
196
+ rows = handle.db.prepare('SELECT i.* FROM items i JOIN item_tags t ON t.item_id=i.id WHERE t.tag=? ORDER BY i.name LIMIT ?').all(f.tag, limit);
197
+ }
198
+ else if (f.categoryId !== undefined) {
199
+ rows = handle.db.prepare('SELECT * FROM items WHERE category_id=? ORDER BY name LIMIT ?').all(f.categoryId, limit);
200
+ }
201
+ else if (f.name !== undefined && f.exact === true) {
202
+ rows = handle.db.prepare('SELECT * FROM items WHERE name=? ORDER BY name LIMIT ?').all(f.name, limit);
203
+ }
204
+ else if (f.name !== undefined) {
205
+ rows = handle.db.prepare('SELECT * FROM items WHERE name LIKE ? ORDER BY name LIMIT ?').all('%' + f.name + '%', limit);
206
+ }
207
+ else {
208
+ rows = handle.db.prepare('SELECT * FROM items ORDER BY name LIMIT ?').all(limit);
209
+ }
210
+ }
211
+ catch (e) {
212
+ if (e instanceof HomeFetchError)
213
+ throw e;
214
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '物品搜索失败', { cause: e });
215
+ }
216
+ let out = rows.map((item) => ({ item, locations: listLocationsByItem(handle, item.id), tags: listTagsByItem(handle, item.id) }));
217
+ if (f.location !== undefined) {
218
+ const needle = f.location;
219
+ out = out.filter((r) => r.locations.some((l) => l.location.includes(needle)));
220
+ }
221
+ if (f.status !== undefined) {
222
+ out = out.filter((r) => r.locations.some((l) => l.location_status === f.status));
223
+ }
224
+ // 访问计数:搜索命中即 +1(老家 access_count 语义简化版)。
225
+ try {
226
+ for (const r of out) {
227
+ handle.db.prepare("UPDATE items SET access_count=access_count+1, last_accessed_at=CURRENT_TIMESTAMP WHERE id=?").run(r.item.id);
228
+ r.item.access_count += 1;
229
+ }
230
+ }
231
+ catch { /* 计数失败不阻断取数 */ }
232
+ return out;
233
+ }
234
+ export function updateItem(handle, id, patch) {
235
+ getItemById(handle, id);
236
+ const sets = [];
237
+ const vals = [];
238
+ const allow = ['name', 'category', 'category_id', 'owner', 'purchase_price', 'remark', 'photo', 'fixed_location'];
239
+ for (const k of allow) {
240
+ const v = patch[k];
241
+ if (v !== undefined) {
242
+ sets.push(k + '=?');
243
+ vals.push(v);
244
+ }
245
+ }
246
+ if (sets.length) {
247
+ sets.push('updated_at=CURRENT_TIMESTAMP');
248
+ try {
249
+ handle.db.prepare('UPDATE items SET ' + sets.join(',') + ' WHERE id=?').run(...vals, id);
250
+ }
251
+ catch (e) {
252
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '物品更新失败:' + id, { cause: e });
253
+ }
254
+ try {
255
+ handle.db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'update', sets.join(','));
256
+ }
257
+ catch { /* 审计失败不阻断 */ }
258
+ }
259
+ return getItemById(handle, id);
260
+ }
261
+ export function adjustQuantity(handle, id, opts) {
262
+ const locs = listLocationsByItem(handle, id);
263
+ if (!locs.length)
264
+ throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '物品无位置记录:' + id);
265
+ let target = locs[0];
266
+ if (opts.location !== undefined) {
267
+ const hit = locs.find((l) => l.location === opts.location);
268
+ if (!hit)
269
+ throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '指定位置无记录:' + opts.location);
270
+ target = hit;
271
+ }
272
+ let next = target.quantity;
273
+ if (opts.set !== undefined)
274
+ next = opts.set;
275
+ else if (opts.plus !== undefined)
276
+ next = target.quantity + opts.plus;
277
+ else if (opts.minus !== undefined)
278
+ next = target.quantity - opts.minus;
279
+ if (!Number.isInteger(next) || next < 0)
280
+ throw new HomeFetchError('HOME_BAD_QUERY', '数量须为非负整数');
281
+ try {
282
+ if (next === 0) {
283
+ handle.db.prepare('DELETE FROM item_locations WHERE id=?').run(target.id);
284
+ handle.db.prepare('UPDATE item_locations SET location_status=? WHERE item_id=? AND location_status=?').run('已用完', id, '已用完');
285
+ }
286
+ else {
287
+ handle.db.prepare('UPDATE item_locations SET quantity=?, updated_at=CURRENT_TIMESTAMP WHERE id=?').run(next, target.id);
288
+ }
289
+ handle.db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'qty', String(target.quantity) + '->' + next);
290
+ }
291
+ catch (e) {
292
+ if (e instanceof HomeFetchError)
293
+ throw e;
294
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '数量变更失败:' + id, { cause: e });
295
+ }
296
+ return listLocationsByItem(handle, id);
297
+ }
298
+ export function setLocationStatus(handle, id, status, location) {
299
+ const locs = listLocationsByItem(handle, id);
300
+ if (!locs.length)
301
+ throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '物品无位置记录:' + id);
302
+ try {
303
+ if (location !== undefined) {
304
+ const hit = locs.find((l) => l.location === location);
305
+ if (!hit)
306
+ throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '指定位置无记录:' + location);
307
+ handle.db.prepare('UPDATE item_locations SET location_status=?, updated_at=CURRENT_TIMESTAMP WHERE id=?').run(status, hit.id);
308
+ }
309
+ else {
310
+ handle.db.prepare('UPDATE item_locations SET location_status=?, updated_at=CURRENT_TIMESTAMP WHERE item_id=?').run(status, id);
311
+ }
312
+ handle.db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'status', status);
313
+ }
314
+ catch (e) {
315
+ if (e instanceof HomeFetchError)
316
+ throw e;
317
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '状态变更失败:' + id, { cause: e });
318
+ }
319
+ return listLocationsByItem(handle, id);
320
+ }
321
+ export function moveLocation(handle, id, from, to) {
322
+ const locs = listLocationsByItem(handle, id);
323
+ if (!locs.length)
324
+ throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '物品无位置记录:' + id);
325
+ let target = locs[0];
326
+ if (from !== undefined) {
327
+ const hit = locs.find((l) => l.location === from);
328
+ if (!hit)
329
+ throw new HomeFetchError('HOME_ITEM_NOT_FOUND', '原位置无记录:' + from);
330
+ target = hit;
331
+ }
332
+ try {
333
+ handle.db.prepare('UPDATE item_locations SET location=?, updated_at=CURRENT_TIMESTAMP WHERE id=?').run(to, target.id);
334
+ handle.db.prepare('INSERT OR IGNORE INTO location_nodes (path) VALUES (?)').run(to);
335
+ handle.db.prepare('INSERT INTO item_events (item_id, event, detail) VALUES (?,?,?)').run(id, 'move', target.location + '->' + to);
336
+ }
337
+ catch (e) {
338
+ if (e instanceof HomeFetchError)
339
+ throw e;
340
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '位置移动失败:' + id, { cause: e });
341
+ }
342
+ return listLocationsByItem(handle, id);
343
+ }
344
+ export function setItemTags(handle, id, tags) {
345
+ getItemById(handle, id);
346
+ try {
347
+ handle.db.prepare('DELETE FROM item_tags WHERE item_id=?').run(id);
348
+ for (const t of tags) {
349
+ const tag = t.trim();
350
+ if (tag)
351
+ handle.db.prepare('INSERT OR IGNORE INTO item_tags (item_id, tag) VALUES (?,?)').run(id, tag);
352
+ }
353
+ }
354
+ catch (e) {
355
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '标签更新失败:' + id, { cause: e });
356
+ }
357
+ return listTagsByItem(handle, id);
358
+ }
359
+ // ---- 标签/分类 ----
360
+ export function listAllTags(handle) {
361
+ try {
362
+ return handle.db.prepare('SELECT tag, count(*) AS count FROM item_tags GROUP BY tag ORDER BY count DESC').all();
363
+ }
364
+ catch (e) {
365
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '标签总览失败', { cause: e });
366
+ }
367
+ }
368
+ export function mergeTags(handle, from, to) {
369
+ if (!from || !to || from === to)
370
+ throw new HomeFetchError('HOME_BAD_QUERY', '合标签须给不同 from/to');
371
+ try {
372
+ const rows = handle.db.prepare('SELECT item_id FROM item_tags WHERE tag=?').all(from);
373
+ let n = 0;
374
+ for (const r of rows) {
375
+ handle.db.prepare('INSERT OR IGNORE INTO item_tags (item_id, tag) VALUES (?,?)').run(r.item_id, to);
376
+ n++;
377
+ }
378
+ handle.db.prepare('DELETE FROM item_tags WHERE tag=?').run(from);
379
+ return n;
380
+ }
381
+ catch (e) {
382
+ if (e instanceof HomeFetchError)
383
+ throw e;
384
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '合标签失败', { cause: e });
385
+ }
386
+ }
387
+ export function listCategories(handle) {
388
+ try {
389
+ return handle.db.prepare('SELECT id, parent_id, name FROM categories WHERE is_active=1 ORDER BY parent_id, sort_order, id').all();
390
+ }
391
+ catch (e) {
392
+ throw new HomeFetchError('HOME_DB_UNREADABLE', '分类读取失败', { cause: e });
393
+ }
394
+ }
395
+ export function getCategoryById(handle, id) {
396
+ if (!Number.isInteger(id) || id <= 0)
397
+ throw new HomeFetchError('HOME_BAD_QUERY', '分类 id 非法:' + String(id));
398
+ const row = handle.db.prepare('SELECT id, parent_id, name FROM categories WHERE id=?').get(id);
399
+ if (!row)
400
+ throw new HomeFetchError('HOME_BAD_QUERY', '无此分类:' + id);
401
+ return row;
402
+ }
403
+ // ---- 账号(AES-256-CBC + master-key 门) ----
404
+ function deriveKey(masterKey) {
405
+ return scryptSync(masterKey, 'home-salt', 32);
406
+ }
407
+ export function encryptPassword(masterKey, plain) {
408
+ const key = deriveKey(masterKey);
409
+ const iv = randomBytes(16);
410
+ const c = createCipheriv('aes-256-cbc', key, iv);
411
+ const enc = Buffer.concat([c.update(plain, 'utf8'), c.final()]);
412
+ return iv.toString('hex') + ':' + enc.toString('hex');
413
+ }
414
+ export function decryptPassword(masterKey, stored) {
415
+ const parts = stored.split(':');
416
+ if (parts.length !== 2)
417
+ throw new HomeFetchError('HOME_ACCOUNT_MISSING', '账号密文损坏');
418
+ const key = deriveKey(masterKey);
419
+ try {
420
+ const d = createDecipheriv('aes-256-cbc', key, Buffer.from(parts[0], 'hex'));
421
+ return Buffer.concat([d.update(Buffer.from(parts[1], 'hex')), d.final()]).toString('utf8');
422
+ }
423
+ catch (e) {
424
+ throw new HomeFetchError('HOME_ACCOUNT_BAD_KEY', '主密钥不对或密文损坏', { cause: e });
425
+ }
426
+ }
427
+ export function assertMasterKey(masterKey) {
428
+ if (typeof masterKey !== 'string' || masterKey.length < 8) {
429
+ throw new HomeFetchError('HOME_ACCOUNT_BAD_KEY', 'master-key 须 ≥8 位(缺失阻断,不返空)');
430
+ }
431
+ return masterKey;
432
+ }
433
+ //# sourceMappingURL=db.js.map