1396 lines
62 KiB
Python
1396 lines
62 KiB
Python
"""
|
||
2020 版《炼油化工建设项目后评价报告编制细则(修订)》— 附件/附表结构。
|
||
|
||
依据工作区《炼油化工建设项目后评价报告编制细则(修订).doc》抽取的**正文表格**与**附表1~8**表题、表头整理:
|
||
- **全局要素表**:第1章项目概况(文字要素)+正文各章**非按年**对比表(表2-1~表3-7、表4-1、表5-1~5-3/5-6/5-7、表6-1、表7-1)+ **附表1、附表2、附表8**。
|
||
- **时间要素表**:**附表3~附表7**(利润表、税金表等按「建设期 / 后评价时点前、后」及年度栏填报)+ 正文**按年(或按评价期)**列表:**表2-4** 产品流向、**表5-4** 生产经营及效益对比、**表5-5** 主要生产经营指标;库中按「**表名 × 日历年**」各建一张时间表,列名与细则表头一致(见 TIME_TABLE_MULTI_COLUMNS)。
|
||
|
||
附表3~7 各行在库中使用「现金流·」「利润·」等**表内前缀**避免不同附表中同名行(如「营业收入」)在抽取路由上冲突;展示时仍以细则原文行名为 lvl3/说明。
|
||
|
||
规则抽取(build_rule_factor_items)仅包含概况 + 附表1/2/8 行 + 少量高频时间指标;完整模版见 ALL_GLOBAL_TABLES + ALL_TIME_TABLE_SPECS。
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
def _S(src: str, names: list[str]) -> list[tuple[str, str, str]]:
|
||
"""章节要素行:source 作为提示词路径,lvl3 默认与 name 一致。"""
|
||
return [(n, src, n) for n in names]
|
||
|
||
|
||
# 细则“报告摘要、前言、第1~7章”章节要素(非表格字段),用于新建项目预置空值并供 LLM 回填。
|
||
GLOBAL_SECTION_TABLES: list[tuple[str, int, list[tuple[str, str, str]]]] = [
|
||
(
|
||
"章节要素-摘要与前言",
|
||
100,
|
||
_S(
|
||
"报告摘要与前言",
|
||
[
|
||
"摘要·项目基本情况",
|
||
"摘要·总体评价结论",
|
||
"摘要·成功度评价结果",
|
||
"摘要·主要经验",
|
||
"摘要·主要问题",
|
||
"摘要·主要建议",
|
||
"前言·评价依据",
|
||
"前言·评价范围与时点",
|
||
"前言·组织方式与过程",
|
||
"前言·基础资料清单",
|
||
"前言·需解释问题清单",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"章节要素-第1章项目概况",
|
||
110,
|
||
_S(
|
||
"第1章 项目概况",
|
||
[
|
||
"第1章·项目名称",
|
||
"第1章·建设单位",
|
||
"第1章·建设地点",
|
||
"第1章·建设类型",
|
||
"第1章·起止时间",
|
||
"第1章·建设内容",
|
||
"第1章·建设投资",
|
||
"第1章·占地面积",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"章节要素-第2章前期工作评价",
|
||
120,
|
||
_S(
|
||
"第2章 前期工作评价",
|
||
[
|
||
"第2章·资源原料评价结论",
|
||
"第2章·产品方案评价结论",
|
||
"第2章·产品市场评价结论",
|
||
"第2章·工艺技术方案评价结论",
|
||
"第2章·设备方案评价结论",
|
||
"第2章·厂址与外部条件评价结论",
|
||
"第2章·总图与配套工程评价结论",
|
||
"第2章·技术指标评价结论",
|
||
"第2章·风险分析评价结论",
|
||
"第2章·可研编制单位资质与选择评价",
|
||
"第2章·可研进度评价",
|
||
"第2章·可研质量评价",
|
||
"第2章·前评估意见采纳落实评价",
|
||
"第2章·初步设计评价结论",
|
||
"第2章·前期决策程序合规性",
|
||
"第2章·前期工作总体结论",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"章节要素-第3章建设实施评价",
|
||
130,
|
||
_S(
|
||
"第3章 建设实施评价",
|
||
[
|
||
"第3章·建设管理模式评价结论",
|
||
"第3章·招投标评价结论",
|
||
"第3章·施工图设计符合性评价",
|
||
"第3章·施工图设计进度评价",
|
||
"第3章·施工图设计质量评价",
|
||
"第3章·设计变更管理评价",
|
||
"第3章·施工准备评价",
|
||
"第3章·施工计划执行评价",
|
||
"第3章·采购工作评价结论",
|
||
"第3章·工程监理评价结论",
|
||
"第3章·工程质量评价结论",
|
||
"第3章·HSE管理评价结论",
|
||
"第3章·三查四定与中间交接评价",
|
||
"第3章·竣工验收评价结论",
|
||
"第3章·建设实施总体结论",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"章节要素-第4章生产运行评价",
|
||
140,
|
||
_S(
|
||
"第4章 生产运行评价",
|
||
[
|
||
"第4章·生产准备评价结论",
|
||
"第4章·联合试运与试生产评价结论",
|
||
"第4章·原料供应评价结论",
|
||
"第4章·生产运行总体评价",
|
||
"第4章·达标评价结论",
|
||
"第4章·工艺技术评价结论",
|
||
"第4章·设备运行评价结论",
|
||
"第4章·公用工程与辅助设施评价结论",
|
||
"第4章·生产运行总体结论",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"章节要素-第5章投资与经济效益评价",
|
||
150,
|
||
_S(
|
||
"第5章 投资与经济效益评价",
|
||
[
|
||
"第5章·主要经济指标实现程度评价",
|
||
"第5章·投资控制及变动原因结论",
|
||
"第5章·投资水平分析结论",
|
||
"第5章·资金来源及到位评价结论",
|
||
"第5章·投资控制经验教训",
|
||
"第5章·营业收入变动原因",
|
||
"第5章·总成本费用变动原因",
|
||
"第5章·税后利润变动原因",
|
||
"第5章·财务后评价IRR",
|
||
"第5章·财务后评价NPV",
|
||
"第5章·财务后评价回收期",
|
||
"第5章·不确定性分析结论",
|
||
"第5章·投资与经济效益总体结论",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"章节要素-第6章影响与持续性评价",
|
||
160,
|
||
_S(
|
||
"第6章 影响与持续性评价",
|
||
[
|
||
"第6章·环境影响评价结论",
|
||
"第6章·安全影响评价结论",
|
||
"第6章·科技进步影响评价结论",
|
||
"第6章·社会影响评价结论",
|
||
"第6章·项目影响总体结论",
|
||
"第6章·资源持续性评价结论",
|
||
"第6章·产品持续性评价结论",
|
||
"第6章·技术经济竞争力评价结论",
|
||
"第6章·项目持续性总体结论",
|
||
],
|
||
),
|
||
),
|
||
]
|
||
|
||
|
||
def section_table_row_keys(table_group_name: str) -> list[str]:
|
||
"""返回 ``GLOBAL_SECTION_TABLES`` 中某「章节要素-*」分组的全部行键(与要素库 ``row_key`` 一致)。"""
|
||
for name, _, rows in GLOBAL_SECTION_TABLES:
|
||
if name == table_group_name:
|
||
return [str(r[0]) for r in rows if r and str(r[0]).strip()]
|
||
return []
|
||
|
||
|
||
CHAPTER1_PROJECT_OVERVIEW_TABLE_GROUP = "章节要素-第1章项目概况"
|
||
|
||
# 细则「附表1」项目建设工作程序表(全局,单行键 = 程序节点)
|
||
APPENDIX1_PROGRAM_ROWS: list[tuple[str, str, str]] = [
|
||
("项目建议书(预可研)批复", "附表1 项目建设工作程序表", "项目建议书"),
|
||
("可行性研究报告编制", "附表1 项目建设工作程序表", "可行性研究报告编制"),
|
||
("环境影响报告编制", "附表1 项目建设工作程序表", "环境影响报告编制"),
|
||
("环境影响报告批复", "附表1 项目建设工作程序表", "环境影响报告批复"),
|
||
("安全评价报告编制", "附表1 项目建设工作程序表", "安全评价报告编制"),
|
||
("安全评价报告批复", "附表1 项目建设工作程序表", "安全评价报告批复"),
|
||
("节能评估报告编制", "附表1 项目建设工作程序表", "节能评估报告编制"),
|
||
("节能评估报告批复", "附表1 项目建设工作程序表", "节能评估报告批复"),
|
||
("可行性研究报告评估", "附表1 项目建设工作程序表", "可行性研究报告评估"),
|
||
("可行性研究报告批复", "附表1 项目建设工作程序表", "可行性研究报告批复"),
|
||
("核准报告批复", "附表1 项目建设工作程序表", "核准报告批复"),
|
||
("初步设计编制", "附表1 项目建设工作程序表", "初步设计编制"),
|
||
("初步设计审查", "附表1 项目建设工作程序表", "初步设计审查"),
|
||
("初步设计批复", "附表1 项目建设工作程序表", "初步设计批复"),
|
||
("施工图设计编制", "附表1 项目建设工作程序表", "施工图设计编制"),
|
||
("开工报告批复", "附表1 项目建设工作程序表", "开工报告批复"),
|
||
("开工建设", "附表1 项目建设工作程序表", "开工建设"),
|
||
("投产运行", "附表1 项目建设工作程序表", "投产运行"),
|
||
("竣工验收", "附表1 项目建设工作程序表", "竣工验收"),
|
||
]
|
||
|
||
# 细则「附表2」竣工决算投资构成(全局)
|
||
APPENDIX2_INVESTMENT_ROWS: list[tuple[str, str, str]] = [
|
||
("建设投资", "附表2 项目竣工决算投资构成表(万元)", "建设投资"),
|
||
("固定资产投资", "附表2 项目竣工决算投资构成表(万元)", "固定资产投资"),
|
||
("工程费用", "附表2 项目竣工决算投资构成表(万元)", "工程费用"),
|
||
("工艺生产装置", "附表2 项目竣工决算投资构成表(万元)", "工艺生产装置"),
|
||
("总图运输", "附表2 项目竣工决算投资构成表(万元)", "总图运输"),
|
||
("储运工程", "附表2 项目竣工决算投资构成表(万元)", "储运工程"),
|
||
("辅助设施", "附表2 项目竣工决算投资构成表(万元)", "辅助设施"),
|
||
("公用工程", "附表2 项目竣工决算投资构成表(万元)", "公用工程"),
|
||
("生产管理设施", "附表2 项目竣工决算投资构成表(万元)", "生产管理设施"),
|
||
("厂外工程", "附表2 项目竣工决算投资构成表(万元)", "厂外工程"),
|
||
("工器具及生产家具购置费", "附表2 项目竣工决算投资构成表(万元)", "工器具及生产家具购置费"),
|
||
("固定资产其他费用", "附表2 项目竣工决算投资构成表(万元)", "固定资产其他费用"),
|
||
("无形资产费用", "附表2 项目竣工决算投资构成表(万元)", "无形资产费用"),
|
||
("递延资产费用", "附表2 项目竣工决算投资构成表(万元)", "递延资产费用"),
|
||
("固定资产投资方向调节税", "附表2 项目竣工决算投资构成表(万元)", "固定资产投资方向调节税"),
|
||
("建设期利息", "附表2 项目竣工决算投资构成表(万元)", "建设期利息"),
|
||
("铺底流动资金", "附表2 项目竣工决算投资构成表(万元)", "铺底流动资金"),
|
||
("报批项目总投资", "附表2 项目竣工决算投资构成表(万元)", "报批项目总投资"),
|
||
]
|
||
|
||
# 附表2 规范行键顺序(与 templates/js/quick-fill.js preferredA2Rows 一致)
|
||
APPENDIX2_CANONICAL_ROW_ORDER: list[str] = [
|
||
"一 建设投资",
|
||
"1 固定资产投资",
|
||
"1.1 工程费用",
|
||
"1.1.1 工艺生产装置",
|
||
"1.1.2 总图运输",
|
||
"1.1.3 储运工程",
|
||
"1.1.4 辅助设施",
|
||
"1.1.5 公用工程",
|
||
"1.1.6 生产管理设施",
|
||
"1.1.7 厂外工程",
|
||
"1.1.8 工器具及生产家具购置费",
|
||
"1.2 固定资产其他费用",
|
||
"1.2.1 ×××费用",
|
||
"1.2.2 ×××费用",
|
||
"2 无形资产费用",
|
||
"2.1 ×××费用",
|
||
"3 递延资产费用",
|
||
"3.1 ×××费用",
|
||
"二 固定资产投资方向调节税",
|
||
"三 建设期利息",
|
||
"四 铺底流动资金",
|
||
"报批项目总投资",
|
||
]
|
||
|
||
# 附表2 旧版短行键 → 规范行键(与 quick-fill.js getLegacyAppendix2RowKeyMap 一致)
|
||
APPENDIX2_LEGACY_ROW_KEY_MAP: dict[str, str] = {
|
||
"建设投资": "一 建设投资",
|
||
"固定资产投资": "1 固定资产投资",
|
||
"工程费用": "1.1 工程费用",
|
||
"工艺生产装置": "1.1.1 工艺生产装置",
|
||
"总图运输": "1.1.2 总图运输",
|
||
"储运工程": "1.1.3 储运工程",
|
||
"辅助设施": "1.1.4 辅助设施",
|
||
"公用工程": "1.1.5 公用工程",
|
||
"生产管理设施": "1.1.6 生产管理设施",
|
||
"厂外工程": "1.1.7 厂外工程",
|
||
"工器具及生产家具购置费": "1.1.8 工器具及生产家具购置费",
|
||
"固定资产其他费用": "1.2 固定资产其他费用",
|
||
"无形资产费用": "2 无形资产费用",
|
||
"递延资产费用": "3 递延资产费用",
|
||
"固定资产投资方向调节税": "二 固定资产投资方向调节税",
|
||
"建设期利息": "三 建设期利息",
|
||
"铺底流动资金": "四 铺底流动资金",
|
||
"报批项目总投资": "报批项目总投资",
|
||
}
|
||
|
||
# 细则「附表8」可研与后评价参数对比(全局;行键与要素表编辑/回填一致;税收明细用「税类·子项」避免与成本 3.x 序号冲突)
|
||
_A8 = "附表8 可研报告和后评价参数对比表"
|
||
APPENDIX8_PARAM_ROWS: list[tuple[str, str, str]] = [
|
||
("一 成本参数", _A8, "一 成本参数"),
|
||
("1 原料价格", _A8, "1 原料价格"),
|
||
("1.1 氢气", _A8, "1.1 氢气"),
|
||
("2 催化剂和化学药剂", _A8, "2 催化剂和化学药剂"),
|
||
("3 燃料动力价格", _A8, "3 燃料动力价格"),
|
||
("3.1 除盐水价格", _A8, "3.1 除盐水价格"),
|
||
("3.2 除氧水价格", _A8, "3.2 除氧水价格"),
|
||
("3.3 循环水价格", _A8, "3.3 循环水价格"),
|
||
("3.4 1.0MPa蒸汽价格", _A8, "3.4 1.0MPa蒸汽价格"),
|
||
("3.5 3.5MPa蒸汽价格", _A8, "3.5 3.5MPa蒸汽价格"),
|
||
("3.6 新鲜水", _A8, "3.6 新鲜水"),
|
||
("3.7 电价格", _A8, "3.7 电价格"),
|
||
("3.8 净化风价格", _A8, "3.8 净化风价格"),
|
||
("3.9 氮气价格", _A8, "3.9 氮气价格"),
|
||
("3.10 凝结水", _A8, "3.10 凝结水"),
|
||
("3.11 废渣处置", _A8, "3.11 废渣处置"),
|
||
("4 人员费用", _A8, "4 人员费用"),
|
||
("5 折旧年限", _A8, "5 折旧年限"),
|
||
("6 无形资产摊销年限", _A8, "6 无形资产摊销年限"),
|
||
("7 其他资产摊销年限", _A8, "7 其他资产摊销年限"),
|
||
("8 安全生产费用", _A8, "8 安全生产费用"),
|
||
("9 安保基金", _A8, "9 安保基金"),
|
||
("10 其他制造费用", _A8, "10 其他制造费用"),
|
||
("11 其他管理费用", _A8, "11 其他管理费用"),
|
||
("12 长期贷款利息", _A8, "12 长期贷款利息"),
|
||
("13 短期贷款/流动资产贷款利率", _A8, "13 短期贷款/流动资产贷款利率"),
|
||
("14 其他销售费用", _A8, "14 其他销售费用"),
|
||
("二 营业收入参数", _A8, "二 营业收入参数"),
|
||
("2.1 98#汽油", _A8, "2.1 98#汽油"),
|
||
("2.2 95#汽油", _A8, "2.2 95#汽油"),
|
||
("2.3 92#汽油", _A8, "2.3 92#汽油"),
|
||
("2.4 异丁烷", _A8, "2.4 异丁烷"),
|
||
("2.5 正丁烷", _A8, "2.5 正丁烷"),
|
||
("2.6 燃料气", _A8, "2.6 燃料气"),
|
||
("2.7 液化气", _A8, "2.7 液化气"),
|
||
("三 税收参数", _A8, "三 税收参数"),
|
||
("增值税税率", _A8, "增值税税率"),
|
||
("增值税·汽油各品种产品", _A8, "汽油各品种产品"),
|
||
("增值税·异丁烷", _A8, "异丁烷"),
|
||
("增值税·正丁烷", _A8, "正丁烷"),
|
||
("增值税·燃料气", _A8, "燃料气"),
|
||
("增值税·液化气", _A8, "液化气"),
|
||
("消费税税率", _A8, "消费税税率"),
|
||
("消费税·产品汽油税率", _A8, "产品汽油税率"),
|
||
("城市维护建设税税率", _A8, "城市维护建设税税率"),
|
||
("教育费附加", _A8, "教育费附加"),
|
||
("所得税税率", _A8, "所得税税率"),
|
||
("四 基准收益率", _A8, "四 基准收益率"),
|
||
]
|
||
|
||
APPENDIX8_CANONICAL_ROW_ORDER: list[str] = [str(r[0]) for r in APPENDIX8_PARAM_ROWS]
|
||
|
||
# 与 quick-fill.js legacyA8Map 一致(旧 row_key → 规范 row_key)
|
||
APPENDIX8_LEGACY_ROW_KEY_MAP: dict[str, str] = {
|
||
"3.1.1 增值税·产品A税率": "增值税·汽油各品种产品",
|
||
"3.1.2 增值税·产品B税率": "增值税·异丁烷",
|
||
"3.2.1 消费税·产品A税率": "消费税·产品汽油税率",
|
||
"3.2.2 消费税·产品B税率": "消费税·产品汽油税率",
|
||
"3.1 增值税税率": "增值税税率",
|
||
"3.2 消费税税率": "消费税税率",
|
||
"3.3 城市维护建设税税率": "城市维护建设税税率",
|
||
"3.4 教育费附加": "教育费附加",
|
||
"3.5 所得税税率": "所得税税率",
|
||
}
|
||
|
||
GLOBAL_APPENDIX_TABLES: list[tuple[str, int, list[tuple[str, str, str]]]] = [
|
||
("附表1 项目建设工作程序表", 600, APPENDIX1_PROGRAM_ROWS),
|
||
("附表2 项目竣工决算投资构成表(万元)", 700, APPENDIX2_INVESTMENT_ROWS),
|
||
("附表8 可研报告和后评价参数对比表", 800, APPENDIX8_PARAM_ROWS),
|
||
]
|
||
|
||
|
||
def _T(src: str, names: list[str]) -> list[tuple[str, str, str]]:
|
||
"""细则表格行:source 用于检索路径前缀,lvl3 与行名一致便于规则抽取。"""
|
||
return [(n, src, n) for n in names]
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 表7-1 项目综合评价评分表:多列(要素权重/评分/得分、指标评分/权重/得分),行键=「指标·要素」
|
||
# ---------------------------------------------------------------------------
|
||
TABLE_7_1_SCORING_TABLE_NAME = "表7-1 项目综合评价评分表"
|
||
|
||
TABLE_7_1_COLUMN_KEYS: list[str] = [
|
||
"要素权重",
|
||
"要素评分",
|
||
"要素得分",
|
||
"指标评分",
|
||
"指标权重",
|
||
"指标得分",
|
||
]
|
||
|
||
# 每行预置的列值(细则给定权重;评分/得分类由填报时录入,默认不写库或 None)
|
||
TABLE_7_1_ROW_CELL_DEFAULTS: list[tuple[str, dict[str, str]]] = [
|
||
("前期工作·资料完备性", {"要素权重": "0.4", "指标权重": "0.2"}),
|
||
("前期工作·程序规范性", {"要素权重": "0.4", "指标权重": "0.2"}),
|
||
("前期工作·前期工作质量", {"要素权重": "0.2", "指标权重": "0.2"}),
|
||
("建设实施·施工图设计质量", {"要素权重": "0.2", "指标权重": "0.2"}),
|
||
("建设实施·管理规范性", {"要素权重": "0.2", "指标权重": "0.2"}),
|
||
("建设实施·合同、招投标及采购", {"要素权重": "0.2", "指标权重": "0.2"}),
|
||
("建设实施·工程质量及进度", {"要素权重": "0.2", "指标权重": "0.2"}),
|
||
("建设实施·施工安全", {"要素权重": "0.1", "指标权重": "0.2"}),
|
||
("建设实施·竣工验收", {"要素权重": "0.1", "指标权重": "0.2"}),
|
||
("生产运行·生产准备", {"要素权重": "0.1", "指标权重": "0.2"}),
|
||
("生产运行·生产装置负荷率", {"要素权重": "0.3", "指标权重": "0.2"}),
|
||
("生产运行·生产达标率", {"要素权重": "0.3", "指标权重": "0.2"}),
|
||
("生产运行·生产运行周期", {"要素权重": "0.2", "指标权重": "0.2"}),
|
||
("生产运行·安全环保达标情况", {"要素权重": "0.1", "指标权重": "0.2"}),
|
||
("投资与经济效益·投资控制", {"要素权重": "0.5", "指标权重": "0.2"}),
|
||
("投资与经济效益·经济效益", {"要素权重": "0.5", "指标权重": "0.2"}),
|
||
("影响与持续性·装置规模和技术竞争力", {"要素权重": "0.4", "指标权重": "0.2"}),
|
||
("影响与持续性·安全环保节能等政策影响", {"要素权重": "0.3", "指标权重": "0.2"}),
|
||
("影响与持续性·科技进步和社会影响", {"要素权重": "0.1", "指标权重": "0.2"}),
|
||
("影响与持续性·资源持续性", {"要素权重": "0.2", "指标权重": "0.2"}),
|
||
("综合得分", {"要素权重": "1.0"}),
|
||
]
|
||
|
||
TABLE_7_1_FIELDS: list[tuple[str, str, str]] = [
|
||
(rk, "7.1.2 成功度评价", rk) for rk, _ in TABLE_7_1_ROW_CELL_DEFAULTS
|
||
]
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 多列表格:与 ALL_GLOBAL_TABLES 中 table_name 一致。
|
||
# 元组为 (数据列名列表, 行级默认单元格值);行键仍为「项目/要素名称」列(与单列表相同)。
|
||
# ---------------------------------------------------------------------------
|
||
MULTI_COLUMN_GLOBAL_SPECS: dict[str, tuple[list[str], Optional[dict[str, dict[str, str]]]]] = {
|
||
"附表1 项目建设工作程序表": (
|
||
["开始时间", "完成时间", "文号", "部门/单位", "备注"],
|
||
None,
|
||
),
|
||
"附表2 项目竣工决算投资构成表(万元)": (
|
||
[
|
||
"设备购置",
|
||
"安装工程",
|
||
"建筑工程",
|
||
"其他费用",
|
||
"合计",
|
||
"其中外汇",
|
||
"占建设投资的比例(%)",
|
||
"备注",
|
||
],
|
||
None,
|
||
),
|
||
"附表8 可研报告和后评价参数对比表": (
|
||
["单位", "可研报告", "后评价报告", "备注"],
|
||
None,
|
||
),
|
||
TABLE_7_1_SCORING_TABLE_NAME: (
|
||
TABLE_7_1_COLUMN_KEYS,
|
||
dict(TABLE_7_1_ROW_CELL_DEFAULTS),
|
||
),
|
||
# 正文表(细则列结构,便于多列采集与回填)
|
||
# 细则表2-1:行键=原料名称;列与 Word 表头一致(序号仅展示用,不入库为列)
|
||
"表2-1 资源(原料)组成、数量对比表": (
|
||
[
|
||
"规格",
|
||
"可研报告数量(万吨)",
|
||
"可研报告占比(%)",
|
||
"初步设计数量(万吨)",
|
||
"初步设计占比(%)",
|
||
"实际生产数量(万吨)",
|
||
"实际生产占比(%)",
|
||
"备注",
|
||
],
|
||
None,
|
||
),
|
||
"表2-2 资源(原料)性质对比表": (
|
||
["可研报告", "初步设计", "实际生产", "备注"],
|
||
None,
|
||
),
|
||
"表2-3 产品方案对比表": (
|
||
["可研规格", "可研数量(万吨/年)", "实际规格", "实际数量(万吨/年)", "备注"],
|
||
None,
|
||
),
|
||
"表2-5 总图、储运、公用工程及辅助工程对比": (
|
||
["单位", "可研报告", "初步设计", "实际实施", "备注"],
|
||
None,
|
||
),
|
||
"表2-6 储运、公用工程及辅助工程依托对比": (
|
||
["单位", "可研报告", "初步设计", "实际实施", "备注"],
|
||
None,
|
||
),
|
||
"表2-7 主要设计指标对比表": (
|
||
["单位", "可研报告", "初步设计", "实际运行", "备注"],
|
||
None,
|
||
),
|
||
"表5-1 主要经济指标对比表": (
|
||
["单位", "可研值", "后评价值", "差值", "比例(%)", "备注"],
|
||
None,
|
||
),
|
||
"表3-1 项目承包单位情况": (
|
||
["承包单位", "(合同金额)(万元)", "是/否招标", "资质情况"],
|
||
None,
|
||
),
|
||
"表3-2 施工图设计进度情况": (
|
||
["设计单位", "合同期限", "实际执行情况", "备注"],
|
||
None,
|
||
),
|
||
"表3-3 施工图设计变更情况(全厂性项目)": (
|
||
["设计变更(份数)", "设计变更金额(万元)", "备注"],
|
||
None,
|
||
),
|
||
"表3-4 施工图设计变更情况(单装置项目)": (
|
||
["设计变更(份数)", "设计变更金额(万元)", "备注"],
|
||
None,
|
||
),
|
||
"表3-5 影响投资或工期重(较)大设计变更及原因分析": (
|
||
["变更内容", "金额(万元)", "原因", "备注"],
|
||
None,
|
||
),
|
||
"表3-6 施工进度情况": (
|
||
["施工单位", "合同期限", "实际执行情况", "备注"],
|
||
None,
|
||
),
|
||
"表3-7 采购工作情况": (
|
||
["采购方式", "制造商", "供货商", "金额(万元)", "未招标原因"],
|
||
None,
|
||
),
|
||
"表4-1 投产以来运行周期统计表": (
|
||
[
|
||
"本周期开工日期",
|
||
"本周期运行时间(天)",
|
||
"非计划停工·次数(次)",
|
||
"非计划停工·时数(时)",
|
||
"原因简要分析",
|
||
],
|
||
None,
|
||
),
|
||
"表4-2 烷基化装置运行分析表(考核时间:×年×月×日)": (
|
||
["单位", "设计值", "标定值", "实际值", "备注"],
|
||
None,
|
||
),
|
||
"表5-2 投资变动情况表(单位:万元、万美元)": (
|
||
[
|
||
"投资估算",
|
||
"初设概算",
|
||
"竣工决算",
|
||
"决算较估算·差额",
|
||
"决算较估算·比例(%)",
|
||
"决算较概算·差额",
|
||
"决算较概算·比例(%)",
|
||
],
|
||
None,
|
||
),
|
||
"表5-3 工程费用变动情况表(万元、万美元)": (
|
||
[
|
||
"投资估算",
|
||
"初设概算",
|
||
"竣工决算",
|
||
"决算较估算·差额",
|
||
"决算较估算·比例(%)",
|
||
"决算较概算·差额",
|
||
"决算较概算·比例(%)",
|
||
],
|
||
None,
|
||
),
|
||
"表5-6 不同因素变化对项目内部收益率的影响": (
|
||
["财务内部收益率(%)", "变化幅度", "占比"],
|
||
None,
|
||
),
|
||
"表5-7 内部收益率为基准收益率时不确定因素临界点或临界值": (
|
||
["单位", "数值", "备注"],
|
||
None,
|
||
),
|
||
"表6-1 装置技术经济指标对比表": (
|
||
[
|
||
"技术来源",
|
||
"规模(万吨/年)",
|
||
"物耗(Wt)%",
|
||
"能耗(kgEo/t)",
|
||
"产品质量",
|
||
"产品收率(Wt)%",
|
||
"排名",
|
||
],
|
||
None,
|
||
),
|
||
}
|
||
|
||
# 时间表默认列(细则附表4/6/7、表5-5 等以「后评价时点前/后」分栏;具体见 TIME_TABLE_MULTI_COLUMNS)。
|
||
TIME_APPENDIX_MULTI_COLUMNS: list[str] = ["后评价时点前实际值", "后评价时点后预测值"]
|
||
|
||
TIME_TABLE_MULTI_COLUMNS: dict[str, list[str]] = {
|
||
"附表3 项目投资财务现金流量表(万元)": ["建设期", "后评价时点前实际值", "后评价时点后预测值"],
|
||
"附表4 利润与利润分配计算表(万元)": ["后评价时点前实际值", "后评价时点后预测值"],
|
||
"附表5 营业收入与营业税金及附加计算表(万元)": [
|
||
"价格(元/t)",
|
||
"后评价时点前实际值",
|
||
"后评价时点后预测值",
|
||
],
|
||
"附表6 总成本费用计算表(万元)": ["后评价时点前实际值", "后评价时点后预测值"],
|
||
"附表7 原材料、燃料及动力费用计算表(万元)": ["后评价时点前实际值", "后评价时点后预测值"],
|
||
"表2-4 ××年项目主要产品流向状况": [
|
||
"规格",
|
||
"实际产量",
|
||
"销量",
|
||
"产品实际流向",
|
||
"可研报告产品流向",
|
||
"备注",
|
||
],
|
||
# 与前端多年栏一致:每年三列,首年槽位「××年#1」,避免多栏共用一个 col_key
|
||
"表5-4 生产经营及效益情况对比表": [
|
||
"可研报告|××年#1",
|
||
"实际值|××年#1",
|
||
"增减(%)|××年#1",
|
||
],
|
||
"表5-5 主要生产经营指标": ["后评价时点前实际值", "后评价时点后预测值"],
|
||
}
|
||
|
||
|
||
def _norm_time_table_lookup_key(name: str) -> str:
|
||
"""空白/全半角括号/连字符差异下稳定匹配 TIME_TABLE_MULTI_COLUMNS 键(如「(万元)」与「(万元)」)。"""
|
||
t = "".join(str(name or "").split())
|
||
t = (
|
||
t.replace("(", "(")
|
||
.replace(")", ")")
|
||
.replace("-", "-")
|
||
.replace("—", "-")
|
||
.replace("–", "-")
|
||
)
|
||
return t.casefold()
|
||
|
||
|
||
def time_table_default_columns_for_name(table_name: str) -> list[str] | None:
|
||
"""时间表默认列顺序:先精确命中,再规范化表名后模糊命中。"""
|
||
raw = str(table_name or "").strip()
|
||
if not raw:
|
||
return None
|
||
hit = TIME_TABLE_MULTI_COLUMNS.get(raw)
|
||
if hit is not None:
|
||
return list(hit)
|
||
n = _norm_time_table_lookup_key(raw)
|
||
for k, v in TIME_TABLE_MULTI_COLUMNS.items():
|
||
if _norm_time_table_lookup_key(k) == n:
|
||
return list(v)
|
||
return None
|
||
|
||
|
||
# 细则正文「第2章~第7章」表格(与 Word 中表题一致;行键在可能冲突处加类别前缀)
|
||
GLOBAL_CHAPTER_TABLES: list[tuple[str, int, list[tuple[str, str, str]]]] = [
|
||
(
|
||
"表2-1 资源(原料)组成、数量对比表",
|
||
850,
|
||
_T("2.1.1 资源与原料评价", ["气分重碳四", "MTBE醚后碳四", "氢气", "合计"]),
|
||
),
|
||
(
|
||
"表2-2 资源(原料)性质对比表",
|
||
851,
|
||
_T(
|
||
"2.1.1 资源与原料评价",
|
||
["密度(kg/m³)", "硫含量(ppm)", "氮含量(ppm)", "其它指标(可增删)"],
|
||
),
|
||
),
|
||
(
|
||
"表2-3 产品方案对比表",
|
||
852,
|
||
_T(
|
||
"2.1.2.1 产品方案评价",
|
||
[
|
||
"汽油",
|
||
"航空煤油",
|
||
"柴油",
|
||
"XX化工品",
|
||
"XX润滑油",
|
||
"其它产品",
|
||
"轻油产品率(%)",
|
||
"综合商品率(%)",
|
||
"柴汽比",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表2-5 总图、储运、公用工程及辅助工程对比",
|
||
854,
|
||
_T(
|
||
"2.1.5 总图及系统配套工程评价",
|
||
[
|
||
"占地面积",
|
||
"建筑面积",
|
||
"铁路专用线",
|
||
"产品仓库面积",
|
||
"产品储罐总容积",
|
||
"原料储罐总容积",
|
||
"净水厂总能力",
|
||
"循环水厂总能力",
|
||
"污水处理厂总能力",
|
||
"总变电所总容量",
|
||
"锅炉供热总能力",
|
||
"辅助设施",
|
||
"其它(可增删)",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表2-6 储运、公用工程及辅助工程依托对比",
|
||
855,
|
||
_T(
|
||
"2.1.5 总图及系统配套工程评价",
|
||
[
|
||
"依托·铁路专用线",
|
||
"依托·产品仓库面积",
|
||
"依托·原料储罐容积",
|
||
"依托·产品储罐容积",
|
||
"依托·净化水厂能力",
|
||
"依托·循环水厂能力",
|
||
"依托·污水处理厂能力",
|
||
"依托·总变电所容量",
|
||
"依托·锅炉供热能力",
|
||
"依托·辅助设施",
|
||
"依托·其它(可增删)",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表2-7 主要设计指标对比表",
|
||
856,
|
||
_T(
|
||
"2.1.7 主要技术指标评价",
|
||
[
|
||
"原油加工量",
|
||
"综合商品率",
|
||
"全厂柴汽比",
|
||
"全厂新鲜水耗",
|
||
"全厂平均电耗",
|
||
"能耗",
|
||
"其它综合指标",
|
||
"常减压蒸馏装置能耗",
|
||
"其它装置指标(可增删)",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表3-1 项目承包单位情况",
|
||
860,
|
||
_T("3.2 招投标评价", ["承包单元·示例1", "承包单元·示例2", "承包单元·示例3"]),
|
||
),
|
||
(
|
||
"表3-2 施工图设计进度情况",
|
||
861,
|
||
_T("3.3.2 设计进度评价", ["工艺装置", "公用工程", "辅助设施"]),
|
||
),
|
||
(
|
||
"表3-3 施工图设计变更情况(全厂性项目)",
|
||
862,
|
||
_T("3.3.4 施工图设计变更管理评价", ["工艺装置", "公用工程", "辅助设施", "合计"]),
|
||
),
|
||
(
|
||
"表3-4 施工图设计变更情况(单装置项目)",
|
||
863,
|
||
_T("3.3.4 施工图设计变更管理评价", ["工艺", "电气", "其它专业(可增删)", "合计"]),
|
||
),
|
||
(
|
||
"表3-5 影响投资或工期重(较)大设计变更及原因分析",
|
||
864,
|
||
_T("3.3.4 施工图设计变更管理评价", ["重大变更·示例1", "重大变更·示例2", "重大变更·示例3"]),
|
||
),
|
||
(
|
||
"表3-6 施工进度情况",
|
||
865,
|
||
_T("3.4.2 施工计划的执行情况", ["工艺装置", "公用工程", "辅助设施"]),
|
||
),
|
||
(
|
||
"表3-7 采购工作情况",
|
||
866,
|
||
_T(
|
||
"3.5 采购工作评价",
|
||
[
|
||
"采购物资·示例1",
|
||
"采购物资·示例2",
|
||
"采购物资·示例3",
|
||
"应招标数量(个)",
|
||
"招标数量率(%)",
|
||
"应招标金额(万元)",
|
||
"招标金额率(%)",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表4-1 投产以来运行周期统计表",
|
||
870,
|
||
_T("4.3.2 生产运行总体情况评价", ["运行周期·装置示例1", "运行周期·装置示例2"]),
|
||
),
|
||
(
|
||
"表4-2 烷基化装置运行分析表(考核时间:×年×月×日)",
|
||
871,
|
||
_T(
|
||
"4.3.3 达标评价",
|
||
[
|
||
"生产能力",
|
||
"主要原材料(代表物料)",
|
||
"主要产品产量(代表产品)",
|
||
"公用工程消耗·水",
|
||
"公用工程消耗·蒸汽",
|
||
"公用工程消耗·电",
|
||
"公用工程消耗·燃料气",
|
||
"综合能耗",
|
||
"现金加工成本",
|
||
"单位毛利",
|
||
"其它(可增删)",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表5-1 主要经济指标对比表",
|
||
880,
|
||
_T(
|
||
"5.1 主要经济指标实现程度评价",
|
||
[
|
||
"1 项目报批总投资",
|
||
"1.1 建设投资",
|
||
"1.2 建设期利息",
|
||
"1.3 铺底流动资金",
|
||
"2 年均营业收入",
|
||
"3 年均总成本费用",
|
||
"4 年均流转税金及附加",
|
||
"5 年均利润总额",
|
||
"6 年均所得税金",
|
||
"7 年均税后利润",
|
||
"8 项目投资内部收益率(税后)",
|
||
"9 项目投资财务净现值(税后)",
|
||
"10 项目静态投资回收期(含建设期)",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表5-2 投资变动情况表(单位:万元、万美元)",
|
||
881,
|
||
_T(
|
||
"5.2.1 投资控制及变动原因分析",
|
||
[
|
||
"批准单位",
|
||
"批准文号",
|
||
"一 建设投资",
|
||
"1 固定资产投资",
|
||
"1.1 工程费用",
|
||
"1.1.1 工艺生产装置",
|
||
"1.1.2 总图运输",
|
||
"1.1.3 储运工程",
|
||
"1.1.4 辅助设施",
|
||
"1.1.5 公用工程",
|
||
"1.1.6 生产管理设施",
|
||
"1.1.7 厂外工程",
|
||
"1.1.8 工器具及生产家具购置费",
|
||
"1.2 固定资产其它费用",
|
||
"1.2.1 ×××费用",
|
||
"1.2.2 ×××费用",
|
||
"2 无形资产费用",
|
||
"2.1 ×××费用",
|
||
"3 递延资产费用",
|
||
"3.1 ×××费用",
|
||
"4 预备费用",
|
||
"4.1 基本预备费",
|
||
"4.2 价差预备费",
|
||
"二 固定资产投资方向调节税",
|
||
"三 建设期利息",
|
||
"四 铺底流动资金",
|
||
# 与附表2「报批项目总投资」行键区分,避免全局回填串表
|
||
"报批项目总投资(投资变动表)",
|
||
"其中:外汇(投资变动表)",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表5-3 工程费用变动情况表(万元、万美元)",
|
||
882,
|
||
_T(
|
||
"5.2.1 投资控制及变动原因分析",
|
||
[
|
||
"批准单位",
|
||
"批准文号",
|
||
"工程费用",
|
||
"工程费用·其中:外汇",
|
||
"1 工艺生产装置",
|
||
"1 工艺生产装置·其中:外汇",
|
||
"1.1 ×××装置",
|
||
"1.1 ×××装置·其中:外汇",
|
||
"1.1.1 设备购置费",
|
||
"1.1.1 设备购置费·其中:外汇",
|
||
"1.1.2 安装工程费",
|
||
"1.1.2 安装工程费·其中:外汇",
|
||
"1.1.3 建筑工程费",
|
||
"1.2 ×××装置",
|
||
"1.2 ×××装置·其中:外汇",
|
||
"1.2.1 设备购置费",
|
||
"1.2.1 设备购置费·其中:外汇",
|
||
"1.2.2 安装工程费",
|
||
"1.2.2 安装工程费·其中:外汇",
|
||
"1.2.3 建筑工程费",
|
||
"2 总图运输",
|
||
"3 储运工程",
|
||
"其它分项(可增删)",
|
||
"工程费用合计",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表5-6 不同因素变化对项目内部收益率的影响",
|
||
890,
|
||
_T(
|
||
"5.3.2 项目经济效益后评价",
|
||
[
|
||
"可研报告(基准)",
|
||
"后评价报告",
|
||
"建设投资变动",
|
||
"价格体系变动",
|
||
"生产负荷变动",
|
||
"建设周期变动",
|
||
"其它因素(可增删)",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
"表5-7 内部收益率为基准收益率时不确定因素临界点或临界值",
|
||
891,
|
||
_T(
|
||
"5.4 不确定性分析",
|
||
["生产负荷临界点", "产品价格临界值", "主要原材料价格临界值", "其它不确定因素"],
|
||
),
|
||
),
|
||
(
|
||
"表6-1 装置技术经济指标对比表",
|
||
895,
|
||
_T(
|
||
"6.2.3 主要技术及经济指标对比",
|
||
[
|
||
"XX装置·示例1",
|
||
"XX装置·示例2",
|
||
"XX装置·示例3",
|
||
"XX装置·示例4",
|
||
"XX装置·示例5",
|
||
],
|
||
),
|
||
),
|
||
(
|
||
TABLE_7_1_SCORING_TABLE_NAME,
|
||
896,
|
||
TABLE_7_1_FIELDS,
|
||
),
|
||
]
|
||
|
||
ALL_GLOBAL_TABLES: list[tuple[str, int, list[tuple[str, str, str]]]] = (
|
||
GLOBAL_SECTION_TABLES + GLOBAL_CHAPTER_TABLES + GLOBAL_APPENDIX_TABLES
|
||
)
|
||
|
||
# 表5-3 新旧 row_key 同义组(与 templates/js/quick-fill.js preferred53Specs 一致;报告/要素展示优先新键)
|
||
TABLE_5_3_ROW_KEY_ALTERNATES: tuple[tuple[str, ...], ...] = (
|
||
("批准单位", "工程费用变动·批准单位"),
|
||
("批准文号", "工程费用变动·批准文号"),
|
||
("工程费用",),
|
||
("工程费用·其中:外汇",),
|
||
("工程费用合计", "工程费用变动·工程费用合计"),
|
||
("1 工艺生产装置", "工程费用变动·工艺生产装置"),
|
||
("1 工艺生产装置·其中:外汇",),
|
||
("1.1 ×××装置",),
|
||
("1.1 ×××装置·其中:外汇",),
|
||
("1.1.1 设备购置费", "工程费用变动·装置·设备购置费"),
|
||
("1.1.1 设备购置费·其中:外汇",),
|
||
("1.1.2 安装工程费", "工程费用变动·装置·安装工程费"),
|
||
("1.1.2 安装工程费·其中:外汇",),
|
||
("1.1.3 建筑工程费", "工程费用变动·装置·建筑工程费"),
|
||
("1.2 ×××装置",),
|
||
("1.2 ×××装置·其中:外汇",),
|
||
("1.2.1 设备购置费",),
|
||
("1.2.1 设备购置费·其中:外汇",),
|
||
("1.2.2 安装工程费",),
|
||
("1.2.2 安装工程费·其中:外汇",),
|
||
("1.2.3 建筑工程费",),
|
||
("2 总图运输", "工程费用变动·总图运输"),
|
||
("3 储运工程", "工程费用变动·储运工程"),
|
||
("其它分项(可增删)", "工程费用变动·其它分项(可增删)"),
|
||
)
|
||
|
||
|
||
def _norm_global_table_lookup_key(name: str) -> str:
|
||
"""空白/全半角括号/连字符差异下稳定匹配 ALL_GLOBAL_TABLES 表名。"""
|
||
return _norm_time_table_lookup_key(name)
|
||
|
||
|
||
def global_table_row_keys(table_name: str) -> list[str]:
|
||
"""返回 ``ALL_GLOBAL_TABLES`` 中某张全局表的 canonical 行键顺序(与要素库 ``row_key`` 一致)。"""
|
||
raw = str(table_name or "").strip()
|
||
if not raw:
|
||
return []
|
||
for name, _, fields in ALL_GLOBAL_TABLES:
|
||
if name == raw:
|
||
return [str(r[0]) for r in fields if r and str(r[0]).strip()]
|
||
n = _norm_global_table_lookup_key(raw)
|
||
for name, _, fields in ALL_GLOBAL_TABLES:
|
||
if _norm_global_table_lookup_key(name) == n:
|
||
return [str(r[0]) for r in fields if r and str(r[0]).strip()]
|
||
return []
|
||
|
||
|
||
def canonical_row_order_for_table(table_name: str) -> list[str] | None:
|
||
"""附表2~8 及时间附表3~7 的标准行键顺序(与 quick-fill.js preferred*Rows / TIME_APPENDIX_SPECS 一致)。"""
|
||
raw = str(table_name or "").strip()
|
||
if not raw:
|
||
return None
|
||
n = _norm_global_table_lookup_key(raw)
|
||
if "附表2" in raw and "项目竣工决算投资构成表" in raw:
|
||
return list(APPENDIX2_CANONICAL_ROW_ORDER)
|
||
for spec_name, rows in TIME_APPENDIX_SPECS:
|
||
if _norm_global_table_lookup_key(spec_name) == n:
|
||
return list(rows)
|
||
for spec_name, rows in TIME_BODY_SPECS:
|
||
if _norm_global_table_lookup_key(spec_name) == n:
|
||
return list(rows)
|
||
if "附表8" in raw and "可研报告和后评价参数对比表" in raw:
|
||
return list(APPENDIX8_CANONICAL_ROW_ORDER)
|
||
return None
|
||
|
||
|
||
# 规则 /factors 抽取用:仅概况 + 附表1/2/8,避免正文几十张表拖慢超时;正文表仍完整预置在 ALL_GLOBAL_TABLES。
|
||
RULE_GLOBAL_TABLES: list[tuple[str, int, list[tuple[str, str, str]]]] = (
|
||
GLOBAL_SECTION_TABLES + GLOBAL_APPENDIX_TABLES
|
||
)
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# 时间维度:附表3~7 + 正文按年表;每(表名, 年)一张 ElementTable,行键与细则「项目名称」一致并加表前缀防冲突。
|
||
# ---------------------------------------------------------------------------
|
||
_CF = "现金流量·"
|
||
_PL = "利润表·"
|
||
_TX = "税金表·"
|
||
_CT = "成本表·"
|
||
_MT = "料燃动·"
|
||
|
||
TIME_APPENDIX_SPECS: list[tuple[str, list[str]]] = [
|
||
(
|
||
"附表3 项目投资财务现金流量表(万元)",
|
||
[
|
||
_CF + "1 现金流入",
|
||
_CF + "1.1 营业收入",
|
||
_CF + "1.2 回收固定资产余值",
|
||
_CF + "1.3 回收流动资金",
|
||
_CF + "2 现金流出",
|
||
_CF + "2.1 建设投资",
|
||
_CF + "2.2 流动资金",
|
||
_CF + "2.3 经营成本",
|
||
_CF + "2.4 营业税金及附加",
|
||
_CF + "2.5 调整所得税",
|
||
_CF + "3 净现金流量",
|
||
_CF + "计算指标·所得税后财务内部收益率(%)",
|
||
_CF + "计算指标·所得税后财务净现值(万元)",
|
||
_CF + "计算指标·所得税后静态投资回收期(年)",
|
||
],
|
||
),
|
||
(
|
||
"附表4 利润与利润分配计算表(万元)",
|
||
[
|
||
_PL + "1 营业收入",
|
||
_PL + "2 总成本费用",
|
||
_PL + "3 营业税金及附加",
|
||
_PL + "4 利润总额",
|
||
_PL + "5 弥补以前年度亏损",
|
||
_PL + "6 应纳税所得额",
|
||
_PL + "7 所得税",
|
||
_PL + "8 净利润",
|
||
_PL + "9 盈余公积及公益金",
|
||
_PL + "10 可供分配利润",
|
||
_PL + "11 息税前利润总额",
|
||
_PL + "12 调整所得税",
|
||
],
|
||
),
|
||
(
|
||
"附表5 营业收入与营业税金及附加计算表(万元)",
|
||
[
|
||
_TX + "1 营业收入",
|
||
_TX + "1.1 产品A·销量",
|
||
_TX + "1.1 产品A·营业收入",
|
||
_TX + "1.1 产品A·销项税",
|
||
_TX + "1.2 产品B·销量",
|
||
_TX + "1.2 产品B·营业收入",
|
||
_TX + "1.2 产品B·销项税",
|
||
_TX + "1.3 产品·……",
|
||
_TX + "3 增值税",
|
||
_TX + "3.1 销项税",
|
||
_TX + "3.2 进项税",
|
||
_TX + "3.3 设备材料进项税",
|
||
_TX + "4 消费税",
|
||
_TX + "4.1 汽油",
|
||
_TX + "4.2 柴油",
|
||
_TX + "4.3 ……",
|
||
_TX + "5 城建税",
|
||
_TX + "6 教育费附加",
|
||
_TX + "7 营业税金及附加",
|
||
],
|
||
),
|
||
(
|
||
"附表6 总成本费用计算表(万元)",
|
||
[
|
||
_CT + "1 生产成本",
|
||
_CT + "1.1 原材料",
|
||
_CT + "1.2 辅助材料",
|
||
_CT + "1.3 燃料",
|
||
_CT + "1.4 动力",
|
||
_CT + "1.5 员工工资及福利",
|
||
_CT + "1.6 制造费用",
|
||
_CT + "1.6.1 折旧费",
|
||
_CT + "1.6.2 修理费",
|
||
_CT + "1.6.3 其他制造费用",
|
||
_CT + "2 期间费用",
|
||
_CT + "2.1 无形资产摊销",
|
||
_CT + "2.2 递延资产摊销",
|
||
_CT + "2.3 安全生产费用",
|
||
_CT + "2.4 安保基金",
|
||
_CT + "2.5 其他管理费",
|
||
_CT + "3 财务费用",
|
||
_CT + "3.1 长期借款利息",
|
||
_CT + "3.2 流动资金借款利息",
|
||
_CT + "4 总成本费用",
|
||
_CT + "4.1 固定成本",
|
||
_CT + "4.2 可变成本",
|
||
_CT + "5 经营成本",
|
||
_CT + "6 单位加工成本",
|
||
_CT + "7 单位产品生产成本(化工项目)",
|
||
],
|
||
),
|
||
(
|
||
"附表7 原材料、燃料及动力费用计算表(万元)",
|
||
[
|
||
_MT + "1 原材料费用",
|
||
_MT + "1.1 原料A",
|
||
_MT + "1.1 原料A·单价",
|
||
_MT + "1.1 原料A·数量",
|
||
_MT + "1.1 原料A·进项税额",
|
||
_MT + "1.2 原料B",
|
||
_MT + "1.2 原料B·……",
|
||
_MT + "2 辅助材料费用",
|
||
_MT + "2.1 辅助材料A",
|
||
_MT + "2.1 辅助材料A·单价",
|
||
_MT + "2.1 辅助材料A·数量",
|
||
_MT + "2.1 辅助材料A·进项税额",
|
||
_MT + "2.2 辅助材料B",
|
||
_MT + "2.2 辅助材料B·……",
|
||
_MT + "3 燃料费",
|
||
_MT + "3.1 燃料A",
|
||
_MT + "3.1 燃料A·单价",
|
||
_MT + "3.1 燃料A·数量",
|
||
_MT + "3.1 燃料A·进项税额",
|
||
_MT + "3.2 燃料B",
|
||
_MT + "3.2 燃料B·……",
|
||
_MT + "4 动力费",
|
||
_MT + "4.1 动力A",
|
||
_MT + "4.1 动力A·单价",
|
||
_MT + "4.1 动力A·数量",
|
||
_MT + "4.1 动力A·进项税额",
|
||
_MT + "4.2 动力B",
|
||
_MT + "4.2 动力B·……",
|
||
_MT + "5 进项税合计",
|
||
],
|
||
),
|
||
]
|
||
|
||
# 细则正文要求按年(或评价年)填报的表格,与附表3~7 相同按「年 × 表」预置
|
||
TIME_BODY_SPECS: list[tuple[str, list[str]]] = [
|
||
(
|
||
"表2-4 ××年项目主要产品流向状况",
|
||
[
|
||
"产品名称·1",
|
||
"产品名称·2",
|
||
"产品名称·3",
|
||
"小计",
|
||
],
|
||
),
|
||
(
|
||
"表5-4 生产经营及效益情况对比表",
|
||
[
|
||
"运行情况·生产天数",
|
||
"运行情况·负荷率",
|
||
"主要原料价格·氢气",
|
||
"主要产品年产量·98#汽油",
|
||
"主要产品年产量·95#汽油",
|
||
"主要产品年产量·92#汽油",
|
||
"主要产品年产量·异丁烷",
|
||
"主要产品年产量·正丁烷",
|
||
"主要产品年产量·燃料气",
|
||
"主要产品年产量·液化气",
|
||
"主要产品年销售量·98#汽油",
|
||
"主要产品年销售量·95#汽油",
|
||
"主要产品年销售量·92#汽油",
|
||
"主要产品年销售量·异丁烷",
|
||
"主要产品年销售量·正丁烷",
|
||
"主要产品年销售量·燃料气",
|
||
"主要产品年销售量·液化气",
|
||
"主要原料和公用工程消耗量·氢气",
|
||
"主要原料和公用工程消耗量·辅助材料",
|
||
"主要原料和公用工程消耗量·电",
|
||
"主要原料和公用工程消耗量·净化风",
|
||
"主要原料和公用工程消耗量·循环水",
|
||
"主要原料和公用工程消耗量·除盐水",
|
||
"主要原料和公用工程消耗量·除氧水",
|
||
"主要原料和公用工程消耗量·蒸汽1.0MPa",
|
||
"主要原料和公用工程消耗量·蒸汽3.5MPa",
|
||
"主要原料和公用工程消耗量·氮气",
|
||
"主要原料和公用工程消耗量·废渣处理",
|
||
"主要原料和公用工程消耗量·新鲜水",
|
||
"主要原料和公用工程消耗量·凝结水",
|
||
"主要经济指标·营业收入",
|
||
"主要经济指标·成本费用",
|
||
"主要经济指标·利润总额",
|
||
"主要经济指标·税后利润",
|
||
],
|
||
),
|
||
(
|
||
"表5-5 主要生产经营指标",
|
||
[
|
||
"生产负荷",
|
||
"原料消耗量",
|
||
"燃料消耗量",
|
||
"动力消耗量",
|
||
"产品产量",
|
||
"其它",
|
||
],
|
||
),
|
||
]
|
||
|
||
ALL_TIME_TABLE_SPECS: list[tuple[str, list[str]]] = TIME_APPENDIX_SPECS + TIME_BODY_SPECS
|
||
|
||
# 哈尔滨石化分公司烷基化装置建设项目 — 表5-4 生产经营及效益情况对比(可研预测 vs 时点前实际值 2019 年)
|
||
# 通过 element_service.apply_harbin_alkylation_table54_preset 或 POST .../presets/harbin-alkylation-table54 写入指定项目的要素表。
|
||
# 列键须与 TIME_TABLE_MULTI_COLUMNS 中「可研报告|××年#1」一致,避免与模板同步占位列并存时出现双「××年」空栏。
|
||
HARBIN_ALKYLATION_TABLE54_CELL_VALUES: dict[str, dict[str, str]] = {
|
||
"运行情况·生产天数": {"可研报告|××年#1": "365", "实际值|××年#1": "334", "增减(%)|××年#1": "-8.49"},
|
||
"运行情况·负荷率": {"可研报告|××年#1": "100.00%", "实际值|××年#1": "42.87%", "增减(%)|××年#1": "-57.13"},
|
||
"主要原料价格·氢气": {"可研报告|××年#1": "4000", "实际值|××年#1": "4376.74", "增减(%)|××年#1": "9.42"},
|
||
"主要产品年产量·98#汽油": {"可研报告|××年#1": "1.08", "实际值|××年#1": "0.30", "增减(%)|××年#1": "-72.16"},
|
||
"主要产品年产量·95#汽油": {"可研报告|××年#1": "14.03", "实际值|××年#1": "6.13", "增减(%)|××年#1": "-56.34"},
|
||
"主要产品年产量·92#汽油": {"可研报告|××年#1": "1.08", "实际值|××年#1": "0.00", "增减(%)|××年#1": "-100.00"},
|
||
"主要产品年产量·异丁烷": {"可研报告|××年#1": "", "实际值|××年#1": "1.38", "增减(%)|××年#1": "/"},
|
||
"主要产品年产量·正丁烷": {"可研报告|××年#1": "5.64", "实际值|××年#1": "1.17", "增减(%)|××年#1": "-79.27"},
|
||
"主要产品年产量·燃料气": {"可研报告|××年#1": "", "实际值|××年#1": "0.12", "增减(%)|××年#1": "/"},
|
||
"主要产品年产量·液化气": {"可研报告|××年#1": "-21.93", "实际值|××年#1": "-9.24", "增减(%)|××年#1": "-57.85"},
|
||
"主要产品年销售量·98#汽油": {"可研报告|××年#1": "1.08", "实际值|××年#1": "0.30", "增减(%)|××年#1": "-72.16"},
|
||
"主要产品年销售量·95#汽油": {"可研报告|××年#1": "14.03", "实际值|××年#1": "6.13", "增减(%)|××年#1": "-56.34"},
|
||
"主要产品年销售量·92#汽油": {"可研报告|××年#1": "1.08", "实际值|××年#1": "0.00", "增减(%)|××年#1": "-100.00"},
|
||
"主要产品年销售量·异丁烷": {"可研报告|××年#1": "", "实际值|××年#1": "1.38", "增减(%)|××年#1": "/"},
|
||
"主要产品年销售量·正丁烷": {"可研报告|××年#1": "5.64", "实际值|××年#1": "1.17", "增减(%)|××年#1": "-79.27"},
|
||
"主要产品年销售量·燃料气": {"可研报告|××年#1": "", "实际值|××年#1": "0.12", "增减(%)|××年#1": "/"},
|
||
"主要产品年销售量·液化气": {"可研报告|××年#1": "-21.93", "实际值|××年#1": "-9.24", "增减(%)|××年#1": "-57.85"},
|
||
"主要原料和公用工程消耗量·氢气": {"可研报告|××年#1": "0.02", "实际值|××年#1": "0.01", "增减(%)|××年#1": "-51.49"},
|
||
"主要原料和公用工程消耗量·辅助材料": {"可研报告|××年#1": "3054", "实际值|××年#1": "796.66", "增减(%)|××年#1": "-73.91"},
|
||
"主要原料和公用工程消耗量·电": {"可研报告|××年#1": "1346", "实际值|××年#1": "669.75", "增减(%)|××年#1": "-50.24"},
|
||
"主要原料和公用工程消耗量·净化风": {"可研报告|××年#1": "294", "实际值|××年#1": "235.02", "增减(%)|××年#1": "-20.06"},
|
||
"主要原料和公用工程消耗量·循环水": {"可研报告|××年#1": "483", "实际值|××年#1": "231.96", "增减(%)|××年#1": "-51.97"},
|
||
"主要原料和公用工程消耗量·除盐水": {"可研报告|××年#1": "10.50", "实际值|××年#1": "4.01", "增减(%)|××年#1": "-61.80"},
|
||
"主要原料和公用工程消耗量·除氧水": {"可研报告|××年#1": "", "实际值|××年#1": "0.01", "增减(%)|××年#1": "/"},
|
||
"主要原料和公用工程消耗量·蒸汽1.0MPa": {"可研报告|××年#1": "-8.99", "实际值|××年#1": "-6.11", "增减(%)|××年#1": "-31.98"},
|
||
"主要原料和公用工程消耗量·蒸汽3.5MPa": {"可研报告|××年#1": "28.31", "实际值|××年#1": "19.67", "增减(%)|××年#1": "-30.52"},
|
||
"主要原料和公用工程消耗量·氮气": {"可研报告|××年#1": "", "实际值|××年#1": "288.17", "增减(%)|××年#1": "/"},
|
||
"主要原料和公用工程消耗量·废渣处理": {"可研报告|××年#1": "0.04", "实际值|××年#1": "0.0121", "增减(%)|××年#1": "-67.73"},
|
||
"主要原料和公用工程消耗量·新鲜水": {"可研报告|××年#1": "", "实际值|××年#1": "0.15", "增减(%)|××年#1": "/"},
|
||
"主要原料和公用工程消耗量·凝结水": {"可研报告|××年#1": "19.32", "实际值|××年#1": "0.00", "增减(%)|××年#1": "-100.00"},
|
||
"主要经济指标·营业收入": {"可研报告|××年#1": "64278", "实际值|××年#1": "30610", "增减(%)|××年#1": "-52.38"},
|
||
"主要经济指标·成本费用": {"可研报告|××年#1": "10627", "实际值|××年#1": "7332", "增减(%)|××年#1": "-31.01"},
|
||
"主要经济指标·利润总额": {"可研报告|××年#1": "13785", "实际值|××年#1": "7876", "增减(%)|××年#1": "-42.87"},
|
||
"主要经济指标·税后利润": {"可研报告|××年#1": "10339", "实际值|××年#1": "5907", "增减(%)|××年#1": "-42.87"},
|
||
}
|
||
|
||
# 行键已按表加前缀,一般无需覆盖;保留字典供日后特例。
|
||
TIME_ROW_TABLE_OVERRIDE: dict[str, str] = {}
|
||
|
||
TIME_ROW_PRIMARY_TABLE: dict[str, str] = {}
|
||
for _tname, _rows in ALL_TIME_TABLE_SPECS:
|
||
for _rk in _rows:
|
||
if _rk not in TIME_ROW_PRIMARY_TABLE:
|
||
TIME_ROW_PRIMARY_TABLE[_rk] = _tname
|
||
for _k, _t in TIME_ROW_TABLE_OVERRIDE.items():
|
||
TIME_ROW_PRIMARY_TABLE[_k] = _t
|
||
|
||
TIME_KEY_SET: set[str] = {r for _, rows in ALL_TIME_TABLE_SPECS for r in rows}
|
||
|
||
# 规则抽取用:全局 + 少量时间字段(name 须与时间表行键一致)
|
||
RULE_EXTRACT_EXTRA_TIME: list[tuple[str, str, str, str]] = [
|
||
("附表4 利润与利润分配计算表(万元)", _PL + "1 营业收入", "5.3.1 项目投产以来生产经营及效益状况", "营业收入"),
|
||
("附表4 利润与利润分配计算表(万元)", _PL + "2 总成本费用", "5.3.1 项目投产以来生产经营及效益状况", "总成本费用"),
|
||
("附表4 利润与利润分配计算表(万元)", _PL + "8 净利润", "5.3.1 项目投产以来生产经营及效益状况", "净利润"),
|
||
("附表5 营业收入与营业税金及附加计算表(万元)", _TX + "7 营业税金及附加", "5.3.2 项目经济效益后评价", "营业税金及附加"),
|
||
("附表3 项目投资财务现金流量表(万元)", _CF + "3 净现金流量", "5.3.2 项目经济效益后评价", "净现金流量"),
|
||
]
|
||
|
||
|
||
def build_rule_factor_items() -> list[dict[str, str]]:
|
||
"""规则抽取条目(精简);完整要素模版见 ALL_GLOBAL_TABLES + ALL_TIME_TABLE_SPECS。"""
|
||
out: list[dict[str, str]] = []
|
||
for table_name, _base, fields in RULE_GLOBAL_TABLES:
|
||
for name, source, lvl3 in fields:
|
||
out.append(
|
||
{
|
||
"name": name,
|
||
"source": source,
|
||
"lvl3": lvl3,
|
||
"table_name": table_name,
|
||
"table_type": "global",
|
||
}
|
||
)
|
||
for table_name, name, source, lvl3 in RULE_EXTRACT_EXTRA_TIME:
|
||
out.append(
|
||
{
|
||
"name": name,
|
||
"source": source,
|
||
"lvl3": lvl3,
|
||
"table_name": table_name,
|
||
"table_type": "time",
|
||
}
|
||
)
|
||
return out
|
||
|
||
|
||
ROW_KEY_TO_GLOBAL_TABLE: dict[str, str] = {}
|
||
for _tn, _b, fields in ALL_GLOBAL_TABLES:
|
||
for key, _, _ in fields:
|
||
ROW_KEY_TO_GLOBAL_TABLE[key] = _tn
|
||
|
||
GLOBAL_KEY_SET = {key for key in ROW_KEY_TO_GLOBAL_TABLE}
|
||
|
||
|
||
def all_global_row_specs() -> list[tuple[str, str, str, str]]:
|
||
rows: list[tuple[str, str, str, str]] = []
|
||
for table_name, _b, fields in ALL_GLOBAL_TABLES:
|
||
for name, source, lvl3 in fields:
|
||
rows.append((table_name, name, source, lvl3))
|
||
return rows
|
||
|
||
|
||
# 章节/表到“材料文档关键词”硬映射:
|
||
# key: source 分组名(通常为 table_name,如“章节要素-第2章前期工作评价”“附表4 ...”)
|
||
# value: 该分组允许命中的文档名关键词(按 document_markdowns.extracted_filename/kb_documents.name 匹配)
|
||
#
|
||
# 说明:
|
||
# 1) 这里不做打分,命中即纳入;
|
||
# 2) 未配置的分组默认不过滤(避免因未补齐映射导致漏抽);
|
||
# 3) 关键词建议用 2~8 字的稳定片段,如“可研”“初设”“竣工决算”“后评价报告”。
|
||
SOURCE_DOC_KEYWORDS_MAP: dict[str, list[str]] = {
|
||
# 摘要与正文章节(从摘要开始)
|
||
"章节要素-摘要与前言": ["可研"],
|
||
"章节要素-第1章项目概况": ["可研", "竣工验收"],
|
||
"章节要素-第2章前期工作评价": ["可研", "初设"],
|
||
"章节要素-第3章建设实施评价": ["初设", "施工", "监理", "竣工验收"],
|
||
"章节要素-第4章生产运行评价": ["生产运行", "标定", "运行月报", "可研"],
|
||
"章节要素-第5章投资与经济效益评价": ["竣工决算", "财务", "可研"],
|
||
"章节要素-第6章影响与持续性评价": [
|
||
"可研",
|
||
"环评",
|
||
"环境影响",
|
||
"环保",
|
||
"环境保护",
|
||
"验收监测",
|
||
"安评",
|
||
"安全评价",
|
||
"安全预评价",
|
||
"安全验收",
|
||
"安全设施",
|
||
],
|
||
|
||
# 第2章相关表
|
||
"表2-1 资源(原料)组成、数量对比表": ["可研"],
|
||
"表2-2 资源(原料)性质对比表": ["可研"],
|
||
"表2-3 产品方案对比表": ["可研"],
|
||
"表2-4 ××年项目主要产品流向状况": ["可研"],
|
||
"表2-5 总图、储运、公用工程及辅助工程对比": ["可研"],
|
||
"表2-6 储运、公用工程及辅助工程依托对比": ["可研"],
|
||
"表2-7 主要设计指标对比表": ["可研"],
|
||
|
||
# 第3章相关表
|
||
"表3-1 项目承包单位情况": ["施工", "监理", "可研"],
|
||
"表3-2 施工图设计进度情况": ["施工图", "初设", "可研"],
|
||
"表3-3 施工图设计变更情况(全厂性项目)": ["施工图", "设计变更", "可研"],
|
||
"表3-4 施工图设计变更情况(单装置项目)": ["施工图", "设计变更", "可研"],
|
||
"表3-5 影响投资或工期重(较)大设计变更及原因分析": ["设计变更", "可研"],
|
||
"表3-6 施工进度情况": ["施工进度", "可研"],
|
||
"表3-7 采购工作情况": ["采购", "可研"],
|
||
|
||
# 第4章相关表
|
||
"表4-1 投产以来运行周期统计表": ["生产运行", "可研"],
|
||
"表4-2 烷基化装置运行分析表(考核时间:×年×月×日)": ["生产运行", "标定", "可研"],
|
||
|
||
# 第5章相关表
|
||
"表5-1 主要经济指标对比表": ["财务", "竣工决算", "可研"],
|
||
"表5-2 投资变动情况表(单位:万元、万美元)": ["竣工决算", "投资", "可研"],
|
||
"表5-3 工程费用变动情况表(万元、万美元)": ["竣工决算", "工程费用", "可研"],
|
||
"表5-4 生产经营及效益情况对比表": ["生产经营", "财务", "可研"],
|
||
"表5-5 主要生产经营指标": ["生产经营", "财务", "可研"],
|
||
"表5-6 不同因素变化对项目内部收益率的影响": ["财务", "可研"],
|
||
"表5-7 内部收益率为基准收益率时不确定因素临界点或临界值": ["财务", "可研"],
|
||
|
||
# 第6/7章相关表
|
||
"表6-1 装置技术经济指标对比表": [
|
||
"可研",
|
||
"环评",
|
||
"环境影响",
|
||
"环保",
|
||
"安评",
|
||
"安全评价",
|
||
"安全设施",
|
||
],
|
||
|
||
# 附表
|
||
"附表1 项目建设工作程序表": ["可研", "前期", "批复"],
|
||
"附表2 项目竣工决算投资构成表(万元)": ["竣工决算"],
|
||
"附表3 项目投资财务现金流量表(万元)": ["财务", "可研"],
|
||
"附表4 利润与利润分配计算表(万元)": ["财务", "可研"],
|
||
"附表5 营业收入与营业税金及附加计算表(万元)": ["财务", "可研"],
|
||
"附表6 总成本费用计算表(万元)": ["财务", "可研"],
|
||
"附表7 原材料、燃料及动力费用计算表(万元)": ["财务", "可研"],
|
||
"附表8 可研报告和后评价参数对比表": ["可研"],
|
||
}
|
||
|
||
|
||
def source_doc_keywords_for(src: str) -> list[str]:
|
||
"""
|
||
获取某个 source 分组对应的文档关键词(支持前缀键匹配)。
|
||
"""
|
||
key = str(src or "").strip()
|
||
if not key:
|
||
return []
|
||
exact = SOURCE_DOC_KEYWORDS_MAP.get(key)
|
||
if exact is not None:
|
||
return [str(x).strip() for x in exact if str(x).strip()]
|
||
for k, vals in SOURCE_DOC_KEYWORDS_MAP.items():
|
||
ks = str(k or "").strip()
|
||
if ks and key.startswith(ks):
|
||
return [str(x).strip() for x in vals if str(x).strip()]
|
||
return []
|