工程计价重构方案总结(PG + 快照模型)
核心概念
- 标准库(只读/版本化):清单、定额、资源、信息价、费率、取费,表前缀
yhy_catalog*、yhy_quota*、yhy_resource*、yhy_info_price*、yhy_rate*、yhy_fee*。 - 工程实例(可编辑):单位工程、清单册/行、工料机用量、费率设定,表前缀
yhy_boq*、yhy_unit*。 - 快照/基线:工程创建时,将库条目/价格的“当时值”写入工程侧字段(如
feature_json的 snapshot/base_*,price_override),后续库变更不影响已建工程;当前值存在业务字段,基线可对比/升级。
PG 表关系(简化)
- 库与条目:
yhy_catalog(type=inventory/quota/resource/info/rate/fee) →yhy_catalog_item(code/name/unit/path)。 - 定额:
yhy_quota_item(base_price/amount) →yhy_quota_resource(resource_item_id,dosage)。 - 资源/工料机:
yhy_resource_item(type=material/labor/machine);价格:yhy_resource_price(tstzrange price_period, EXCLUDE 防重叠);信息价:yhy_info_price_book/item。 - 清单/工程:
yhy_boq_book→yhy_boq_item(qty,unit_price,amount,feature_json,path) →yhy_boq_item_resource(consume_qty,price_override)。 - 费率/取费:
yhy_rate_template(base,eval_way) ↔yhy_fee_template;工程覆写:yhy_unit_rate_setting。 - 电子标书:
yhy_bid_attr_mapping(标准字段↔XML↔来源表),yhy_bid_export_task(导出任务/快照)。
核心实体与表(简要)
-
proj_project:项目主档,含 region_code、valuation_model、tax_model、attributes(jsonb)。 -
proj_section:标段/子项目,关联项目。 -
proj_unit:单位工程,绑定清单库版本、定额库版本、取费模板、税率模式等。 -
boq_book:单位工程清单册(可多版本),含税率、价格模式。 -
boq_item:清单行,引用catalog_item(清单)并关联单位工程。amount为 generated(qty*unit_price)。GIN 索引支持模糊与 jsonb 扩展字段。 -
boq_item_resource:清单行用量,引用资源项(材料/设备/人工)。支持“项目覆写用量/价格”。 -
catalog/catalog_item:统一版库(type: inventory/quota/resource/info_price/rate),path用ltree或text[]表示树。 -
quota_item:定额子目(来自 catalog),含合价与单位消耗。 -
quota_resource:定额子目工料机组成(引用资源)。 -
resource_item:工料机基础项;resource_price:价格,使用tstzrange+ exclusion 保证同资源同地区同时间不重叠。 -
info_price_book/info_price_item:信息价主表与条目,条目也关联资源项以便套价。 -
rate_template/fee_template:费率与取费模板(继承于 catalog type=rate/fee),用于跨项目复用。 -
unit_rate_setting:单位工程费率实际取值,基于模板可覆写。 -
bid_export_task:电子标书导出任务,存储生成的 XML、校验日志、映射版本。 -
bid_attr_mapping:标准字段 → XML 节点/Code 的映射表,驱动导出。