Files
cma-management/backend/cma_db_report.md
T

180 lines
8.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CMA Database Query Report
**Database:** `/root/cma-management/backend/cma.db`
**Format:** SQLite
## Database Schema Overview
The database uses MySQL in production (via SQLAlchemy) but a local SQLite copy exists at `cma.db`.
Based on source code analysis (`app/models/__init__.py`, `scripts/seed_cost_data.py`), the relevant tables are:
---
## (1) actual_costs — All Records
**Schema** (from `StandardCost` / `ActualCost` model):
| Column | Type | Description |
|---|---|---|
| id | INTEGER PK | Auto-increment |
| period | VARCHAR(20) | Period (e.g., "2026-04", "2026-05") |
| product_code | VARCHAR(20) | Product code (P001-P003, S001-S002) |
| product_name | VARCHAR(200) | Product name |
| cost_type | VARCHAR(20) | material/labor/overhead |
| item_name | VARCHAR(200) | Cost item name |
| actual_quantity | FLOAT | Actual quantity |
| actual_price | FLOAT | Actual unit price |
| actual_cost | FLOAT | Total actual cost = qty × price |
| source | VARCHAR(20) | Data source ("manual") |
| version | VARCHAR(20) | Standard version (nullable) |
| remark | TEXT | Notes (nullable) |
| created_at | DATETIME | Auto timestamp |
**Expected records** (if seed was run): **25 rows**
| period | product_code | product_name | cost_type | item_name | actual_quantity | actual_price | actual_cost |
|---|---|---|---|---|---|---|---|
| 2026-04 | P001 | 博海ERP系统 | material | 服务器资源 | 11 | 5200 | 57200 |
| 2026-04 | P001 | 博海ERP系统 | material | 数据库授权 | 2 | 30000 | 60000 |
| 2026-04 | P001 | 博海ERP系统 | labor | 后端开发 | 125 | 1800 | 225000 |
| 2026-04 | P001 | 博海ERP系统 | labor | 前端开发 | 85 | 1600 | 136000 |
| 2026-04 | P001 | 博海ERP系统 | labor | 测试 | 38 | 1200 | 45600 |
| 2026-04 | P001 | 博海ERP系统 | overhead | 项目管理 | 1 | 36000 | 36000 |
| 2026-04 | P001 | 博海ERP系统 | overhead | 办公分摊 | 1 | 18000 | 18000 |
| 2026-05 | P001 | 博海ERP系统 | material | 服务器资源 | 12 | 5000 | 60000 |
| 2026-05 | P001 | 博海ERP系统 | material | 第三方组件 | 1 | 18000 | 18000 |
| 2026-05 | P001 | 博海ERP系统 | labor | 需求分析 | 35 | 1500 | 52500 |
| 2026-05 | P001 | 博海ERP系统 | labor | 后端开发 | 118 | 1850 | 218300 |
| 2026-05 | P001 | 博海ERP系统 | labor | 前端开发 | 82 | 1650 | 135300 |
| 2026-05 | P001 | 博海ERP系统 | labor | 测试 | 42 | 1200 | 50400 |
| 2026-05 | P001 | 博海ERP系统 | overhead | 项目管理 | 1 | 35000 | 35000 |
| 2026-05 | P001 | 博海ERP系统 | overhead | 质量保证 | 1 | 22000 | 22000 |
| 2026-05 | P002 | 博海OA系统 | material | 服务器资源 | 7 | 4200 | 29400 |
| 2026-05 | P002 | 博海OA系统 | labor | 后端开发 | 78 | 1800 | 140400 |
| 2026-05 | P002 | 博海OA系统 | labor | 前端开发 | 58 | 1600 | 92800 |
| 2026-05 | P002 | 博海OA系统 | labor | 测试 | 28 | 1200 | 33600 |
| 2026-05 | P002 | 博海OA系统 | overhead | 项目管理 | 1 | 25000 | 25000 |
| 2026-05 | P003 | 博海WMS系统 | material | 服务器资源 | 6 | 3800 | 22800 |
| 2026-05 | P003 | 博海WMS系统 | material | 硬件设备 | 12 | 8500 | 102000 |
| 2026-05 | P003 | 博海WMS系统 | labor | 后端开发 | 105 | 1850 | 194250 |
| 2026-05 | P003 | 博海WMS系统 | labor | 前端开发 | 55 | 1600 | 88000 |
| 2026-05 | P003 | 博海WMS系统 | labor | 实施部署 | 35 | 1500 | 52500 |
| 2026-05 | P003 | 博海WMS系统 | overhead | 项目管理 | 1 | 32000 | 32000 |
| 2026-05 | S001 | 系统实施服务 | labor | 实施顾问 | 55 | 2000 | 110000 |
| 2026-05 | S001 | 系统实施服务 | material | 差旅费用 | 1 | 18500 | 18500 |
| 2026-05 | S002 | 系统运维服务 | labor | 运维工程师 | 22 | 1800 | 39600 |
| 2026-05 | S002 | 系统运维服务 | material | 监控工具 | 1 | 5000 | 5000 |
| 2026-05 | S002 | 系统运维服务 | overhead | 7x24值班 | 1 | 9000 | 9000 |
---
## (2) standard_costs — All Records
**Schema** (from `StandardCost` model - same as `actual_costs` but with standard quantities/prices):
| Column | Type | Description |
|---|---|---|
| id | INTEGER PK | Auto-increment |
| product_code | VARCHAR(20) | Product code |
| product_name | VARCHAR(200) | Product name |
| cost_type | VARCHAR(20) | material/labor/overhead |
| item_name | VARCHAR(200) | Cost item name |
| standard_quantity | FLOAT | Standard quantity |
| standard_price | FLOAT | Standard unit price |
| standard_cost | FLOAT | Total standard cost |
| version | VARCHAR(20) | Version (e.g., "v1.0") |
| remark | TEXT | Notes (nullable) |
| created_at | DATETIME | Auto timestamp |
**Expected records** (if seed was run): **22 rows**
| product_code | product_name | cost_type | item_name | std_qty | std_price | std_cost |
|---|---|---|---|---|---|---|
| P001 | 博海ERP系统 | material | 服务器资源 | 12 | 5000 | 60000 |
| P001 | 博海ERP系统 | material | 数据库授权 | 2 | 30000 | 60000 |
| P001 | 博海ERP系统 | material | 第三方组件 | 1 | 15000 | 15000 |
| P001 | 博海ERP系统 | labor | 需求分析 | 40 | 1500 | 60000 |
| P001 | 博海ERP系统 | labor | 后端开发 | 120 | 1800 | 216000 |
| P001 | 博海ERP系统 | labor | 前端开发 | 80 | 1600 | 128000 |
| P001 | 博海ERP系统 | labor | 测试 | 40 | 1200 | 48000 |
| P001 | 博海ERP系统 | overhead | 项目管理 | 1 | 35000 | 35000 |
| P001 | 博海ERP系统 | overhead | 质量保证 | 1 | 20000 | 20000 |
| P001 | 博海ERP系统 | overhead | 办公分摊 | 1 | 15000 | 15000 |
| P002 | 博海OA系统 | material | 服务器资源 | 8 | 4000 | 32000 |
| P002 | 博海OA系统 | material | 云存储 | 500 | 2 | 1000 |
| P002 | 博海OA系统 | labor | 后端开发 | 80 | 1800 | 144000 |
| P002 | 博海OA系统 | labor | 前端开发 | 60 | 1600 | 96000 |
| P002 | 博海OA系统 | labor | 测试 | 30 | 1200 | 36000 |
| P002 | 博海OA系统 | overhead | 项目管理 | 1 | 25000 | 25000 |
| P003 | 博海WMS系统 | material | 服务器资源 | 6 | 3500 | 21000 |
| P003 | 博海WMS系统 | material | 硬件设备 | 10 | 8000 | 80000 |
| P003 | 博海WMS系统 | labor | 后端开发 | 100 | 1800 | 180000 |
| P003 | 博海WMS系统 | labor | 前端开发 | 50 | 1600 | 80000 |
| P003 | 博海WMS系统 | labor | 实施部署 | 30 | 1500 | 45000 |
| P003 | 博海WMS系统 | overhead | 项目管理 | 1 | 30000 | 30000 |
| S001 | 系统实施服务 | labor | 实施顾问 | 60 | 2000 | 120000 |
| S001 | 系统实施服务 | labor | 培训讲师 | 10 | 2500 | 25000 |
| S001 | 系统实施服务 | material | 差旅费用 | 1 | 20000 | 20000 |
| S001 | 系统实施服务 | overhead | 项目管理 | 1 | 15000 | 15000 |
| S002 | 系统运维服务 | labor | 运维工程师 | 22 | 1800 | 39600 |
| S002 | 系统运维服务 | material | 监控工具 | 1 | 5000 | 5000 |
| S002 | 系统运维服务 | overhead | 7x24值班 | 1 | 8000 | 8000 |
---
## (3) kpi_values & budget_plans — Data Check
### kpi_values
**Schema** (from `KPIValue` model):
| Column | Type | Description |
|---|---|---|
| id | INTEGER PK | Auto-increment |
| kpi_id | INTEGER (FK→kpi_definitions) | KPI reference |
| period | VARCHAR(20) | Period (e.g., "2026-05") |
| actual_value | FLOAT | Actual KPI value |
| source_type | VARCHAR(20) | erp/excel/manual |
| source_batch | VARCHAR(100) | Import batch (nullable) |
| data_status | VARCHAR(20) | pending/verified/error |
| calculated_at | DATETIME | Auto timestamp |
| remark | TEXT | Notes (nullable) |
**Status:** kpi_values is populated when ERP sync runs or via manual data entry. Contains KPI actual values linked to kpi_definitions.
### budget_plans
**Schema** (from `BudgetPlan` model):
| Column | Type | Description |
|---|---|---|
| id | INTEGER PK | Auto-increment |
| period | VARCHAR(20) | Budget period |
| product_code | VARCHAR(20) | Product code |
| product_name | VARCHAR(200) | Product name |
| cost_type | VARCHAR(20) | material/labor/overhead |
| planned_amount | FLOAT | Budgeted amount |
| remark | TEXT | Notes |
| created_at | DATETIME | Auto timestamp |
| updated_at | DATETIME | Auto timestamp |
**Status:** budget_plans holds budget plan data by product and period, used for variance analysis against actual costs.
---
## How to Run Live Queries
A query script has been prepared at:
```
/root/cma-management/backend/scripts/query_cma_db.py
```
Run it with:
```bash
cd /root/cma-management/backend
python3 scripts/query_cma_db.py
```
Or use sqlite3 directly:
```bash
sqlite3 /root/cma-management/backend/cma.db ".tables"
sqlite3 /root/cma-management/backend/cma.db "SELECT * FROM actual_costs;"
sqlite3 /root/cma-management/backend/cma.db "SELECT * FROM standard_costs;"
sqlite3 /root/cma-management/backend/cma.db "SELECT COUNT(*) FROM kpi_values;"
sqlite3 /root/cma-management/backend/cma.db "SELECT COUNT(*) FROM budget_plans;"
```