# -*- coding: utf-8 -*-
"""生成《农村自建房施工合同（2026修订版）》docx"""
import docx
from docx import Document
from docx.shared import Pt, Cm, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_LINE_SPACING
from docx.enum.table import WD_TABLE_ALIGNMENT
from docx.oxml.ns import qn
from docx.oxml import OxmlElement

BODY_FONT = '宋体'; HEAD_FONT = '黑体'
B = '＿＿＿＿＿＿'          # 待填短线
doc = Document()

# ---------- 页面设置 ----------
sec = doc.sections[0]
sec.page_width, sec.page_height = Cm(21.0), Cm(29.7)
sec.top_margin = Cm(2.4); sec.bottom_margin = Cm(2.2)
sec.left_margin = Cm(2.6); sec.right_margin = Cm(2.4)

# ---------- 默认样式 ----------
st = doc.styles['Normal']
st.font.name = BODY_FONT; st.font.size = Pt(10.5)
st.element.rPr.rFonts.set(qn('w:eastAsia'), BODY_FONT)
st.paragraph_format.line_spacing_rule = WD_LINE_SPACING.MULTIPLE
st.paragraph_format.line_spacing = 1.45
st.paragraph_format.space_after = Pt(2)

def setfont(run, name=BODY_FONT, size=10.5, bold=False, color=None):
    run.font.name = name; run.font.size = Pt(size); run.bold = bold
    run._element.rPr.rFonts.set(qn('w:eastAsia'), name)
    if color: run.font.color.rgb = color

def P(text='', size=10.5, bold=False, align='left', indent=0.0,
      first_line=0.0, font=BODY_FONT, space_before=0, space_after=2, color=None):
    p = doc.add_paragraph()
    p.paragraph_format.left_indent = Cm(indent)
    p.paragraph_format.first_line_indent = Cm(first_line)
    p.paragraph_format.space_before = Pt(space_before)
    p.paragraph_format.space_after = Pt(space_after)
    p.alignment = {'left':WD_ALIGN_PARAGRAPH.LEFT,'center':WD_ALIGN_PARAGRAPH.CENTER,
                   'right':WD_ALIGN_PARAGRAPH.RIGHT,'just':WD_ALIGN_PARAGRAPH.JUSTIFY}[align]
    if text:
        # 支持 **加粗** 片段
        parts = text.split('**')
        for i, seg in enumerate(parts):
            if not seg: continue
            r = p.add_run(seg)
            setfont(r, font, size, bold or (i % 2 == 1), color)
    return p

def H1(t):
    p = P(t, size=15, bold=True, align='center', font=HEAD_FONT, space_before=10, space_after=8)
    return p

def H2(t):
    P(t, size=12, bold=True, font=HEAD_FONT, space_before=9, space_after=4)

def H3(t):
    P(t, size=10.5, bold=True, font=HEAD_FONT, space_before=5, space_after=2)

def HR():
    p = doc.add_paragraph(); p.paragraph_format.space_before = Pt(2); p.paragraph_format.space_after = Pt(4)
    pPr = p._p.get_or_add_pPr(); pbdr = OxmlElement('w:pBdr'); bt = OxmlElement('w:bottom')
    bt.set(qn('w:val'),'single'); bt.set(qn('w:sz'),'6'); bt.set(qn('w:color'),'888888')
    pbdr.append(bt); pPr.append(pbdr)

def add_footer_pagenum():
    ftr = doc.sections[0].footer
    p = ftr.paragraphs[0]; p.alignment = WD_ALIGN_PARAGRAPH.CENTER
    r = p.add_run('第 '); setfont(r, BODY_FONT, 9)
    fld = OxmlElement('w:fldSimple'); fld.set(qn('w:instr'), 'PAGE')
    p._p.append(fld)
    r2 = p.add_run(' 页 / 共 '); setfont(r2, BODY_FONT, 9)
    fld2 = OxmlElement('w:fldSimple'); fld2.set(qn('w:instr'), 'NUMPAGES')
    p._p.append(fld2)
    r3 = p.add_run(' 页'); setfont(r3, BODY_FONT, 9)

add_footer_pagenum()

def table(rows, widths=None, header=True, size=9.5):
    t = doc.add_table(rows=0, cols=len(rows[0]))
    t.style = 'Table Grid'; t.alignment = WD_TABLE_ALIGNMENT.CENTER
    for ri, row in enumerate(rows):
        cells = t.add_row().cells
        for ci, txt in enumerate(row):
            cells[ci].text = ''
            p = cells[ci].paragraphs[0]
            p.paragraph_format.space_before = Pt(1); p.paragraph_format.space_after = Pt(1)
            p.paragraph_format.line_spacing = 1.15
            for i, seg in enumerate(str(txt).split('**')):
                if not seg: continue
                r = p.add_run(seg)
                setfont(r, BODY_FONT, size, bold=(header and ri == 0) or (i % 2 == 1))
    if widths:
        for ri in range(len(t.rows)):
            for ci, w in enumerate(widths):
                t.rows[ri].cells[ci].width = Cm(w)
    return t

# ==================== 正文 ====================
H1('农村自建房施工合同')
P('（2026 年修订版）', size=10.5, align='center', space_after=10)

table([
 ['合同编号', B, '签订地点', '四川省成都市温江区' + B],
 ['签订日期', B + ' 年 ' + B + ' 月 ' + B + ' 日', '工程地点', '成都市温江区和盛镇' + B],
], widths=[2.4,4.6,2.4,6.2], header=False)

P()
H3('甲方（发包方）')
P('姓名：文泽志　　身份证号：51012319681216253X')
P('联系电话：13551110207　　住址：' + B)
P()
H3('乙方（承包方）')
P('☐ **乙方为自然人**：姓名 ' + B + '　身份证号 ' + B + '　住址 ' + B + '　电话 ' + B)
P('☐ **乙方为单位**：名称 ' + B + '　统一社会信用代码 ' + B)
P('　　法定代表人 ' + B + '　住所 ' + B + '　电话 ' + B)
P('（**上述两项必须择一填写并勾选，不得同时填写；不得只填个人姓名而由单位盖章**）', size=9.5)
P()
H3('保证人（乙方为单位时，本栏为必填）')
P('姓名：江剑凯　　联系电话：13258212263　　身份证号：' + B)
P('住址：' + B)
P('（保证人就乙方在本合同项下的全部义务向甲方承担连带责任保证，详见第十三条）', size=9.5)

P()
H3('特别提示（签约前必读）')
P('1. 乙方为单位时，必须由**法定代表人签字并加盖单位公章**；乙方为自然人时，必须由**本人签字并按指印**。仅盖章未签字、或仅签字未盖章的，甲方有权拒绝接收。', size=9.5)
P('2. 本合同所有空白处必须在**双方在场时一次性填写完毕**，任何一方不得事后单方添加或涂改。', size=9.5)
P('3. 乙方应在签约时提供营业执照（或身份证）复印件、法定代表人身份证明、施工人员名单及意外伤害保险单，作为本合同附件。', size=9.5)
P('4. 本工程涉及的**结构施工图**是本合同的重要附件，乙方应在开工前提供并经甲方书面确认。', size=9.5)

HR()

H2('鉴　于')
P('双方曾于 2026 年 9 月 10 日就本工程签署过一份《农村自建房施工合同》及其附件（以下称"原文件"）。'
  '因原文件主要条款空白、乙方未完成签署，双方**一致确认原文件未成立生效**。'
  '现经双方平等、自愿协商，就本工程重新签订本合同。', first_line=0.74)
P('**本合同签订生效后，原文件（含原合同第 4 页末尾的手写《补条》）全部终止，双方均不得再依据原文件主张任何权利；'
  '原文件与本合同不一致的，一律以本合同为准。**', first_line=0.74, space_after=6)

# ---------- 第一条 ----------
H2('第一条　工程概况')
P('1.1　工程地点：四川省成都市温江区和盛镇 ' + B + '（村/社区）' + B + ' 号。', first_line=0.74)
P('1.2　建房类型：农村自建住宅（原址翻建）。', first_line=0.74)
P('1.3　建筑层数：**2 层**（属《四川省农村住房建设竣工验收管理指导意见》所称「两层及以下农村低层住房」），另设坡屋顶；☐ 含闷顶/阁楼 ☐ 不含。**本工程不含地下室。**', first_line=0.74)
P('1.4　建筑面积：约 **277.2 平方米**，以双方确认的施工图纸为准，最终按第五条据实结算。', first_line=0.74)
P('1.5　结构形式：砖混结构。', first_line=0.74)
P('1.6　檐口与围墙：', first_line=0.74)
P('（1）常规檐口外挑尺寸**不超过 350mm**，不另计价；外挑在 **350mm 至 600mm** 之间的，超出 350mm 的部分按 ' + B + ' 元/延米计价；正面檐口外挑**超过 600mm** 的，须经甲方书面同意后按前述单价据实结算；未经甲方书面同意的，甲方有权要求乙方恢复至 350mm 以内，费用由乙方承担。', indent=0.74, size=10)
P('（2）顶面围墙高度**不超过 60cm**；超过部分按实际增加工程量另行书面签证计价。', indent=0.74, size=10)
P('1.7　层高标准：一层 **3.6m**，二层 **3.3m**（以图纸标注的结构层高为准）。', first_line=0.74)
P('1.8　基础：条形基础，基础深度以正负零以下 **1.5m** 为标准；超过 1.5m 的部分按实际增加工程量另行书面签证计价。基础尺寸与配筋以双方确认的**结构施工图**为准。', first_line=0.74)
P('1.9　施工图纸：☐ 乙方提供　☐ 甲方提供。乙方提供图纸的，应在开工前 **7** 日交付甲方书面确认。'
  '图纸应包含：户型图、效果图、建筑施工图、**结构施工图**、水电图；免费修改不少于 ' + B + ' 次。图纸目录见附件四。', first_line=0.74)
P('1.10　本工程已办理/应办理的报建、规划等手续：' + B + '。因本工程未取得必要审批手续导致的责任，由 ☐甲方 ☐乙方 承担。', first_line=0.74)

# ---------- 第二条 ----------
H2('第二条　承包方式与承包范围')
P('2.1　承包方式：**包工包料**（乙方负责全部材料采购、施工人工、施工机具及现场管理）。', first_line=0.74)
P('2.2　**承包范围（已包含在本合同价款内）：**', first_line=0.74)
items = [
 '（1）原房屋拆除、基础土方开挖与回填；建渣清运 ☐包含 ☐不包含；',
 '（2）条形基础、基础垫层、地圈梁；',
 '（3）主体结构：红砖墙体砌筑、构造柱、圈梁、框架梁、现浇楼板、楼梯；',
 '（4）屋面：坡屋顶结构、天沟、防水层、防水保护层；',
 '（5）内外墙抹灰、内外墙基础装饰、地面与墙面瓷砖铺贴；内墙普通乳胶漆施工；',
 '（6）水电工程及全部材料与人工：给排水管道（日丰灰色管）、强弱电开槽、布管、穿线、配电箱、灯具、开关插座；',
 '（7）门窗、防盗入户门、室内门、栏杆、楼梯扶手；',
 '（8）厨卫洁具、灯具、开关插座、厨卫吊顶；',
 '（9）化粪池（规格 2.8m×1.2m×1.5m，含 10m 污水管；超出 10m 部分按 ' + B + ' 元/米计价）；',
 '（10）院坝：' + B + '　（**原手写《补条》第 1 项内容，签约时须逐字确认后填入**）；',
 '（11）围墙：' + B + '　（**原手写《补条》第 2 项内容，签约时须逐字确认后填入**）；',
 '（12）门及门窗相关：' + B + '　（**原手写《补条》第 4 项内容，签约时须逐字确认后填入**）；',
 '（13）水电相关：' + B + '　（**原手写《补条》第 5 项内容，签约时须逐字确认后填入**）；',
 '（14）脚手架、安全网、临电箱等安全文明施工措施；',
 '（15）施工期间的现场清理与竣工清理。',
]
for it in items: P(it, indent=0.74, size=10)
P('2.3　**不包含项目（须另行书面签证并另行计价）：**', first_line=0.74)
for it in ['（1）吊顶造型、装饰造型、文化石、真石漆、艺术涂料等升级项目；',
           '（2）高档砖、异形砖、外墙升级材料；',
           '（3）宅基地审批、测绘、规划审批、检测费等行政或第三方费用；',
           '（4）因甲方变更设计、增加工程量、提高材料档次产生的费用；',
           '（5）基础加深、地基处理、现场签证增加的工程量；',
           '（6）' + B + '。']:
    P(it, indent=0.74, size=10)
P('2.4　**特别确认**：本合同价款**已包含**门窗（含防盗入户门、室内门）、栏杆、楼梯扶手、厨卫洁具、灯具、开关插座、'
  '厨卫吊顶、乳胶漆、瓷砖（基础款）；**不包含**外墙装饰造型、真石漆、艺术涂料、文化石、吊顶造型等升级项目。'
  '原附件《费用范围》中"外墙装饰造型、门窗、室内装修｜包含"的表述**以本条为准**。', first_line=0.74)
P('2.5　材料要求：乙方采购的全部材料必须符合附件二《材料清单》约定的品牌、规格、等级，并提供出厂合格证、检测报告。'
  '材料进场须经甲方书面（含微信）验收确认后方可使用。不合格材料乙方应无条件退场，费用由乙方承担。', first_line=0.74)

# ---------- 第三条 ----------
H2('第三条　材料与品牌')
P('3.1　主要材料的品牌、规格、型号按附件二、附件三执行。', first_line=0.74)
P('3.2　附件三《主材报价单》须在签约时填写完整（品牌、型号、规格、单价、数量、小计、合计）。'
  '**附件三中未填写的项目，视为已包含在本合同价款内，乙方不得另行收费。**', first_line=0.74)
P('3.3　约定品牌因市场原因无法采购的，乙方应提前书面告知甲方，并提供**不低于原约定档次**、经甲方书面同意的替代品；'
  '替代品价格高于原约定的，差价由乙方承担。', first_line=0.74)

# ---------- 第四条 ----------
H2('第四条　合同价款')
P('4.1　计价方式：按建筑面积计价，单价人民币 ' + B + ' 元/平方米（大写：' + B + '）。', first_line=0.74)
P('4.2　暂定总价：人民币 ' + B + ' 元（大写：' + B + '）。计算方式：277.2 平方米 × 单价。'
  '最终总价按第五条据实结算。', first_line=0.74)
P('4.3　上述价款为**包干价**，已包含本合同第二条承包范围内的全部材料费、人工费、机械费、运输费、管理费、'
  '安全文明施工费、临时设施费、利润、税金及乙方应承担的一切费用。', first_line=0.74)
P('4.4　除本合同明确约定的增项情形外，**乙方不得以任何理由要求增加价款**。', first_line=0.74)

# ---------- 第五条 ----------
H2('第五条　面积计算与结算')
P('5.1　建筑面积按 ☐《建筑工程建筑面积计算规范》GB/T 50353 ☐双方约定的以下方法计算：' + B + '。', first_line=0.74)
P('5.2　双方应在**主体结构封顶后 7 日内**共同实测并签署《面积确认单》，作为结算依据。', first_line=0.74)
P('5.3　实测面积与第 1.4 条约定的 277.2 平方米相差在 **±3%** 以内的，按 277.2 平方米结算；超出 ±3% 的，按实测面积结算。', first_line=0.74)
P('5.4　结算总价 ＝ 实测（或确认）面积 × 单价 ＋ 经双方书面签署的增项金额 － 已支付款项。', first_line=0.74)

# ---------- 第六条 ----------
H2('第六条　付款方式')
P('6.1　付款节点与比例（**均以乙方完成对应节点并经甲方书面（含微信）确认为前提**）：', first_line=0.74)
table([
 ['序号','付款节点','付款比例','累计比例'],
 ['1','本合同签订并生效后 3 日内（备料款）','30%','30%'],
 ['2','基础完成并经验收合格后 7 日内','20%','50%'],
 ['3','主体结构封顶并经验收合格后 7 日内','25%','75%'],
 ['4','内外墙及瓷砖施工完成、屋面防水完成并经验收合格后 7 日内','15%','90%'],
 ['5','竣工验收合格后 7 日内','5%','95%'],
 ['6','质量保证金：竣工验收合格满 12 个月且无质量问题后 7 日内','5%','100%'],
], widths=[1.3,9.0,2.6,2.6])
P()
P('6.2　支付方式：银行转账至乙方指定账户（户名：' + B + '　开户行：' + B + '　账号：' + B + '）。'
  '以转账凭证为付款依据。**甲方不接受现金支付，乙方不得要求甲方以现金支付。**', first_line=0.74)
P('6.3　乙方应在每次收款前向甲方出具收款收据；累计支付达到 ' + B + ' 元时，乙方应提供相应发票。', first_line=0.74)
P('6.4　因本工程产生的税费由 ☐乙方承担 ☐双方依法各自承担。', first_line=0.74)
P('6.5　乙方未按约定完成节点的，甲方有权拒绝支付对应款项，**且不构成甲方违约**。', first_line=0.74)

# ---------- 第七条 ----------
H2('第七条　工期')
P('7.1　开工日期：' + B + ' 年 ' + B + ' 月 ' + B + ' 日；竣工日期：' + B + ' 年 ' + B + ' 月 ' + B + ' 日；'
  '总工期 **' + B + '** 个日历天。', first_line=0.74)
P('7.2　因下列情形导致停工的，工期可以顺延：', first_line=0.74)
P('（1）不可抗力；', indent=1.4, size=10)
P('（2）气象部门发布暴雨、大风、高温等预警信号，且实际连续影响施工超过 **8 小时**；', indent=1.4, size=10)
P('（3）因甲方原因导致的停工（如未按约付款、变更设计）。', indent=1.4, size=10)
P('7.3　**顺延程序**：顺延事由发生后 **3 日**内，乙方须书面向甲方提出并附证明材料，经甲方书面确认后方可顺延。'
  '**乙方未在前述期限内书面提出的，视为不顺延。**', first_line=0.74)
P('7.4　**材料采购、材料供应延误、施工人员组织不力、乙方资金不到位，均属乙方自身原因，不得作为顺延事由。**', first_line=0.74)
P('7.5　因乙方自身原因停工的，甲方有权书面催告；乙方在收到催告后 **5 日**内仍未复工的，甲方有权解除合同。', first_line=0.74)
P('7.6　施工期间的用水、用电由 ☐甲方提供并承担费用 ☐乙方自行解决。', first_line=0.74)

# ---------- 第八条 ----------
H2('第八条　工程质量')
P('8.1　工程质量应符合国家现行标准、四川省地方规定及本合同附件约定，包括但不限于：', first_line=0.74)
for _t, _items in [
 ('（一）强制性工程建设规范（与其它标准不一致时，以此类规范为准）', [
   'GB 55002-2021《建筑与市政工程抗震通用规范》（2022-01-01 实施）',
   'GB 55003-2021《建筑与市政地基基础通用规范》（2022-01-01 实施）',
   'GB 55007-2021《砌体结构通用规范》（2022-01-01 实施）',
   'GB 55030-2022《建筑与市政工程防水通用规范》（2023-04-01 实施）',
   'GB 55031-2022《民用建筑通用规范》（2023-03-01 实施）',
   'GB 55032-2022《建筑与市政工程施工质量控制通用规范》',
 ]),
 ('（二）施工质量验收标准', [
   'GB 50202《建筑地基基础工程施工质量验收标准》',
   'GB 50203-2011《砌体结构工程施工质量验收规范》',
   'GB 50204-2015《混凝土结构工程施工质量验收规范》',
   'GB 50207-2012《屋面工程质量验收规范》',
   'GB 50210《建筑装饰装修工程质量验收标准》',
   'GB 50242《建筑给水排水及采暖工程施工质量验收规范》',
   'GB 50303《建筑电气工程施工质量验收规范》',
 ]),
 ('（三）面积计算与结构检测', [
   'GB/T 50353-2013《建筑工程建筑面积计算规范》',
   'GB/T 50344《建筑结构检测技术标准》',
 ]),
 ('（四）四川省地方标准', [
   'DBJ51/016-2013《四川省农村居住建筑抗震技术规程》',
 ]),
]:
    P('　' + _t, indent=0.74, size=10, bold=True)
    for _s in _items:
        P('　　· ' + _s, indent=0.95, size=9.5)
P('前述标准如有新版，按新版执行；双方确认的施工图设计文件亦为质量验收依据。', first_line=0.74)
P('8.2　**允许偏差**：柱、梁、墙面的轴线位置、垂直度、表面平整度等，**按 GB 50204、GB 50203 规定的允许偏差执行**。'
  '同一部位任一项偏差超过规范允许值 **1.5 倍**的，甲方有权要求乙方无偿返工，费用与工期损失由乙方承担。', first_line=0.74)
P('8.3　**关键工序与隐蔽工程验收：**', first_line=0.74)
P('（1）下列工序在覆盖或浇筑前，乙方应提前 **24 小时**书面通知甲方验收：基槽验槽、基础垫层、基础钢筋、地圈梁、'
  '主体钢筋、构造柱与圈梁浇筑前、现浇板浇筑前、楼梯钢筋、屋面防水层施工前及闭水/淋水试验、管线预埋、化粪池砌筑及防水；', indent=0.74, size=10)
P('（2）验收合格后由**双方签字并拍照留存**，照片由双方各存一份；', indent=0.74, size=10)
P('（3）**未经甲方验收即覆盖的**，甲方有权要求剥离复验，费用及工期损失由乙方承担，甲方并有权暂不支付相应工程款；', indent=0.74, size=10)
P('（4）甲方接到通知后未按时到场验收的，乙方可自行验收并留存影像资料，甲方事后不得以此拒绝确认。', indent=0.74, size=10)
P('8.4　质量整改：验收发现质量问题的，乙方应在 **15 日**内完成整改并报甲方复验；'
  '同一质量问题经甲方书面通知 **两次**整改仍不合格的，甲方有权解除合同并要求乙方赔偿。', first_line=0.74)
P('8.5　乙方**不得擅自变更**结构构件的尺寸、配筋与混凝土强度等级。确需变更的，须经设计单位确认并经甲方书面同意。', first_line=0.74)

# ---------- 第九条 ----------
H2('第九条　工程变更与增项')
P('9.1　**变更单制度**：任何增项、变更（包括基础加深、层高超标、檐口、围墙、院坝、材料升级、设计变更、现场签证等），'
  '均须由双方共同签署书面《工程变更单》（格式见附件五），写明项目名称、工程量、单价、金额及对工期的影响，'
  '**双方签字后生效**。', first_line=0.74)
P('9.2　**未经双方书面签署《工程变更单》的增项，甲方不予认可、不予结算**；乙方不得以此停工或拒绝交付。', first_line=0.74)
P('9.3　增项单价按下列顺序确定：', first_line=0.74)
P('（1）本合同附件已列明的单价；（2）双方参照签约时成都市温江区同类工程市场价协商确定；'
  '（3）协商不成的，委托双方共同认可的第三方造价咨询机构核定，费用由双方各半承担。', indent=0.74, size=10)
P('9.4　单笔增项金额超过人民币 ' + B + ' 元，或全部增项累计超过合同总价 **5%** 的，须经甲方书面同意后方可施工。', first_line=0.74)
P('9.5　**严禁以手写方式在合同文本上追加条款。**任何手写内容未经双方在该处共同签字并注明日期的，不发生效力。', first_line=0.74)

# ---------- 第十条 ----------
H2('第十条　安全责任与保险')
P('10.1　乙方应对施工现场的安全生产负全部责任，做好安全防护、临电保护、材料堆放与现场清洁，关键工序留存影像资料。', first_line=0.74)
P('10.2　乙方应在**开工前**为全部施工人员投保建筑工程团体意外伤害保险，**每人保额不低于人民币 ' + B + ' 万元**，'
  '并在开工前将保单复印件交甲方备存；保险期间应覆盖全部施工期间。', first_line=0.74)
P('10.3　**乙方不得将本工程转包或分包**；确需分包的，须经甲方书面同意，并由乙方对分包方及其人员的行为、安全承担**连带责任**。', first_line=0.74)
P('10.4　因乙方及其人员、分包方及其人员发生人身损害的，由乙方承担全部责任。'
  '**甲方因此被第三方追责、索赔或处罚的，乙方应赔偿甲方全部损失（包括但不限于赔偿款、律师费、诉讼费、鉴定费）。**', first_line=0.74)
P('10.5　因施工造成第三人（含相邻房屋、村道、公共管线等）损害的，由乙方承担全部责任并负责修复、赔偿。', first_line=0.74)
P('10.6　乙方及其人员与甲方之间不构成劳动关系或劳务关系，乙方应依法支付其人员工资。'
  '**因乙方拖欠工资导致其人员向甲方主张权利的，乙方应承担全部责任并赔偿甲方损失。**', first_line=0.74)

# ---------- 第十一条 ----------
H2('第十一条　竣工验收与资料移交')
P('11.1　工程完成后，乙方应书面通知甲方验收。甲方应在接到通知后 **7 日**内组织验收。', first_line=0.74)
P('11.2　**甲方逾期未组织验收的，不视为验收合格**；甲方实际使用房屋的，**不免除**乙方对地基基础、主体结构、'
  '屋面防水、给排水与电气工程的保修责任。', first_line=0.74)
P('11.3　验收合格的，双方签署《竣工验收单》，验收合格之日为竣工日期。', first_line=0.74)
P('11.4　乙方应在竣工验收合格后 **7 日**内，向甲方移交下列资料（清单见附件七）：', first_line=0.74)
for s in ['（1）施工图纸、竣工图；','（2）主要材料的合格证、检测报告、进场验收记录；',
          '（3）隐蔽工程验收记录及影像资料；','（4）混凝土、砂浆试块报告，防水工程验收记录；',
          '（5）**水电管线的走向图（隐蔽管线图）**；','（6）保险单复印件。']:
    P(s, indent=0.74, size=10)
P('11.5　**乙方逾期未移交前述资料的，甲方有权暂缓支付 5% 质量保证金，直至资料移交完毕。**', first_line=0.74)
P('11.6　**本工程为两层农村低层住房，竣工验收应同时遵守四川省现行规定**，包括但不限于：'
  '《四川省农村住房建设管理办法》（四川省人民政府令第 362 号）、'
  '《四川省农村住房建设竣工验收管理指导意见》（川建行规〔2025〕17 号）、'
  '《住房城乡建设部等 5 部门关于加强农村房屋建设管理的指导意见》（建村规〔2024〕4 号）。', first_line=0.74)
P('11.7　**验收组织**：甲方应会同乙方等组成验收组，并可邀请专业技术人员、村民委员会参加。'
  '甲方应**提前 7 天**将竣工验收时间、地点、验收组成员名单告知工程所在地乡镇人民政府；'
  '乙方应配合提供施工记录、隐蔽验收记录及影像资料。', first_line=0.74)
P('11.8　**保修书与归档**：竣工验收合格后，双方应共同签署《四川省新建农村住房质量保修书》（见附件十）；'
  '甲方应在验收合格后 90 日内将施工记录、影像记录、竣工验收资料报乡镇人民政府存档，**乙方应无偿配合**。', first_line=0.74)
P('11.9　**未经验收或验收不合格的，本工程不得投入使用。**', first_line=0.74)

# ---------- 第十二条 ----------
H2('第十二条　质量保修')
P('12.1　保修期（自竣工验收合格之日起计算）：', first_line=0.74)
table([
 ['保修项目','保修期'],
 ['地基基础工程和主体结构工程','设计文件规定的该工程合理使用年限，**且不少于 50 年**'],
 ['屋面防水工程、有防水要求的卫生间、外墙面防渗漏','**5 年**'],
 ['装饰装修工程','**24 个月**'],
 ['给排水管道、电气管线、设备安装','**24 个月**'],
], widths=[8.0,7.5])
P()
P('12.2　**因乙方施工质量原因（包括但不限于基础处理不当、基槽未验、垫层不足、埋深不够、地基未处理、'
  '回填夯实不到位、构造柱与圈梁未按图设置）导致房屋不均匀沉降、墙体开裂、渗漏的，'
  '由乙方负责无偿修复并赔偿甲方全部损失。**', first_line=0.74)
P('12.3　**乙方不得以"地质沉降""自然灾害"为由免除本条责任**；仅在乙方能够举证证明损害**完全**由'
  '不可抗力（地震、滑坡、泥石流等）造成时，方可免责。', first_line=0.74)
P('12.4　保修期内出现质量问题，甲方通知乙方后，乙方应在 **48 小时**内到场、**7 日**内修复完毕'
  '（重大质量问题可另行约定期限）。乙方逾期不处理的，甲方有权自行或委托第三方修复，费用从质量保证金中扣除，'
  '不足部分由乙方补足。', first_line=0.74)
P('12.5　因甲方使用不当、第三方施工破坏、甲方自行改动造成的问题，不属于乙方保修范围。', first_line=0.74)
P('12.6　双方应签署《四川省新建农村住房质量保修书》（见附件十）作为本合同附件；'
  '该保修书约定的保修范围与期限**不得低于**本合同第十二条的约定。', first_line=0.74)

# ---------- 第十三条 ----------
H2('第十三条　保　证')
P('13.1　**乙方为单位时**：保证人 **江剑凯**（身份证号：' + B + '，电话：13258212263）'
  '自愿就乙方在本合同项下的**全部义务**（包括但不限于施工义务、质量保修义务、违约金、赔偿金及甲方为实现权利支出的费用）'
  '向甲方承担**连带责任保证**。', first_line=0.74)
P('13.2　保证期间为**本合同约定的全部义务履行完毕之日起二年**。', first_line=0.74)
P('13.3　甲方有权直接要求保证人履行，无需先向乙方主张。', first_line=0.74)
P('13.4　**乙方为自然人时**：本条不适用；但乙方应提供身份证原件供核验并留存复印件，'
  '其配偶（如已婚）应在本合同乙方处共同签字确认。', first_line=0.74)

# ---------- 第十四条 ----------
H2('第十四条　违约责任')
P('14.1　乙方无正当理由逾期竣工的，每逾期一日按**合同总价的 0.05%** 向甲方支付违约金；'
  '逾期超过 **30 日**的，甲方有权解除合同，乙方除支付违约金外，还应赔偿甲方因此产生的全部损失'
  '（包括另行委托他人施工的差价等）。', first_line=0.74)
P('14.2　甲方逾期付款的，每逾期一日按**逾期金额的 0.05%** 向乙方支付违约金；'
  '逾期超过 **30 日**的，乙方有权暂停施工，工期相应顺延。', first_line=0.74)
P('14.3　甲方逾期付款违约金累计不超过合同总价的 **10%**；乙方逾期竣工违约金累计不超过合同总价的 **20%**。'
  '违约金不足以弥补守约方实际损失的，违约方应补足差额。', first_line=0.74)
P('14.4　**甲方的约定解除权**：发生下列情形之一的，甲方有权书面通知乙方解除本合同，乙方应赔偿甲方全部损失：', first_line=0.74)
for s in ['（1）主体结构或防水工程经有资质机构检测不合格，且乙方拒绝或无法修复的；',
          '（2）同一质量问题经甲方书面通知后两次整改仍不合格的；',
          '（3）乙方无正当理由停工连续超过 15 日，或累计超过 30 日的；',
          '（4）乙方擅自转包或分包的；',
          '（5）乙方未按约定投保，或未按约定移交竣工资料的；',
          '（6）乙方擅自变更结构构件尺寸、配筋或混凝土强度等级的。']:
    P(s, indent=0.74, size=10)
P('14.5　甲方依据本条解除合同的，已完成且合格部分的工程款按实结算；乙方应在解除通知送达后 **7 日**内撤场并移交全部资料；'
  '乙方拒不撤场的，甲方有权自行清场，费用由乙方承担。', first_line=0.74)
P('14.6　任何一方为实现本合同权利支出的**律师费、诉讼费、保全费、鉴定费、公证费**，由违约方承担。', first_line=0.74)

# ---------- 第十五条 ----------
H2('第十五条　不可抗力')
P('15.1　因不可抗力致使合同无法履行的，双方应及时协商处理；受影响一方应在 **7 日**内书面通知对方并提供证明材料。', first_line=0.74)
P('15.2　不可抗力持续超过 **60 日**的，任何一方均有权解除合同，双方按已完成工程量结算。', first_line=0.74)

# ---------- 第十六条 ----------
H2('第十六条　通知与送达')
P('16.1　双方确认下列地址、电话为有效通知与送达地址：', first_line=0.74)
P('甲方：地址 ' + B + '　　电话 13551110207　　微信 ' + B, indent=0.74, size=10)
P('乙方：地址 ' + B + '　　电话 ' + B + '　　微信 ' + B, indent=0.74, size=10)
P('保证人：地址 ' + B + '　　电话 13258212263　　微信 ' + B, indent=0.74, size=10)
P('16.2　通过**微信、短信**发送至前述号码，或通过邮寄（含 EMS）发送至前述地址的，**均视为有效送达**；'
  '邮寄自交邮之日起第 3 日视为送达，微信/短信自发送成功之时视为送达。', first_line=0.74)
P('16.3　前述地址同时适用于**诉讼阶段**法律文书的送达。地址变更应在 **3 日**内书面通知对方，'
  '未通知的，按原地址送达即视为有效。', first_line=0.74)

# ---------- 第十七条 ----------
H2('第十七条　其他约定')
P('17.1　**原文件的处理**：双方确认，就本工程此前签署的文件（含 2026 年 9 月 10 日《农村自建房施工合同》'
  '正文及附件、以及该合同第 4 页末尾的手写《补条》）**均未成立生效**。**本合同签订生效后，前述文件全部终止，'
  '双方不得再依据其主张任何权利**；前述文件与本合同不一致的，一律以本合同为准。', first_line=0.74)
P('17.2　**附件效力**：本合同附件为合同不可分割的组成部分。附件与正文不一致的，**以正文为准**；'
  '正文未约定的，以附件为准；附件内部不一致的，**以对甲方有利或标准更高者为准**。', first_line=0.74)
P('17.3　**手写内容**：本合同任何手写内容，须经双方在该处共同签字并注明日期后方为有效；'
  '**单方添加的手写内容不发生效力**。', first_line=0.74)
P('17.4　**合同变更**：本合同的任何变更、补充，均须经双方另行签署书面协议；补充协议与本合同具有同等法律效力。', first_line=0.74)
P('17.5　**合同份数**：本合同一式 **叁** 份，甲方执 **壹** 份，乙方执 **壹** 份，保证人执 **壹** 份'
  '（无保证人时为一式两份）。', first_line=0.74)
P('17.6　**生效**：本合同自甲方签字（按指印）、乙方签字（按指印）**或**法定代表人签字并加盖单位公章、'
  '保证人签字（按指印）之日起生效。**仅盖章未签字，或仅签字未盖章的，不视为有效签署。**', first_line=0.74)
P('17.7　本工程相应的**施工标准清单、材料清单**由双方在附件一中逐项确认，'
  '**附件一中与本合同正文不一致的内容，以正文为准**。', first_line=0.74)
P('17.8　本工程**不得加盖与乙方名称不一致的任何印章**；出现名称不一致印章的，该盖章行为对甲方不发生效力。', first_line=0.74)
P('17.9　未尽事宜，双方协商解决，或按《中华人民共和国民法典》及相关法律法规处理。', first_line=0.74)

# ---------- 第十八条 ----------
H2('第十八条　争议解决')
P('18.1　双方发生争议应先协商解决。', first_line=0.74)
P('18.2　协商不成的，**向成都市温江区人民法院提起诉讼**。', first_line=0.74)

# ---------- 签署页 ----------
doc.add_page_break()
H2('签　署')
P()
P('**甲方（发包方）**', space_after=8)
P('签字（按指印）：' + B + '　　　　日期：' + B + ' 年 ' + B + ' 月 ' + B + ' 日')
P()
P('**乙方（承包方）**', space_after=8)
P('☐ 自然人：签字（按指印）：' + B + '　　日期：' + B + ' 年 ' + B + ' 月 ' + B + ' 日')
P('　　配偶（如已婚）共同签字：' + B + '　　日期：' + B + ' 年 ' + B + ' 月 ' + B + ' 日')
P()
P('☐ 单位：法定代表人或授权代表签字：' + B)
P('　　单位公章：　　　　　　　　　　　　　　（此处加盖单位公章）')
P('　　日期：' + B + ' 年 ' + B + ' 月 ' + B + ' 日')
P()
P('**保证人**', space_after=8)
P('签字（按指印）：江剑凯　　　　日期：' + B + ' 年 ' + B + ' 月 ' + B + ' 日')

# ---------- 附件清单 ----------
P()
H2('附件清单（签约时逐份确认）')
table([
 ['序号','附件名称','份数','双方确认签字'],
 ['附件一','施工标准清单（**须与正文第一、八条一致**）','1',''],
 ['附件二','材料清单（含品牌、规格、等级、使用部位）','1',''],
 ['附件三','主材报价单（**须填写完整价格**）','1',''],
 ['附件四','施工图纸目录（含**结构施工图**）','1',''],
 ['附件五','工程变更单（格式）','1',''],
 ['附件六','隐蔽工程验收记录（格式）','1',''],
 ['附件七','竣工资料移交清单','1',''],
 ['附件八','乙方主体资格文件（营业执照/身份证复印件、法定代表人身份证明）','1',''],
 ['附件九','施工人员名单及意外伤害保险单','1',''],
 ['附件十','《四川省新建农村住房质量保修书》（双方签署）','1',''],
 ['附件十一','《四川省农村住房建设竣工验收表》（双方签署）','1',''],
 ['附件十二','双方确认的《面积确认单》《竣工验收单》（格式）','1',''],
], widths=[1.8,10.6,1.3,2.0])

P()
P('（本合同正文及附件共 ' + B + ' 页，双方应在每页骑缝签字或按指印）', size=9.5, align='center')

doc.save('/home/zyw/Downloads/dl-hub/26-合同审查/农村自建房施工合同（2026修订版）.docx')
print('OK: docx 已生成')
