Files
ALL-teach_sys/frontend_土木水利/update_my_projects.py

197 lines
8.1 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
def create_my_projects_data():
# 读取土木水利项目案例数据
with open('网页未导入数据/土木水利产业/土木水利项目案例.json', 'r', encoding='utf-8') as f:
civil_data = json.load(f)
# 按单元分组项目
unit_projects = {}
for item in civil_data:
project_name = item.get('案例名称', '')
# 使用垂直能力课单元
units = item.get('对应单元名称(垂直能力课)', '')
if units and project_name:
unit_list = [u.strip() for u in units.split(',')]
# 只取第一个单元,避免重复
if unit_list:
unit = unit_list[0]
if unit not in unit_projects:
unit_projects[unit] = []
if project_name not in unit_projects[unit]: # 避免重复
unit_projects[unit].append(project_name)
# 选择10个有代表性的单元
selected_units = [
"BIM设计",
"建筑工程施工技术",
"项目成本管理",
"建筑设计原理",
"室内三维空间设计",
"工程招投标与合同管理",
"项目质量管理",
"建筑动画设计",
"广联达软件实操教学",
"智能建造"
]
# 构建myProjectsData格式
my_projects_data = []
for unit in selected_units:
if unit in unit_projects and unit_projects[unit]:
# 每个单元最多取2个项目
projects = unit_projects[unit][:2]
my_projects_data.append({
"unitName": unit,
"projects": projects
})
# 确保有10个单元
while len(my_projects_data) < 10:
for unit, projects in unit_projects.items():
if unit not in selected_units and projects:
my_projects_data.append({
"unitName": unit,
"projects": projects[:2]
})
if len(my_projects_data) >= 10:
break
# 读取筏板厚度项目的详细内容
with open('网页未导入数据/土木水利产业/学生完成的项目/筏板厚度及配筋变更引起的工程造价调整项目.md', 'r', encoding='utf-8') as f:
raft_content = f.read()
# 创建可点击项目的数据
clickable_project = {
"id": "clickable-1",
"name": "筏板厚度及配筋变更引起的工程造价调整项目",
"unitName": "工程造价智慧管理",
"isClickable": True,
"content": {
"title": "筏板厚度及配筋变更引起的工程造价调整项目",
"description": "某住宅项目在基础施工阶段,由于甲方提出新的使用功能要求,结构专业图纸发生了设计变更。原设计筏板厚度为 600 mm变更后调整为 650 mm同时钢筋配筋量同步增加。因设计调整需对施工图预算进行重新编制并提交新的工程造价书。",
"images": [],
"sections": [
{
"title": "一、项目背景",
"content": "某住宅项目在基础施工阶段,由于甲方提出新的使用功能要求,结构专业图纸发生了设计变更。原设计筏板厚度为 **600 mm**,变更后调整为 **650 mm**,同时钢筋配筋量同步增加。因设计调整,需对施工图预算进行重新编制,并提交新的工程造价书。"
},
{
"title": "二、项目任务",
"content": '''根据以下条件,完成一份造价调整书:
1. **变更原因说明**简要描述甲方提出变更的原因及对结构安全使用功能的影响
2. **工程量变化分析**计算筏板厚度增加所带来的混凝土方量变化分析配筋量增加的情况可假设钢筋增加比例如增加10%
3. **单价及总价调整**结合定额单价计算混凝土与钢筋工程费的增加额并汇总出总造价的变化情况
4. **费用对比表**编制一张"变更前后造价对比表"清晰展示各分项造价的差异
5. **文字说明**在造价书中加入简要的文字说明解释因设计变更导致造价上调的合理性以及对项目成本控制的启示'''
},
{
"title": "三、参考数据",
"content": '''- 筏板面积2,000 m²
- 混凝土单价450 /
- 钢筋单价4,200 /t
- 原设计配筋率120 kg/'''
},
{
"title": "四、工程量计算",
"content": '''### 1混凝土体积
- **变更前体积**2,000 × 0.60 m = 1,200
- **变更后体积**2,000 × 0.65 m = 1,300
- **体积增量**100
### 2钢筋工程量
- **原钢筋量**1,200 × 0.12 = 144.0 t
- **新钢筋量**1,300 × 0.132 = 171.6 t配筋率上调至 0.132 t/
- **钢筋增量**27.6 t'''
},
{
"title": "五、造价对比分析",
"content": '''| 分项 | 变更前造价 | 变更后造价 | 增减额 | 增减比例 |
| --- | --- | --- | --- | --- |
| 混凝土 | 540,000 | 585,000 | +45,000 | +8.33% |
| 钢筋 | 604,800 | 720,720 | +115,920 | +19.17% |
| **合计** | **1,144,800** | **1,305,720** | **+160,920** | **+14.06%** |'''
},
{
"title": "六、项目成果",
"content": '''通过本项目的实施,成功完成了:
1. **准确计算工程量变化**精确计算了筏板厚度增加带来的混凝土和钢筋用量变化
2. **编制造价调整书**完成了规范的工程造价调整书为项目变更提供了可靠依据
3. **成本控制分析**分析了设计变更对项目成本的影响提出了成本控制建议
4. **专业技能提升**掌握了工程变更造价调整的完整流程和方法
5. **实践经验积累**通过实际项目操作积累了宝贵的工程造价管理经验'''
}
]
}
}
# 输出结果
print(f"生成了{len(my_projects_data)}个单元的项目数据")
for data in my_projects_data[:5]:
print(f" - {data['unitName']}: {len(data['projects'])}个项目")
return my_projects_data, clickable_project
def generate_jsx_code():
my_projects_data, clickable_project = create_my_projects_data()
# 生成myProjectsData的JSX代码
jsx_my_projects = "const myProjectsData = [\n"
for item in my_projects_data:
jsx_my_projects += " {\n"
jsx_my_projects += f' "unitName": "{item["unitName"]}",\n'
jsx_my_projects += ' "projects": [\n'
for proj in item["projects"]:
jsx_my_projects += f' "{proj}",\n'
jsx_my_projects += ' ]\n'
jsx_my_projects += " },\n"
jsx_my_projects += "];"
# 生成clickableProjects的JSX代码
jsx_clickable = """const clickableProjects = [
{
id: "clickable-1",
name: "筏板厚度及配筋变更引起的工程造价调整项目",
unitName: "工程造价智慧管理",
isClickable: true,
content: {
title: "筏板厚度及配筋变更引起的工程造价调整项目",
description: "某住宅项目在基础施工阶段,由于甲方提出新的使用功能要求,结构专业图纸发生了设计变更。原设计筏板厚度为 600 mm变更后调整为 650 mm同时钢筋配筋量同步增加。",
images: [],
sections: ["""
for section in clickable_project["content"]["sections"]:
jsx_clickable += f"""
{{
title: "{section['title']}",
content: `{section['content']}`
}},"""
jsx_clickable += """
]
}
}
];"""
with open('my_projects_jsx.txt', 'w', encoding='utf-8') as f:
f.write(jsx_my_projects)
f.write('\n\n')
f.write(jsx_clickable)
print("\n✅ JSX代码已生成到 my_projects_jsx.txt")
if __name__ == "__main__":
generate_jsx_code()