maybeai-sheet-cli 0.5.0__tar.gz → 0.6.0__tar.gz
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.
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/PKG-INFO +26 -5
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/README.md +25 -4
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/import_engine_local_report.html +74 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/llm_cost_import_auto.json +479 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/llm_cost_import_mixed_forced.json +0 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/llm_cost_list_worksheets.json +355 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/llm_cost_read_detail_A1_T5.json +549 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/summary.json +79 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/yunling_import_auto.json +602 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/yunling_list_worksheets.json +598 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-local-20260702-150800/yunling_read_T00_A1_F5.json +343 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/import_auto.json +587 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/list_worksheets.json +112 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/merged_two_tables_report.html +12 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/read_merged_1_A1_T5.json +373 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/read_merged_2_A1_T5.json +373 -0
- maybeai_sheet_cli-0.6.0/docs/superpowers/reports/import-engine-merged-20260702-153018/summary.json +145 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/pyproject.toml +1 -1
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/__init__.py +1 -1
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/db_table.py +156 -5
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/workbook.py +56 -7
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/endpoints.py +3 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/tests/test_cli.py +75 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/tests/test_endpoints.py +3 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/tests/test_two_engine_cli.py +109 -4
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/uv.lock +1 -1
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/.claude/settings.local.json +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/.gitignore +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/CLAUDE.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/cli-packaging-plan.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/cli-plan.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/agent-friendly-command-tree.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/operation-plan-cli-no-dsl-plan.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-agent-friendly-command-tree.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-agent-friendly-phase-2-routes.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-agent-friendly-phase-2.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-be-new-backend-contracts-plan.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-deferred-table-routing-plan.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-excel-worksheet-multi-table-plan.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/plans/2026-07-01-mbs-two-engine-command-refactor.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/2026-07-01-mbs-deferred-routing-e2e-report.html +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/2026-07-01-phase1-test-review.html +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/2026-07-01-phase2-test-review.html +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-130317-excel-table-empty-range-e2e.html +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-130447-excel-table-empty-range-e2e.html +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-130556-excel-table-empty-range-e2e.html +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-230803-local-cli-endpoint-verification.html +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/20260701-232511-local7011-cli-table-metadata-verification.html +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/e2e-payloads-20260701-130317.json +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/e2e-payloads-20260701-130447.json +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/e2e-payloads-20260701-130556.json +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/multi-table-empty-range-20260701-130317.xlsx +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/superpowers/reports/e2e-artifacts/openpyxl-multi-table-empty-range-20260701-130447.xlsx +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/docs/verification-matrix-fallback.md +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/cli.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/client.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/__init__.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/_phase2.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/cell.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/column.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/excel_table.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/excel_worksheet.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/file.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/formula.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/history.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/range.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/raw.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/row.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/share.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/sheet.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/style.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/table.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/commands/worksheet.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/config.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/errors.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/formatters.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/models/__init__.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/models/share.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/models/sheet.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/models/workbook.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/options.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/protocol.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/resolver.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/table_resolver.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/src/maybeai_sheet/update.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/tests/test_formatters.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/tests/test_phase2_cli.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/tests/test_resolver.py +0 -0
- {maybeai_sheet_cli-0.5.0 → maybeai_sheet_cli-0.6.0}/tests/test_update.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: maybeai-sheet-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: CLI for common MaybeAI spreadsheet operations
|
|
5
5
|
Project-URL: Homepage, https://github.com/OmniMCP-AI/maybeai-sheet-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/OmniMCP-AI/maybeai-sheet-cli
|
|
@@ -135,6 +135,13 @@ Import a large table-like `.xlsx` into SheetTable/PG:
|
|
|
135
135
|
mbs workbook import ./large-table.xlsx --engine postgres
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
+
Import a mixed workbook and let the backend select engines per worksheet:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
mbs workbook import ./mixed-workbook.xlsx --engine auto
|
|
142
|
+
mbs workbook import ./mixed-workbook.xlsx --engine "postgres,excel,excel,postgres"
|
|
143
|
+
```
|
|
144
|
+
|
|
138
145
|
Append rows and verify:
|
|
139
146
|
|
|
140
147
|
```bash
|
|
@@ -252,9 +259,9 @@ mbs
|
|
|
252
259
|
| |- lineage API Trace cell/range lineage.
|
|
253
260
|
│
|
|
254
261
|
├── db_worksheet(AKA db_table)
|
|
255
|
-
│ ├── create
|
|
256
|
-
│ ├── update
|
|
257
|
-
│ ├── delete
|
|
262
|
+
│ ├── create PLAN Create a PG-backed table from JSON row data.
|
|
263
|
+
│ ├── update PLAN Update PG-backed rows from JSON row data.
|
|
264
|
+
│ ├── delete PLAN Delete PG-backed rows/table; requires --yes unless --dry-run.
|
|
258
265
|
│ ├── schema API Infer table schema from a bounded PG read.
|
|
259
266
|
│ ├── sample API Return bounded table sample rows.
|
|
260
267
|
│ ├── read API Read PG-backed table rows.
|
|
@@ -363,8 +370,17 @@ mbs excel-table style columns-width --doc-id abc123 --worksheet-name Orders --ta
|
|
|
363
370
|
mbs db-table metadata --doc-id abc123 --name orders-large # API
|
|
364
371
|
mbs db-table schema --doc-id abc123 --name orders-large # API
|
|
365
372
|
mbs db-table sample --doc-id abc123 --name orders-large --limit 50 # API
|
|
366
|
-
mbs db-table read --doc-id abc123 --name orders-large --limit
|
|
373
|
+
mbs db-table read --doc-id abc123 --name orders-large --limit 100 --offset 200 # API
|
|
367
374
|
mbs db-table insert --doc-id abc123 --name orders-large --rows rows.json # API
|
|
375
|
+
mbs db-table create --doc-id abc123 --name Orders --rows orders.json # PLAN
|
|
376
|
+
mbs db-table update --doc-id abc123 --name Orders --key order_id --rows orders_patch.json # PLAN
|
|
377
|
+
mbs db-table update --doc-id abc123 --name Orders --row-index 42 --rows row_patch.json # PLAN
|
|
378
|
+
mbs db-table update --doc-id abc123 --name Orders --where '{"status":"open"}' --rows status_patch.json # PLAN
|
|
379
|
+
mbs db-table update --doc-id abc123 --name Orders --column-index 3 --column-name status # PLAN
|
|
380
|
+
mbs db-table delete --doc-id abc123 --name Orders --where '{"order_id":"A1"}' --yes # PLAN
|
|
381
|
+
mbs db-table delete --doc-id abc123 --name Orders --row-index 42 --count 10 --yes # PLAN
|
|
382
|
+
mbs db-table delete --doc-id abc123 --name Orders --column-index 3 --yes # PLAN
|
|
383
|
+
mbs db-table delete --doc-id abc123 --name Orders --column-name status --yes # PLAN
|
|
368
384
|
|
|
369
385
|
# row
|
|
370
386
|
mbs excel-worksheet row insert --doc-id abc123 --worksheet-name Actuals --row 10 --count 2 # API
|
|
@@ -404,6 +420,11 @@ mbs version restore --doc-id abc123 --version-id v42 --dry-run # PLAN
|
|
|
404
420
|
mbs share create --doc-id abc123 --email teammate@example.com --role viewer # API
|
|
405
421
|
```
|
|
406
422
|
|
|
423
|
+
`db-table read`, `schema`, and `sample` keep reads bounded. The default read
|
|
424
|
+
limit is 100 rows, and `--limit` / `--offset` are capped at 10,000 to avoid
|
|
425
|
+
accidental large PG scans. Use a keyset-style backend contract for deeper
|
|
426
|
+
pagination when it becomes available.
|
|
427
|
+
|
|
407
428
|
Refactor planning is tracked separately from this README:
|
|
408
429
|
`docs/superpowers/plans/2026-07-01-mbs-two-engine-command-refactor.md`.
|
|
409
430
|
|
|
@@ -111,6 +111,13 @@ Import a large table-like `.xlsx` into SheetTable/PG:
|
|
|
111
111
|
mbs workbook import ./large-table.xlsx --engine postgres
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
+
Import a mixed workbook and let the backend select engines per worksheet:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
mbs workbook import ./mixed-workbook.xlsx --engine auto
|
|
118
|
+
mbs workbook import ./mixed-workbook.xlsx --engine "postgres,excel,excel,postgres"
|
|
119
|
+
```
|
|
120
|
+
|
|
114
121
|
Append rows and verify:
|
|
115
122
|
|
|
116
123
|
```bash
|
|
@@ -228,9 +235,9 @@ mbs
|
|
|
228
235
|
| |- lineage API Trace cell/range lineage.
|
|
229
236
|
│
|
|
230
237
|
├── db_worksheet(AKA db_table)
|
|
231
|
-
│ ├── create
|
|
232
|
-
│ ├── update
|
|
233
|
-
│ ├── delete
|
|
238
|
+
│ ├── create PLAN Create a PG-backed table from JSON row data.
|
|
239
|
+
│ ├── update PLAN Update PG-backed rows from JSON row data.
|
|
240
|
+
│ ├── delete PLAN Delete PG-backed rows/table; requires --yes unless --dry-run.
|
|
234
241
|
│ ├── schema API Infer table schema from a bounded PG read.
|
|
235
242
|
│ ├── sample API Return bounded table sample rows.
|
|
236
243
|
│ ├── read API Read PG-backed table rows.
|
|
@@ -339,8 +346,17 @@ mbs excel-table style columns-width --doc-id abc123 --worksheet-name Orders --ta
|
|
|
339
346
|
mbs db-table metadata --doc-id abc123 --name orders-large # API
|
|
340
347
|
mbs db-table schema --doc-id abc123 --name orders-large # API
|
|
341
348
|
mbs db-table sample --doc-id abc123 --name orders-large --limit 50 # API
|
|
342
|
-
mbs db-table read --doc-id abc123 --name orders-large --limit
|
|
349
|
+
mbs db-table read --doc-id abc123 --name orders-large --limit 100 --offset 200 # API
|
|
343
350
|
mbs db-table insert --doc-id abc123 --name orders-large --rows rows.json # API
|
|
351
|
+
mbs db-table create --doc-id abc123 --name Orders --rows orders.json # PLAN
|
|
352
|
+
mbs db-table update --doc-id abc123 --name Orders --key order_id --rows orders_patch.json # PLAN
|
|
353
|
+
mbs db-table update --doc-id abc123 --name Orders --row-index 42 --rows row_patch.json # PLAN
|
|
354
|
+
mbs db-table update --doc-id abc123 --name Orders --where '{"status":"open"}' --rows status_patch.json # PLAN
|
|
355
|
+
mbs db-table update --doc-id abc123 --name Orders --column-index 3 --column-name status # PLAN
|
|
356
|
+
mbs db-table delete --doc-id abc123 --name Orders --where '{"order_id":"A1"}' --yes # PLAN
|
|
357
|
+
mbs db-table delete --doc-id abc123 --name Orders --row-index 42 --count 10 --yes # PLAN
|
|
358
|
+
mbs db-table delete --doc-id abc123 --name Orders --column-index 3 --yes # PLAN
|
|
359
|
+
mbs db-table delete --doc-id abc123 --name Orders --column-name status --yes # PLAN
|
|
344
360
|
|
|
345
361
|
# row
|
|
346
362
|
mbs excel-worksheet row insert --doc-id abc123 --worksheet-name Actuals --row 10 --count 2 # API
|
|
@@ -380,6 +396,11 @@ mbs version restore --doc-id abc123 --version-id v42 --dry-run # PLAN
|
|
|
380
396
|
mbs share create --doc-id abc123 --email teammate@example.com --role viewer # API
|
|
381
397
|
```
|
|
382
398
|
|
|
399
|
+
`db-table read`, `schema`, and `sample` keep reads bounded. The default read
|
|
400
|
+
limit is 100 rows, and `--limit` / `--offset` are capped at 10,000 to avoid
|
|
401
|
+
accidental large PG scans. Use a keyset-style backend contract for deeper
|
|
402
|
+
pagination when it becomes available.
|
|
403
|
+
|
|
383
404
|
Refactor planning is tracked separately from this README:
|
|
384
405
|
`docs/superpowers/plans/2026-07-01-mbs-two-engine-command-refactor.md`.
|
|
385
406
|
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>本地导入引擎验证报告</title>
|
|
6
|
+
<style>
|
|
7
|
+
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;margin:24px;color:#111827;line-height:1.45}
|
|
8
|
+
h1{font-size:24px} h2{font-size:18px;margin-top:28px}
|
|
9
|
+
table{border-collapse:collapse;width:100%;font-size:13px}th,td{border:1px solid #d1d5db;padding:6px;text-align:left;vertical-align:top}th{background:#f3f4f6}
|
|
10
|
+
.status-pass{color:#166534;background:#dcfce7;font-weight:700}.status-fail{color:#991b1b;background:#fee2e2;font-weight:700}.status-warn,.status-skip{color:#92400e;background:#fef3c7;font-weight:700}
|
|
11
|
+
code,pre{background:#f3f4f6;padding:2px 4px;border-radius:4px}pre{padding:12px;overflow:auto}
|
|
12
|
+
.human-needed{border-left:4px solid #d97706;padding-left:12px;background:#fffbeb}
|
|
13
|
+
</style>
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<h1>本地导入引擎验证报告</h1>
|
|
17
|
+
<p>运行时间:2026-07-02T15:20:29</p>
|
|
18
|
+
<p>API base:<code>http://localhost:7011</code></p>
|
|
19
|
+
<p>提交版本:maybeai-sheet-cli <code>a988277</code>,play-be <code>76ec7f4</code>,SheetTable <code>2cafe2c</code></p>
|
|
20
|
+
<p>结果汇总:PASS=2,FAIL=0,WARN=1,SKIP=0</p>
|
|
21
|
+
<h2>MaybeSheet URL</h2>
|
|
22
|
+
<ul><li><a href="http://localhost:3003/docs/spreadsheets/d/6a460e52e6feec692aa2b7ee">http://localhost:3003/docs/spreadsheets/d/6a460e52e6feec692aa2b7ee</a></li><li><a href="http://localhost:3003/docs/spreadsheets/d/6a460e59e6feec692aa2b7f2">http://localhost:3003/docs/spreadsheets/d/6a460e59e6feec692aa2b7f2</a></li></ul>
|
|
23
|
+
<h2>流程</h2>
|
|
24
|
+
<div class="mermaid">flowchart LR
|
|
25
|
+
CLI[mbs CLI] --> Play[play-be /api/v1/excel/import]
|
|
26
|
+
Play --> Auto{engine=auto}
|
|
27
|
+
Auto -->|layout/report| Excelize[excelize-mcp]
|
|
28
|
+
Auto -->|forced pg worksheets| SheetTable[SheetTable]
|
|
29
|
+
SheetTable --> PG[(PostgreSQL typed tables)]
|
|
30
|
+
Play --> Response[JSON response]
|
|
31
|
+
Response --> Report[本地 HTML 报告]
|
|
32
|
+
classDef excelize fill:#dbeafe,stroke:#2563eb,color:#111827;
|
|
33
|
+
classDef pg fill:#dcfce7,stroke:#16a34a,color:#111827;
|
|
34
|
+
classDef warn fill:#fef3c7,stroke:#d97706,color:#111827;
|
|
35
|
+
class Excelize excelize;
|
|
36
|
+
class SheetTable,PG pg;
|
|
37
|
+
class Auto warn;
|
|
38
|
+
</div>
|
|
39
|
+
<pre>flowchart LR
|
|
40
|
+
CLI[mbs CLI] --> Play[play-be /api/v1/excel/import]
|
|
41
|
+
Play --> Auto{engine=auto}
|
|
42
|
+
Auto -->|layout/report| Excelize[excelize-mcp]
|
|
43
|
+
Auto -->|forced pg worksheets| SheetTable[SheetTable]
|
|
44
|
+
SheetTable --> PG[(PostgreSQL typed tables)]
|
|
45
|
+
Play --> Response[JSON response]
|
|
46
|
+
Response --> Report[本地 HTML 报告]
|
|
47
|
+
classDef excelize fill:#dbeafe,stroke:#2563eb,color:#111827;
|
|
48
|
+
classDef pg fill:#dcfce7,stroke:#16a34a,color:#111827;
|
|
49
|
+
classDef warn fill:#fef3c7,stroke:#d97706,color:#111827;
|
|
50
|
+
class Excelize excelize;
|
|
51
|
+
class SheetTable,PG pg;
|
|
52
|
+
class Auto warn;
|
|
53
|
+
</pre>
|
|
54
|
+
<h2>对比结果</h2>
|
|
55
|
+
<table><thead><tr><th>类别</th><th>用例</th><th>来源文件</th><th>document_id</th><th>MaybeSheet URL</th><th>期望引擎</th><th>实际引擎</th><th>worksheet_engines</th><th>top-level selected_engine</th><th>preprocess</th><th>list 数量</th><th>read 检查</th><th>结果</th><th>备注</th></tr></thead><tbody><tr><td>auto import</td><td>yunling auto import</td><td>~/Downloads/yunling_v4_20sheet.xlsx</td><td>6a460e52e6feec692aa2b7ee</td><td>http://localhost:3003/docs/spreadsheets/d/6a460e52e6feec692aa2b7ee</td><td>excelize</td><td>excelize</td><td>excelize:21</td><td>absent</td><td>0</td><td>21</td><td>PASS</td><td class="status-pass">PASS</td><td>响应仅保留 top-level engine;每个 worksheet_engines 保留 requested_engine/selected_engine。</td></tr><tr><td>auto import</td><td>llm_cost auto import</td><td>~/Downloads/llm_cost_stats_2026_05_export.xlsx</td><td>6a460e59e6feec692aa2b7f2</td><td>http://localhost:3003/docs/spreadsheets/d/6a460e59e6feec692aa2b7f2</td><td>excelize</td><td>excelize</td><td>excelize:12</td><td>absent</td><td>0</td><td>12</td><td>PASS</td><td class="status-pass">PASS</td><td>响应仅保留 top-level engine;每个 worksheet_engines 保留 requested_engine/selected_engine。</td></tr><tr><td>forced mixed import</td><td>llm_cost forced excelize+postgres list</td><td>~/Downloads/llm_cost_stats_2026_05_export.xlsx</td><td>n/a</td><td>n/a</td><td>composite</td><td>timeout</td><td>SheetTable 日志显示 PG typed writes 已执行;CLI 600s 内未收到 play-be 响应,随后仍在 post-import sync。</td><td>unknown</td><td>observed in SheetTable typed writes</td><td>n/a</td><td>SKIP</td><td class="status-warn">WARN</td><td>命令 --engine "excelize,postgres,..." 触发 PG typed materialization,但 600s 内未返回响应;临时服务关闭时 play-be 记录 SheetTable import failed/server disconnected。需要进一步查 mixed response/registry completion 与 post-import sync 耗时。</td></tr></tbody></table>
|
|
56
|
+
<h2>响应结构检查</h2>
|
|
57
|
+
<ul>
|
|
58
|
+
<li><code>yunling_v4_20sheet.xlsx</code> auto 响应 top-level <code>selected_engine</code>:absent</li>
|
|
59
|
+
<li><code>llm_cost_stats_2026_05_export.xlsx</code> auto 响应 top-level <code>selected_engine</code>:absent</li>
|
|
60
|
+
<li>两个成功响应都保留 <code>engine</code> 和 per-worksheet <code>worksheet_engines[].requested_engine/selected_engine</code>。</li>
|
|
61
|
+
</ul>
|
|
62
|
+
<h2>覆盖率</h2>
|
|
63
|
+
<table><thead><tr><th>区域</th><th>已覆盖</th><th>总数</th><th>百分比</th><th>未覆盖/备注</th></tr></thead><tbody>
|
|
64
|
+
<tr><td>auto import</td><td>2</td><td>2</td><td>100%</td><td>layout/report 与 large workbook</td></tr>
|
|
65
|
+
<tr><td>list worksheets</td><td>2</td><td>2</td><td>100%</td><td>均通过 CLI routed API</td></tr>
|
|
66
|
+
<tr><td>range read</td><td>2</td><td>2</td><td>100%</td><td>均返回样例数据</td></tr>
|
|
67
|
+
<tr><td>forced mixed route</td><td>0</td><td>1</td><td>0%</td><td>SheetTable 完成 typed writes,但 play-be/CLI 响应超时</td></tr>
|
|
68
|
+
</tbody></table>
|
|
69
|
+
<section class="human-needed"><h2>需要人工核验</h2>
|
|
70
|
+
<p>打开上面的 localhost MaybeSheet URL,确认 UI 可以加载对应工作簿。自动化已经验证 import/list/read API;UI 渲染不在本次 CLI 自动检查范围内。</p>
|
|
71
|
+
</section>
|
|
72
|
+
<h2>原始证据文件</h2><p>目录:<code>docs/superpowers/reports/import-engine-local-20260702-150800</code></p><ul><li><code>llm_cost_import_auto.json</code></li><li><code>llm_cost_import_mixed_forced.json</code></li><li><code>llm_cost_list_worksheets.json</code></li><li><code>llm_cost_read_detail_A1_T5.json</code></li><li><code>yunling_import_auto.json</code></li><li><code>yunling_list_worksheets.json</code></li><li><code>yunling_read_T00_A1_F5.json</code></li></ul>
|
|
73
|
+
<script type="module">import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs"; mermaid.initialize({startOnLoad:true, securityLevel:"strict"});</script>
|
|
74
|
+
</body></html>
|
|
@@ -0,0 +1,479 @@
|
|
|
1
|
+
{
|
|
2
|
+
"success": true,
|
|
3
|
+
"endpoint": "/api/v1/excel/import",
|
|
4
|
+
"result": {
|
|
5
|
+
"success": true,
|
|
6
|
+
"documentId": "6a460e59e6feec692aa2b7f2",
|
|
7
|
+
"fileUri": "http://localhost:3003/docs/spreadsheets/d/6a460e59e6feec692aa2b7f2",
|
|
8
|
+
"sheets": [
|
|
9
|
+
"汇总报表",
|
|
10
|
+
"计价明细",
|
|
11
|
+
"计价明细_2",
|
|
12
|
+
"计价明细_3",
|
|
13
|
+
"计价明细_4",
|
|
14
|
+
"计价明细_5",
|
|
15
|
+
"计价明细_6",
|
|
16
|
+
"计价明细_7",
|
|
17
|
+
"计价明细_8",
|
|
18
|
+
"计价明细_9",
|
|
19
|
+
"计价明细_10",
|
|
20
|
+
"计价明细_11"
|
|
21
|
+
],
|
|
22
|
+
"fileSize": 3984747,
|
|
23
|
+
"source": "upload",
|
|
24
|
+
"message": "File 'llm_cost_stats_2026_05_export.xlsx' imported successfully from upload",
|
|
25
|
+
"engine": "excelize",
|
|
26
|
+
"worksheet_engines": [
|
|
27
|
+
{
|
|
28
|
+
"index": 0,
|
|
29
|
+
"worksheet_name": "汇总报表",
|
|
30
|
+
"requested_engine": "auto",
|
|
31
|
+
"selected_engine": "excelize",
|
|
32
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
33
|
+
"row_count": 404,
|
|
34
|
+
"column_count": 7,
|
|
35
|
+
"table_profile": {
|
|
36
|
+
"table_like": false,
|
|
37
|
+
"data_row_count": 403,
|
|
38
|
+
"sampled_rows": 403,
|
|
39
|
+
"density": 0.9791,
|
|
40
|
+
"convertible_columns": false,
|
|
41
|
+
"column_types": [
|
|
42
|
+
"number",
|
|
43
|
+
"number",
|
|
44
|
+
"number",
|
|
45
|
+
"number",
|
|
46
|
+
"number",
|
|
47
|
+
"number",
|
|
48
|
+
"number"
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"index": 1,
|
|
54
|
+
"worksheet_name": "计价明细",
|
|
55
|
+
"requested_engine": "auto",
|
|
56
|
+
"selected_engine": "excelize",
|
|
57
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
58
|
+
"row_count": 4500,
|
|
59
|
+
"column_count": 20,
|
|
60
|
+
"table_profile": {
|
|
61
|
+
"table_like": false,
|
|
62
|
+
"data_row_count": 4499,
|
|
63
|
+
"sampled_rows": 999,
|
|
64
|
+
"density": 0.6834,
|
|
65
|
+
"convertible_columns": false,
|
|
66
|
+
"column_types": [
|
|
67
|
+
"number",
|
|
68
|
+
"text",
|
|
69
|
+
"text",
|
|
70
|
+
"text",
|
|
71
|
+
"text",
|
|
72
|
+
"text",
|
|
73
|
+
"text",
|
|
74
|
+
"text",
|
|
75
|
+
"empty",
|
|
76
|
+
"text",
|
|
77
|
+
"number",
|
|
78
|
+
"number",
|
|
79
|
+
"number",
|
|
80
|
+
"number",
|
|
81
|
+
"empty",
|
|
82
|
+
"text",
|
|
83
|
+
"number",
|
|
84
|
+
"number",
|
|
85
|
+
"number",
|
|
86
|
+
"number"
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"index": 2,
|
|
92
|
+
"worksheet_name": "计价明细_2",
|
|
93
|
+
"requested_engine": "auto",
|
|
94
|
+
"selected_engine": "excelize",
|
|
95
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
96
|
+
"row_count": 4500,
|
|
97
|
+
"column_count": 20,
|
|
98
|
+
"table_profile": {
|
|
99
|
+
"table_like": false,
|
|
100
|
+
"data_row_count": 4499,
|
|
101
|
+
"sampled_rows": 999,
|
|
102
|
+
"density": 0.7373,
|
|
103
|
+
"convertible_columns": false,
|
|
104
|
+
"column_types": [
|
|
105
|
+
"number",
|
|
106
|
+
"text",
|
|
107
|
+
"text",
|
|
108
|
+
"text",
|
|
109
|
+
"text",
|
|
110
|
+
"text",
|
|
111
|
+
"text",
|
|
112
|
+
"text",
|
|
113
|
+
"text",
|
|
114
|
+
"text",
|
|
115
|
+
"number",
|
|
116
|
+
"number",
|
|
117
|
+
"number",
|
|
118
|
+
"number",
|
|
119
|
+
"text",
|
|
120
|
+
"text",
|
|
121
|
+
"number",
|
|
122
|
+
"number",
|
|
123
|
+
"number",
|
|
124
|
+
"number"
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"index": 3,
|
|
130
|
+
"worksheet_name": "计价明细_3",
|
|
131
|
+
"requested_engine": "auto",
|
|
132
|
+
"selected_engine": "excelize",
|
|
133
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
134
|
+
"row_count": 4500,
|
|
135
|
+
"column_count": 20,
|
|
136
|
+
"table_profile": {
|
|
137
|
+
"table_like": false,
|
|
138
|
+
"data_row_count": 4499,
|
|
139
|
+
"sampled_rows": 999,
|
|
140
|
+
"density": 0.7279,
|
|
141
|
+
"convertible_columns": false,
|
|
142
|
+
"column_types": [
|
|
143
|
+
"number",
|
|
144
|
+
"text",
|
|
145
|
+
"text",
|
|
146
|
+
"text",
|
|
147
|
+
"text",
|
|
148
|
+
"text",
|
|
149
|
+
"text",
|
|
150
|
+
"text",
|
|
151
|
+
"text",
|
|
152
|
+
"text",
|
|
153
|
+
"number",
|
|
154
|
+
"number",
|
|
155
|
+
"number",
|
|
156
|
+
"number",
|
|
157
|
+
"text",
|
|
158
|
+
"text",
|
|
159
|
+
"number",
|
|
160
|
+
"number",
|
|
161
|
+
"number",
|
|
162
|
+
"number"
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"index": 4,
|
|
168
|
+
"worksheet_name": "计价明细_4",
|
|
169
|
+
"requested_engine": "auto",
|
|
170
|
+
"selected_engine": "excelize",
|
|
171
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
172
|
+
"row_count": 4500,
|
|
173
|
+
"column_count": 20,
|
|
174
|
+
"table_profile": {
|
|
175
|
+
"table_like": false,
|
|
176
|
+
"data_row_count": 4499,
|
|
177
|
+
"sampled_rows": 999,
|
|
178
|
+
"density": 0.695,
|
|
179
|
+
"convertible_columns": false,
|
|
180
|
+
"column_types": [
|
|
181
|
+
"number",
|
|
182
|
+
"text",
|
|
183
|
+
"text",
|
|
184
|
+
"text",
|
|
185
|
+
"text",
|
|
186
|
+
"text",
|
|
187
|
+
"text",
|
|
188
|
+
"text",
|
|
189
|
+
"text",
|
|
190
|
+
"text",
|
|
191
|
+
"number",
|
|
192
|
+
"number",
|
|
193
|
+
"number",
|
|
194
|
+
"number",
|
|
195
|
+
"text",
|
|
196
|
+
"text",
|
|
197
|
+
"number",
|
|
198
|
+
"number",
|
|
199
|
+
"number",
|
|
200
|
+
"number"
|
|
201
|
+
]
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"index": 5,
|
|
206
|
+
"worksheet_name": "计价明细_5",
|
|
207
|
+
"requested_engine": "auto",
|
|
208
|
+
"selected_engine": "excelize",
|
|
209
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
210
|
+
"row_count": 4500,
|
|
211
|
+
"column_count": 20,
|
|
212
|
+
"table_profile": {
|
|
213
|
+
"table_like": false,
|
|
214
|
+
"data_row_count": 4499,
|
|
215
|
+
"sampled_rows": 999,
|
|
216
|
+
"density": 0.7163,
|
|
217
|
+
"convertible_columns": false,
|
|
218
|
+
"column_types": [
|
|
219
|
+
"number",
|
|
220
|
+
"text",
|
|
221
|
+
"text",
|
|
222
|
+
"text",
|
|
223
|
+
"text",
|
|
224
|
+
"text",
|
|
225
|
+
"text",
|
|
226
|
+
"text",
|
|
227
|
+
"text",
|
|
228
|
+
"text",
|
|
229
|
+
"number",
|
|
230
|
+
"number",
|
|
231
|
+
"number",
|
|
232
|
+
"number",
|
|
233
|
+
"text",
|
|
234
|
+
"text",
|
|
235
|
+
"number",
|
|
236
|
+
"number",
|
|
237
|
+
"number",
|
|
238
|
+
"number"
|
|
239
|
+
]
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"index": 6,
|
|
244
|
+
"worksheet_name": "计价明细_6",
|
|
245
|
+
"requested_engine": "auto",
|
|
246
|
+
"selected_engine": "excelize",
|
|
247
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
248
|
+
"row_count": 4500,
|
|
249
|
+
"column_count": 20,
|
|
250
|
+
"table_profile": {
|
|
251
|
+
"table_like": false,
|
|
252
|
+
"data_row_count": 4499,
|
|
253
|
+
"sampled_rows": 999,
|
|
254
|
+
"density": 0.7474,
|
|
255
|
+
"convertible_columns": false,
|
|
256
|
+
"column_types": [
|
|
257
|
+
"number",
|
|
258
|
+
"text",
|
|
259
|
+
"text",
|
|
260
|
+
"text",
|
|
261
|
+
"text",
|
|
262
|
+
"text",
|
|
263
|
+
"text",
|
|
264
|
+
"text",
|
|
265
|
+
"text",
|
|
266
|
+
"text",
|
|
267
|
+
"number",
|
|
268
|
+
"number",
|
|
269
|
+
"number",
|
|
270
|
+
"number",
|
|
271
|
+
"text",
|
|
272
|
+
"text",
|
|
273
|
+
"number",
|
|
274
|
+
"number",
|
|
275
|
+
"number",
|
|
276
|
+
"number"
|
|
277
|
+
]
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
"index": 7,
|
|
282
|
+
"worksheet_name": "计价明细_7",
|
|
283
|
+
"requested_engine": "auto",
|
|
284
|
+
"selected_engine": "excelize",
|
|
285
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
286
|
+
"row_count": 4500,
|
|
287
|
+
"column_count": 20,
|
|
288
|
+
"table_profile": {
|
|
289
|
+
"table_like": false,
|
|
290
|
+
"data_row_count": 4499,
|
|
291
|
+
"sampled_rows": 999,
|
|
292
|
+
"density": 0.7295,
|
|
293
|
+
"convertible_columns": false,
|
|
294
|
+
"column_types": [
|
|
295
|
+
"number",
|
|
296
|
+
"text",
|
|
297
|
+
"text",
|
|
298
|
+
"text",
|
|
299
|
+
"text",
|
|
300
|
+
"text",
|
|
301
|
+
"text",
|
|
302
|
+
"text",
|
|
303
|
+
"text",
|
|
304
|
+
"text",
|
|
305
|
+
"number",
|
|
306
|
+
"number",
|
|
307
|
+
"number",
|
|
308
|
+
"number",
|
|
309
|
+
"text",
|
|
310
|
+
"text",
|
|
311
|
+
"number",
|
|
312
|
+
"number",
|
|
313
|
+
"number",
|
|
314
|
+
"number"
|
|
315
|
+
]
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"index": 8,
|
|
320
|
+
"worksheet_name": "计价明细_8",
|
|
321
|
+
"requested_engine": "auto",
|
|
322
|
+
"selected_engine": "excelize",
|
|
323
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
324
|
+
"row_count": 4500,
|
|
325
|
+
"column_count": 20,
|
|
326
|
+
"table_profile": {
|
|
327
|
+
"table_like": false,
|
|
328
|
+
"data_row_count": 4499,
|
|
329
|
+
"sampled_rows": 999,
|
|
330
|
+
"density": 0.7084,
|
|
331
|
+
"convertible_columns": false,
|
|
332
|
+
"column_types": [
|
|
333
|
+
"number",
|
|
334
|
+
"text",
|
|
335
|
+
"text",
|
|
336
|
+
"text",
|
|
337
|
+
"text",
|
|
338
|
+
"text",
|
|
339
|
+
"text",
|
|
340
|
+
"text",
|
|
341
|
+
"text",
|
|
342
|
+
"text",
|
|
343
|
+
"number",
|
|
344
|
+
"number",
|
|
345
|
+
"number",
|
|
346
|
+
"number",
|
|
347
|
+
"text",
|
|
348
|
+
"text",
|
|
349
|
+
"number",
|
|
350
|
+
"number",
|
|
351
|
+
"number",
|
|
352
|
+
"number"
|
|
353
|
+
]
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
"index": 9,
|
|
358
|
+
"worksheet_name": "计价明细_9",
|
|
359
|
+
"requested_engine": "auto",
|
|
360
|
+
"selected_engine": "excelize",
|
|
361
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
362
|
+
"row_count": 4500,
|
|
363
|
+
"column_count": 20,
|
|
364
|
+
"table_profile": {
|
|
365
|
+
"table_like": false,
|
|
366
|
+
"data_row_count": 4499,
|
|
367
|
+
"sampled_rows": 999,
|
|
368
|
+
"density": 0.7212,
|
|
369
|
+
"convertible_columns": false,
|
|
370
|
+
"column_types": [
|
|
371
|
+
"number",
|
|
372
|
+
"text",
|
|
373
|
+
"text",
|
|
374
|
+
"text",
|
|
375
|
+
"text",
|
|
376
|
+
"text",
|
|
377
|
+
"text",
|
|
378
|
+
"text",
|
|
379
|
+
"text",
|
|
380
|
+
"text",
|
|
381
|
+
"number",
|
|
382
|
+
"number",
|
|
383
|
+
"number",
|
|
384
|
+
"number",
|
|
385
|
+
"text",
|
|
386
|
+
"text",
|
|
387
|
+
"number",
|
|
388
|
+
"number",
|
|
389
|
+
"number",
|
|
390
|
+
"number"
|
|
391
|
+
]
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"index": 10,
|
|
396
|
+
"worksheet_name": "计价明细_10",
|
|
397
|
+
"requested_engine": "auto",
|
|
398
|
+
"selected_engine": "excelize",
|
|
399
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
400
|
+
"row_count": 4500,
|
|
401
|
+
"column_count": 20,
|
|
402
|
+
"table_profile": {
|
|
403
|
+
"table_like": false,
|
|
404
|
+
"data_row_count": 4499,
|
|
405
|
+
"sampled_rows": 999,
|
|
406
|
+
"density": 0.7231,
|
|
407
|
+
"convertible_columns": false,
|
|
408
|
+
"column_types": [
|
|
409
|
+
"number",
|
|
410
|
+
"text",
|
|
411
|
+
"text",
|
|
412
|
+
"text",
|
|
413
|
+
"text",
|
|
414
|
+
"text",
|
|
415
|
+
"text",
|
|
416
|
+
"text",
|
|
417
|
+
"text",
|
|
418
|
+
"text",
|
|
419
|
+
"number",
|
|
420
|
+
"number",
|
|
421
|
+
"number",
|
|
422
|
+
"number",
|
|
423
|
+
"text",
|
|
424
|
+
"text",
|
|
425
|
+
"number",
|
|
426
|
+
"number",
|
|
427
|
+
"number",
|
|
428
|
+
"number"
|
|
429
|
+
]
|
|
430
|
+
}
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"index": 11,
|
|
434
|
+
"worksheet_name": "计价明细_11",
|
|
435
|
+
"requested_engine": "auto",
|
|
436
|
+
"selected_engine": "excelize",
|
|
437
|
+
"reason": "auto: worksheet appears layout/workbook-oriented",
|
|
438
|
+
"row_count": 404,
|
|
439
|
+
"column_count": 20,
|
|
440
|
+
"table_profile": {
|
|
441
|
+
"table_like": false,
|
|
442
|
+
"data_row_count": 403,
|
|
443
|
+
"sampled_rows": 403,
|
|
444
|
+
"density": 0.6502,
|
|
445
|
+
"convertible_columns": false,
|
|
446
|
+
"column_types": [
|
|
447
|
+
"text",
|
|
448
|
+
"number",
|
|
449
|
+
"number",
|
|
450
|
+
"number",
|
|
451
|
+
"number",
|
|
452
|
+
"number",
|
|
453
|
+
"number",
|
|
454
|
+
"text",
|
|
455
|
+
"empty",
|
|
456
|
+
"text",
|
|
457
|
+
"number",
|
|
458
|
+
"number",
|
|
459
|
+
"number",
|
|
460
|
+
"number",
|
|
461
|
+
"empty",
|
|
462
|
+
"text",
|
|
463
|
+
"number",
|
|
464
|
+
"number",
|
|
465
|
+
"number",
|
|
466
|
+
"number"
|
|
467
|
+
]
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
]
|
|
471
|
+
},
|
|
472
|
+
"target": {
|
|
473
|
+
"document_id": "6a460e59e6feec692aa2b7f2",
|
|
474
|
+
"url": "http://localhost:3003/docs/spreadsheets/d/6a460e59e6feec692aa2b7f2",
|
|
475
|
+
"uri": "http://localhost:3003/docs/spreadsheets/d/6a460e59e6feec692aa2b7f2",
|
|
476
|
+
"gid": null,
|
|
477
|
+
"worksheet_name": null
|
|
478
|
+
}
|
|
479
|
+
}
|