galaxy-opc-plugin 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.
- package/README.md +166 -0
- package/index.ts +145 -0
- package/openclaw.plugin.json +17 -0
- package/package.json +47 -0
- package/skills/basic-crm/SKILL.md +81 -0
- package/skills/basic-finance/SKILL.md +100 -0
- package/skills/business-monitoring/SKILL.md +120 -0
- package/skills/company-lifecycle/SKILL.md +99 -0
- package/skills/company-registration/SKILL.md +80 -0
- package/skills/finance-tax/SKILL.md +150 -0
- package/skills/hr-assistant/SKILL.md +127 -0
- package/skills/investment-management/SKILL.md +101 -0
- package/skills/legal-assistant/SKILL.md +113 -0
- package/skills/media-ops/SKILL.md +101 -0
- package/skills/procurement-management/SKILL.md +91 -0
- package/skills/project-management/SKILL.md +125 -0
- package/src/api/companies.ts +193 -0
- package/src/api/dashboard.ts +25 -0
- package/src/api/routes.ts +14 -0
- package/src/db/index.ts +63 -0
- package/src/db/migrations.ts +67 -0
- package/src/db/schema.ts +518 -0
- package/src/db/sqlite-adapter.ts +366 -0
- package/src/opc/company-manager.ts +82 -0
- package/src/opc/context-injector.ts +186 -0
- package/src/opc/reminder-service.ts +289 -0
- package/src/opc/types.ts +330 -0
- package/src/opc/workspace-factory.ts +189 -0
- package/src/tools/acquisition-tool.ts +150 -0
- package/src/tools/asset-package-tool.ts +283 -0
- package/src/tools/finance-tool.ts +244 -0
- package/src/tools/hr-tool.ts +211 -0
- package/src/tools/investment-tool.ts +201 -0
- package/src/tools/legal-tool.ts +191 -0
- package/src/tools/lifecycle-tool.ts +251 -0
- package/src/tools/media-tool.ts +174 -0
- package/src/tools/monitoring-tool.ts +207 -0
- package/src/tools/opb-tool.ts +193 -0
- package/src/tools/opc-tool.ts +206 -0
- package/src/tools/procurement-tool.ts +191 -0
- package/src/tools/project-tool.ts +203 -0
- package/src/tools/schemas.ts +163 -0
- package/src/tools/staff-tool.ts +211 -0
- package/src/utils/tool-helper.ts +16 -0
- package/src/web/config-ui.ts +3501 -0
- package/src/web/landing-page.ts +269 -0
package/src/db/schema.ts
ADDED
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 星环OPC中心 — 数据库表结构定义
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export const OPC_TABLES = {
|
|
6
|
+
companies: `
|
|
7
|
+
CREATE TABLE IF NOT EXISTS opc_companies (
|
|
8
|
+
id TEXT PRIMARY KEY,
|
|
9
|
+
name TEXT NOT NULL,
|
|
10
|
+
industry TEXT NOT NULL DEFAULT '',
|
|
11
|
+
owner_name TEXT NOT NULL,
|
|
12
|
+
owner_contact TEXT NOT NULL DEFAULT '',
|
|
13
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
14
|
+
registered_capital REAL NOT NULL DEFAULT 0,
|
|
15
|
+
description TEXT NOT NULL DEFAULT '',
|
|
16
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
17
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
18
|
+
)
|
|
19
|
+
`,
|
|
20
|
+
|
|
21
|
+
employees: `
|
|
22
|
+
CREATE TABLE IF NOT EXISTS opc_employees (
|
|
23
|
+
id TEXT PRIMARY KEY,
|
|
24
|
+
company_id TEXT NOT NULL,
|
|
25
|
+
name TEXT NOT NULL,
|
|
26
|
+
role TEXT NOT NULL DEFAULT 'general',
|
|
27
|
+
skills TEXT NOT NULL DEFAULT '[]',
|
|
28
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
29
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
30
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
31
|
+
)
|
|
32
|
+
`,
|
|
33
|
+
|
|
34
|
+
transactions: `
|
|
35
|
+
CREATE TABLE IF NOT EXISTS opc_transactions (
|
|
36
|
+
id TEXT PRIMARY KEY,
|
|
37
|
+
company_id TEXT NOT NULL,
|
|
38
|
+
type TEXT NOT NULL,
|
|
39
|
+
category TEXT NOT NULL DEFAULT 'other',
|
|
40
|
+
amount REAL NOT NULL,
|
|
41
|
+
description TEXT NOT NULL DEFAULT '',
|
|
42
|
+
counterparty TEXT NOT NULL DEFAULT '',
|
|
43
|
+
transaction_date TEXT NOT NULL DEFAULT (date('now')),
|
|
44
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
45
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
46
|
+
)
|
|
47
|
+
`,
|
|
48
|
+
|
|
49
|
+
contacts: `
|
|
50
|
+
CREATE TABLE IF NOT EXISTS opc_contacts (
|
|
51
|
+
id TEXT PRIMARY KEY,
|
|
52
|
+
company_id TEXT NOT NULL,
|
|
53
|
+
name TEXT NOT NULL,
|
|
54
|
+
phone TEXT NOT NULL DEFAULT '',
|
|
55
|
+
email TEXT NOT NULL DEFAULT '',
|
|
56
|
+
company_name TEXT NOT NULL DEFAULT '',
|
|
57
|
+
tags TEXT NOT NULL DEFAULT '[]',
|
|
58
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
59
|
+
last_contact_date TEXT NOT NULL DEFAULT (date('now')),
|
|
60
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
61
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
62
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
63
|
+
)
|
|
64
|
+
`,
|
|
65
|
+
// ── Phase 2 表 ────────────────────────────────────────────
|
|
66
|
+
|
|
67
|
+
invoices: `
|
|
68
|
+
CREATE TABLE IF NOT EXISTS opc_invoices (
|
|
69
|
+
id TEXT PRIMARY KEY,
|
|
70
|
+
company_id TEXT NOT NULL,
|
|
71
|
+
invoice_number TEXT NOT NULL DEFAULT '',
|
|
72
|
+
type TEXT NOT NULL DEFAULT 'sales',
|
|
73
|
+
counterparty TEXT NOT NULL DEFAULT '',
|
|
74
|
+
amount REAL NOT NULL DEFAULT 0,
|
|
75
|
+
tax_rate REAL NOT NULL DEFAULT 0,
|
|
76
|
+
tax_amount REAL NOT NULL DEFAULT 0,
|
|
77
|
+
total_amount REAL NOT NULL DEFAULT 0,
|
|
78
|
+
status TEXT NOT NULL DEFAULT 'draft',
|
|
79
|
+
issue_date TEXT NOT NULL DEFAULT (date('now')),
|
|
80
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
81
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
82
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
83
|
+
)
|
|
84
|
+
`,
|
|
85
|
+
|
|
86
|
+
tax_filings: `
|
|
87
|
+
CREATE TABLE IF NOT EXISTS opc_tax_filings (
|
|
88
|
+
id TEXT PRIMARY KEY,
|
|
89
|
+
company_id TEXT NOT NULL,
|
|
90
|
+
period TEXT NOT NULL,
|
|
91
|
+
tax_type TEXT NOT NULL DEFAULT 'vat',
|
|
92
|
+
revenue REAL NOT NULL DEFAULT 0,
|
|
93
|
+
deductible REAL NOT NULL DEFAULT 0,
|
|
94
|
+
tax_amount REAL NOT NULL DEFAULT 0,
|
|
95
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
96
|
+
due_date TEXT NOT NULL DEFAULT '',
|
|
97
|
+
filed_date TEXT NOT NULL DEFAULT '',
|
|
98
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
99
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
100
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
101
|
+
)
|
|
102
|
+
`,
|
|
103
|
+
|
|
104
|
+
contracts: `
|
|
105
|
+
CREATE TABLE IF NOT EXISTS opc_contracts (
|
|
106
|
+
id TEXT PRIMARY KEY,
|
|
107
|
+
company_id TEXT NOT NULL,
|
|
108
|
+
title TEXT NOT NULL,
|
|
109
|
+
counterparty TEXT NOT NULL DEFAULT '',
|
|
110
|
+
contract_type TEXT NOT NULL DEFAULT '',
|
|
111
|
+
amount REAL NOT NULL DEFAULT 0,
|
|
112
|
+
start_date TEXT NOT NULL DEFAULT '',
|
|
113
|
+
end_date TEXT NOT NULL DEFAULT '',
|
|
114
|
+
status TEXT NOT NULL DEFAULT 'draft',
|
|
115
|
+
key_terms TEXT NOT NULL DEFAULT '',
|
|
116
|
+
risk_notes TEXT NOT NULL DEFAULT '',
|
|
117
|
+
reminder_date TEXT NOT NULL DEFAULT '',
|
|
118
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
119
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
120
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
121
|
+
)
|
|
122
|
+
`,
|
|
123
|
+
|
|
124
|
+
hr_records: `
|
|
125
|
+
CREATE TABLE IF NOT EXISTS opc_hr_records (
|
|
126
|
+
id TEXT PRIMARY KEY,
|
|
127
|
+
company_id TEXT NOT NULL,
|
|
128
|
+
employee_name TEXT NOT NULL,
|
|
129
|
+
position TEXT NOT NULL DEFAULT '',
|
|
130
|
+
salary REAL NOT NULL DEFAULT 0,
|
|
131
|
+
social_insurance REAL NOT NULL DEFAULT 0,
|
|
132
|
+
housing_fund REAL NOT NULL DEFAULT 0,
|
|
133
|
+
start_date TEXT NOT NULL DEFAULT '',
|
|
134
|
+
end_date TEXT NOT NULL DEFAULT '',
|
|
135
|
+
contract_type TEXT NOT NULL DEFAULT 'full_time',
|
|
136
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
137
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
138
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
139
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
140
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
141
|
+
)
|
|
142
|
+
`,
|
|
143
|
+
|
|
144
|
+
media_content: `
|
|
145
|
+
CREATE TABLE IF NOT EXISTS opc_media_content (
|
|
146
|
+
id TEXT PRIMARY KEY,
|
|
147
|
+
company_id TEXT NOT NULL,
|
|
148
|
+
title TEXT NOT NULL,
|
|
149
|
+
platform TEXT NOT NULL DEFAULT '',
|
|
150
|
+
content_type TEXT NOT NULL DEFAULT 'article',
|
|
151
|
+
content TEXT NOT NULL DEFAULT '',
|
|
152
|
+
status TEXT NOT NULL DEFAULT 'draft',
|
|
153
|
+
scheduled_date TEXT NOT NULL DEFAULT '',
|
|
154
|
+
published_date TEXT NOT NULL DEFAULT '',
|
|
155
|
+
tags TEXT NOT NULL DEFAULT '[]',
|
|
156
|
+
metrics TEXT NOT NULL DEFAULT '{}',
|
|
157
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
158
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
159
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
160
|
+
)
|
|
161
|
+
`,
|
|
162
|
+
|
|
163
|
+
projects: `
|
|
164
|
+
CREATE TABLE IF NOT EXISTS opc_projects (
|
|
165
|
+
id TEXT PRIMARY KEY,
|
|
166
|
+
company_id TEXT NOT NULL,
|
|
167
|
+
name TEXT NOT NULL,
|
|
168
|
+
description TEXT NOT NULL DEFAULT '',
|
|
169
|
+
status TEXT NOT NULL DEFAULT 'planning',
|
|
170
|
+
start_date TEXT NOT NULL DEFAULT '',
|
|
171
|
+
end_date TEXT NOT NULL DEFAULT '',
|
|
172
|
+
budget REAL NOT NULL DEFAULT 0,
|
|
173
|
+
spent REAL NOT NULL DEFAULT 0,
|
|
174
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
175
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
176
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
177
|
+
)
|
|
178
|
+
`,
|
|
179
|
+
|
|
180
|
+
tasks: `
|
|
181
|
+
CREATE TABLE IF NOT EXISTS opc_tasks (
|
|
182
|
+
id TEXT PRIMARY KEY,
|
|
183
|
+
project_id TEXT NOT NULL,
|
|
184
|
+
company_id TEXT NOT NULL,
|
|
185
|
+
title TEXT NOT NULL,
|
|
186
|
+
description TEXT NOT NULL DEFAULT '',
|
|
187
|
+
assignee TEXT NOT NULL DEFAULT '',
|
|
188
|
+
priority TEXT NOT NULL DEFAULT 'medium',
|
|
189
|
+
status TEXT NOT NULL DEFAULT 'todo',
|
|
190
|
+
due_date TEXT NOT NULL DEFAULT '',
|
|
191
|
+
hours_estimated REAL NOT NULL DEFAULT 0,
|
|
192
|
+
hours_actual REAL NOT NULL DEFAULT 0,
|
|
193
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
194
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
195
|
+
FOREIGN KEY (project_id) REFERENCES opc_projects(id),
|
|
196
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
197
|
+
)
|
|
198
|
+
`,
|
|
199
|
+
|
|
200
|
+
// ── Phase 3 表 ────────────────────────────────────────────
|
|
201
|
+
|
|
202
|
+
investment_rounds: `
|
|
203
|
+
CREATE TABLE IF NOT EXISTS opc_investment_rounds (
|
|
204
|
+
id TEXT PRIMARY KEY,
|
|
205
|
+
company_id TEXT NOT NULL,
|
|
206
|
+
round_name TEXT NOT NULL DEFAULT '',
|
|
207
|
+
amount REAL NOT NULL DEFAULT 0,
|
|
208
|
+
valuation_pre REAL NOT NULL DEFAULT 0,
|
|
209
|
+
valuation_post REAL NOT NULL DEFAULT 0,
|
|
210
|
+
status TEXT NOT NULL DEFAULT 'planning',
|
|
211
|
+
lead_investor TEXT NOT NULL DEFAULT '',
|
|
212
|
+
close_date TEXT NOT NULL DEFAULT '',
|
|
213
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
214
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
215
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
216
|
+
)
|
|
217
|
+
`,
|
|
218
|
+
|
|
219
|
+
investors: `
|
|
220
|
+
CREATE TABLE IF NOT EXISTS opc_investors (
|
|
221
|
+
id TEXT PRIMARY KEY,
|
|
222
|
+
round_id TEXT NOT NULL,
|
|
223
|
+
company_id TEXT NOT NULL,
|
|
224
|
+
name TEXT NOT NULL,
|
|
225
|
+
type TEXT NOT NULL DEFAULT 'individual',
|
|
226
|
+
amount REAL NOT NULL DEFAULT 0,
|
|
227
|
+
equity_percent REAL NOT NULL DEFAULT 0,
|
|
228
|
+
contact TEXT NOT NULL DEFAULT '',
|
|
229
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
230
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
231
|
+
FOREIGN KEY (round_id) REFERENCES opc_investment_rounds(id),
|
|
232
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
233
|
+
)
|
|
234
|
+
`,
|
|
235
|
+
|
|
236
|
+
services: `
|
|
237
|
+
CREATE TABLE IF NOT EXISTS opc_services (
|
|
238
|
+
id TEXT PRIMARY KEY,
|
|
239
|
+
company_id TEXT NOT NULL,
|
|
240
|
+
name TEXT NOT NULL,
|
|
241
|
+
category TEXT NOT NULL DEFAULT '',
|
|
242
|
+
provider TEXT NOT NULL DEFAULT '',
|
|
243
|
+
unit_price REAL NOT NULL DEFAULT 0,
|
|
244
|
+
billing_cycle TEXT NOT NULL DEFAULT 'monthly',
|
|
245
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
246
|
+
description TEXT NOT NULL DEFAULT '',
|
|
247
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
248
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
249
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
250
|
+
)
|
|
251
|
+
`,
|
|
252
|
+
|
|
253
|
+
procurement_orders: `
|
|
254
|
+
CREATE TABLE IF NOT EXISTS opc_procurement_orders (
|
|
255
|
+
id TEXT PRIMARY KEY,
|
|
256
|
+
service_id TEXT NOT NULL DEFAULT '',
|
|
257
|
+
company_id TEXT NOT NULL,
|
|
258
|
+
title TEXT NOT NULL,
|
|
259
|
+
amount REAL NOT NULL DEFAULT 0,
|
|
260
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
261
|
+
order_date TEXT NOT NULL DEFAULT (date('now')),
|
|
262
|
+
delivery_date TEXT NOT NULL DEFAULT '',
|
|
263
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
264
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
265
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
266
|
+
)
|
|
267
|
+
`,
|
|
268
|
+
|
|
269
|
+
milestones: `
|
|
270
|
+
CREATE TABLE IF NOT EXISTS opc_milestones (
|
|
271
|
+
id TEXT PRIMARY KEY,
|
|
272
|
+
company_id TEXT NOT NULL,
|
|
273
|
+
title TEXT NOT NULL,
|
|
274
|
+
category TEXT NOT NULL DEFAULT 'business',
|
|
275
|
+
target_date TEXT NOT NULL DEFAULT '',
|
|
276
|
+
completed_date TEXT NOT NULL DEFAULT '',
|
|
277
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
278
|
+
description TEXT NOT NULL DEFAULT '',
|
|
279
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
280
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
281
|
+
)
|
|
282
|
+
`,
|
|
283
|
+
|
|
284
|
+
lifecycle_events: `
|
|
285
|
+
CREATE TABLE IF NOT EXISTS opc_lifecycle_events (
|
|
286
|
+
id TEXT PRIMARY KEY,
|
|
287
|
+
company_id TEXT NOT NULL,
|
|
288
|
+
event_type TEXT NOT NULL DEFAULT '',
|
|
289
|
+
title TEXT NOT NULL,
|
|
290
|
+
event_date TEXT NOT NULL DEFAULT (date('now')),
|
|
291
|
+
impact TEXT NOT NULL DEFAULT '',
|
|
292
|
+
description TEXT NOT NULL DEFAULT '',
|
|
293
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
294
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
295
|
+
)
|
|
296
|
+
`,
|
|
297
|
+
|
|
298
|
+
metrics: `
|
|
299
|
+
CREATE TABLE IF NOT EXISTS opc_metrics (
|
|
300
|
+
id TEXT PRIMARY KEY,
|
|
301
|
+
company_id TEXT NOT NULL,
|
|
302
|
+
name TEXT NOT NULL,
|
|
303
|
+
value REAL NOT NULL DEFAULT 0,
|
|
304
|
+
unit TEXT NOT NULL DEFAULT '',
|
|
305
|
+
category TEXT NOT NULL DEFAULT '',
|
|
306
|
+
recorded_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
307
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
308
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
309
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
310
|
+
)
|
|
311
|
+
`,
|
|
312
|
+
|
|
313
|
+
alerts: `
|
|
314
|
+
CREATE TABLE IF NOT EXISTS opc_alerts (
|
|
315
|
+
id TEXT PRIMARY KEY,
|
|
316
|
+
company_id TEXT NOT NULL,
|
|
317
|
+
title TEXT NOT NULL,
|
|
318
|
+
severity TEXT NOT NULL DEFAULT 'info',
|
|
319
|
+
category TEXT NOT NULL DEFAULT '',
|
|
320
|
+
status TEXT NOT NULL DEFAULT 'active',
|
|
321
|
+
message TEXT NOT NULL DEFAULT '',
|
|
322
|
+
resolved_at TEXT NOT NULL DEFAULT '',
|
|
323
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
324
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
325
|
+
)
|
|
326
|
+
`,
|
|
327
|
+
|
|
328
|
+
tool_config: `
|
|
329
|
+
CREATE TABLE IF NOT EXISTS opc_tool_config (
|
|
330
|
+
key TEXT PRIMARY KEY,
|
|
331
|
+
value TEXT NOT NULL DEFAULT ''
|
|
332
|
+
)
|
|
333
|
+
`,
|
|
334
|
+
|
|
335
|
+
// ── 资金闭环关键业务表 ─────────────────────────────────────
|
|
336
|
+
|
|
337
|
+
acquisition_cases: `
|
|
338
|
+
CREATE TABLE IF NOT EXISTS opc_acquisition_cases (
|
|
339
|
+
id TEXT PRIMARY KEY,
|
|
340
|
+
company_id TEXT NOT NULL,
|
|
341
|
+
acquirer_id TEXT NOT NULL DEFAULT '',
|
|
342
|
+
case_type TEXT NOT NULL DEFAULT 'acquisition',
|
|
343
|
+
status TEXT NOT NULL DEFAULT 'evaluating',
|
|
344
|
+
trigger_reason TEXT NOT NULL DEFAULT '',
|
|
345
|
+
acquisition_price REAL NOT NULL DEFAULT 0,
|
|
346
|
+
loss_amount REAL NOT NULL DEFAULT 0,
|
|
347
|
+
tax_deduction REAL NOT NULL DEFAULT 0,
|
|
348
|
+
initiated_date TEXT NOT NULL DEFAULT (date('now')),
|
|
349
|
+
closed_date TEXT NOT NULL DEFAULT '',
|
|
350
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
351
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
352
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
353
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
354
|
+
)
|
|
355
|
+
`,
|
|
356
|
+
|
|
357
|
+
asset_packages: `
|
|
358
|
+
CREATE TABLE IF NOT EXISTS opc_asset_packages (
|
|
359
|
+
id TEXT PRIMARY KEY,
|
|
360
|
+
name TEXT NOT NULL,
|
|
361
|
+
description TEXT NOT NULL DEFAULT '',
|
|
362
|
+
status TEXT NOT NULL DEFAULT 'assembling',
|
|
363
|
+
total_valuation REAL NOT NULL DEFAULT 0,
|
|
364
|
+
company_count INTEGER NOT NULL DEFAULT 0,
|
|
365
|
+
sci_tech_certified INTEGER NOT NULL DEFAULT 0,
|
|
366
|
+
assembled_date TEXT NOT NULL DEFAULT '',
|
|
367
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
368
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
369
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
370
|
+
)
|
|
371
|
+
`,
|
|
372
|
+
|
|
373
|
+
asset_package_items: `
|
|
374
|
+
CREATE TABLE IF NOT EXISTS opc_asset_package_items (
|
|
375
|
+
id TEXT PRIMARY KEY,
|
|
376
|
+
package_id TEXT NOT NULL,
|
|
377
|
+
company_id TEXT NOT NULL,
|
|
378
|
+
acquisition_case_id TEXT NOT NULL DEFAULT '',
|
|
379
|
+
valuation REAL NOT NULL DEFAULT 0,
|
|
380
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
381
|
+
FOREIGN KEY (package_id) REFERENCES opc_asset_packages(id),
|
|
382
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
383
|
+
)
|
|
384
|
+
`,
|
|
385
|
+
|
|
386
|
+
ct_transfers: `
|
|
387
|
+
CREATE TABLE IF NOT EXISTS opc_ct_transfers (
|
|
388
|
+
id TEXT PRIMARY KEY,
|
|
389
|
+
package_id TEXT NOT NULL,
|
|
390
|
+
ct_company TEXT NOT NULL DEFAULT '',
|
|
391
|
+
transfer_price REAL NOT NULL DEFAULT 0,
|
|
392
|
+
status TEXT NOT NULL DEFAULT 'negotiating',
|
|
393
|
+
sci_loan_target REAL NOT NULL DEFAULT 0,
|
|
394
|
+
sci_loan_actual REAL NOT NULL DEFAULT 0,
|
|
395
|
+
transfer_date TEXT NOT NULL DEFAULT '',
|
|
396
|
+
loan_date TEXT NOT NULL DEFAULT '',
|
|
397
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
398
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
399
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
400
|
+
FOREIGN KEY (package_id) REFERENCES opc_asset_packages(id)
|
|
401
|
+
)
|
|
402
|
+
`,
|
|
403
|
+
|
|
404
|
+
financing_fees: `
|
|
405
|
+
CREATE TABLE IF NOT EXISTS opc_financing_fees (
|
|
406
|
+
id TEXT PRIMARY KEY,
|
|
407
|
+
transfer_id TEXT NOT NULL,
|
|
408
|
+
fee_rate REAL NOT NULL DEFAULT 0,
|
|
409
|
+
fee_amount REAL NOT NULL DEFAULT 0,
|
|
410
|
+
base_amount REAL NOT NULL DEFAULT 0,
|
|
411
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
412
|
+
invoiced INTEGER NOT NULL DEFAULT 0,
|
|
413
|
+
paid_date TEXT NOT NULL DEFAULT '',
|
|
414
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
415
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
416
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
417
|
+
FOREIGN KEY (transfer_id) REFERENCES opc_ct_transfers(id)
|
|
418
|
+
)
|
|
419
|
+
`,
|
|
420
|
+
|
|
421
|
+
// ── AI 员工岗位配置表 ─────────────────────────────────────
|
|
422
|
+
|
|
423
|
+
staff_config: `
|
|
424
|
+
CREATE TABLE IF NOT EXISTS opc_staff_config (
|
|
425
|
+
id TEXT PRIMARY KEY,
|
|
426
|
+
company_id TEXT NOT NULL,
|
|
427
|
+
role TEXT NOT NULL,
|
|
428
|
+
role_name TEXT NOT NULL DEFAULT '',
|
|
429
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
430
|
+
system_prompt TEXT NOT NULL DEFAULT '',
|
|
431
|
+
skills TEXT NOT NULL DEFAULT '[]',
|
|
432
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
433
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
434
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
435
|
+
UNIQUE(company_id, role),
|
|
436
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
437
|
+
)
|
|
438
|
+
`,
|
|
439
|
+
|
|
440
|
+
// ── OPB 画布表 ───────────────────────────────────────────────
|
|
441
|
+
|
|
442
|
+
opb_canvas: `
|
|
443
|
+
CREATE TABLE IF NOT EXISTS opc_opb_canvas (
|
|
444
|
+
id TEXT PRIMARY KEY,
|
|
445
|
+
company_id TEXT NOT NULL UNIQUE,
|
|
446
|
+
track TEXT NOT NULL DEFAULT '',
|
|
447
|
+
target_customer TEXT NOT NULL DEFAULT '',
|
|
448
|
+
pain_point TEXT NOT NULL DEFAULT '',
|
|
449
|
+
solution TEXT NOT NULL DEFAULT '',
|
|
450
|
+
unique_value TEXT NOT NULL DEFAULT '',
|
|
451
|
+
channels TEXT NOT NULL DEFAULT '',
|
|
452
|
+
revenue_model TEXT NOT NULL DEFAULT '',
|
|
453
|
+
cost_structure TEXT NOT NULL DEFAULT '',
|
|
454
|
+
key_resources TEXT NOT NULL DEFAULT '',
|
|
455
|
+
key_activities TEXT NOT NULL DEFAULT '',
|
|
456
|
+
key_partners TEXT NOT NULL DEFAULT '',
|
|
457
|
+
unfair_advantage TEXT NOT NULL DEFAULT '',
|
|
458
|
+
metrics TEXT NOT NULL DEFAULT '',
|
|
459
|
+
non_compete TEXT NOT NULL DEFAULT '',
|
|
460
|
+
scaling_strategy TEXT NOT NULL DEFAULT '',
|
|
461
|
+
notes TEXT NOT NULL DEFAULT '',
|
|
462
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
463
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
464
|
+
FOREIGN KEY (company_id) REFERENCES opc_companies(id)
|
|
465
|
+
)
|
|
466
|
+
`,
|
|
467
|
+
} as const;
|
|
468
|
+
|
|
469
|
+
export const OPC_INDEXES = [
|
|
470
|
+
"CREATE INDEX IF NOT EXISTS idx_employees_company ON opc_employees(company_id)",
|
|
471
|
+
"CREATE INDEX IF NOT EXISTS idx_transactions_company ON opc_transactions(company_id)",
|
|
472
|
+
"CREATE INDEX IF NOT EXISTS idx_transactions_date ON opc_transactions(transaction_date)",
|
|
473
|
+
"CREATE INDEX IF NOT EXISTS idx_transactions_type ON opc_transactions(type)",
|
|
474
|
+
"CREATE INDEX IF NOT EXISTS idx_contacts_company ON opc_contacts(company_id)",
|
|
475
|
+
"CREATE INDEX IF NOT EXISTS idx_companies_status ON opc_companies(status)",
|
|
476
|
+
// Phase 2
|
|
477
|
+
"CREATE INDEX IF NOT EXISTS idx_invoices_company ON opc_invoices(company_id)",
|
|
478
|
+
"CREATE INDEX IF NOT EXISTS idx_invoices_status ON opc_invoices(status)",
|
|
479
|
+
"CREATE INDEX IF NOT EXISTS idx_tax_filings_company ON opc_tax_filings(company_id)",
|
|
480
|
+
"CREATE INDEX IF NOT EXISTS idx_tax_filings_period ON opc_tax_filings(period)",
|
|
481
|
+
"CREATE INDEX IF NOT EXISTS idx_contracts_company ON opc_contracts(company_id)",
|
|
482
|
+
"CREATE INDEX IF NOT EXISTS idx_contracts_status ON opc_contracts(status)",
|
|
483
|
+
"CREATE INDEX IF NOT EXISTS idx_hr_records_company ON opc_hr_records(company_id)",
|
|
484
|
+
"CREATE INDEX IF NOT EXISTS idx_media_content_company ON opc_media_content(company_id)",
|
|
485
|
+
"CREATE INDEX IF NOT EXISTS idx_media_content_status ON opc_media_content(status)",
|
|
486
|
+
"CREATE INDEX IF NOT EXISTS idx_projects_company ON opc_projects(company_id)",
|
|
487
|
+
"CREATE INDEX IF NOT EXISTS idx_tasks_project ON opc_tasks(project_id)",
|
|
488
|
+
"CREATE INDEX IF NOT EXISTS idx_tasks_company ON opc_tasks(company_id)",
|
|
489
|
+
"CREATE INDEX IF NOT EXISTS idx_tasks_status ON opc_tasks(status)",
|
|
490
|
+
// Phase 3
|
|
491
|
+
"CREATE INDEX IF NOT EXISTS idx_investment_rounds_company ON opc_investment_rounds(company_id)",
|
|
492
|
+
"CREATE INDEX IF NOT EXISTS idx_investment_rounds_status ON opc_investment_rounds(status)",
|
|
493
|
+
"CREATE INDEX IF NOT EXISTS idx_investors_round ON opc_investors(round_id)",
|
|
494
|
+
"CREATE INDEX IF NOT EXISTS idx_investors_company ON opc_investors(company_id)",
|
|
495
|
+
"CREATE INDEX IF NOT EXISTS idx_services_company ON opc_services(company_id)",
|
|
496
|
+
"CREATE INDEX IF NOT EXISTS idx_services_status ON opc_services(status)",
|
|
497
|
+
"CREATE INDEX IF NOT EXISTS idx_procurement_orders_company ON opc_procurement_orders(company_id)",
|
|
498
|
+
"CREATE INDEX IF NOT EXISTS idx_procurement_orders_status ON opc_procurement_orders(status)",
|
|
499
|
+
"CREATE INDEX IF NOT EXISTS idx_milestones_company ON opc_milestones(company_id)",
|
|
500
|
+
"CREATE INDEX IF NOT EXISTS idx_milestones_status ON opc_milestones(status)",
|
|
501
|
+
"CREATE INDEX IF NOT EXISTS idx_lifecycle_events_company ON opc_lifecycle_events(company_id)",
|
|
502
|
+
"CREATE INDEX IF NOT EXISTS idx_lifecycle_events_date ON opc_lifecycle_events(event_date)",
|
|
503
|
+
"CREATE INDEX IF NOT EXISTS idx_metrics_company ON opc_metrics(company_id)",
|
|
504
|
+
"CREATE INDEX IF NOT EXISTS idx_alerts_company ON opc_alerts(company_id)",
|
|
505
|
+
// 资金闭环表索引
|
|
506
|
+
"CREATE INDEX IF NOT EXISTS idx_acquisition_cases_company ON opc_acquisition_cases(company_id)",
|
|
507
|
+
"CREATE INDEX IF NOT EXISTS idx_acquisition_cases_status ON opc_acquisition_cases(status)",
|
|
508
|
+
"CREATE INDEX IF NOT EXISTS idx_asset_packages_status ON opc_asset_packages(status)",
|
|
509
|
+
"CREATE INDEX IF NOT EXISTS idx_asset_package_items_package ON opc_asset_package_items(package_id)",
|
|
510
|
+
"CREATE INDEX IF NOT EXISTS idx_asset_package_items_company ON opc_asset_package_items(company_id)",
|
|
511
|
+
"CREATE INDEX IF NOT EXISTS idx_ct_transfers_package ON opc_ct_transfers(package_id)",
|
|
512
|
+
"CREATE INDEX IF NOT EXISTS idx_ct_transfers_status ON opc_ct_transfers(status)",
|
|
513
|
+
"CREATE INDEX IF NOT EXISTS idx_financing_fees_transfer ON opc_financing_fees(transfer_id)",
|
|
514
|
+
"CREATE INDEX IF NOT EXISTS idx_financing_fees_status ON opc_financing_fees(status)",
|
|
515
|
+
"CREATE INDEX IF NOT EXISTS idx_staff_config_company ON opc_staff_config(company_id)",
|
|
516
|
+
// OPB Canvas
|
|
517
|
+
"CREATE INDEX IF NOT EXISTS idx_opb_canvas_company ON opc_opb_canvas(company_id)",
|
|
518
|
+
];
|