Commit 7fe33ba6a464590cb3489582d886e532e58df329
1 parent
0562dfe9
Update page titles from "CCDC" to "CCDC Drilling Fluids" across multiple language pages.
Showing
87 changed files
with
1522 additions
and
71 deletions
.DS_Store
No preview for this file type
app/pages/Chinese/about/about.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <script src="../../../static/js/slide.js"></script> | ... | ... |
app/pages/Chinese/about/project_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <script src="../../static/js/slide.js"></script> | ... | ... |
app/pages/Chinese/index.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../static/common/index.css"> | ... | ... |
app/pages/Chinese/manu/manu.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Chinese/product/product.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Chinese/product/product_type copy.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../static/common/index.css"> | ... | ... |
app/pages/Chinese/product/product_type.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Chinese/system/system.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Chinese/system/system_detail.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Chinese/team_lab/station_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Chinese/team_lab/t_l_centers.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Chinese/team_lab/t_l_lab.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Chinese/team_lab/t_l_lab_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Chinese/team_lab/t_l_station.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Chinese/team_lab/t_l_team.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Chinese/team_lab/t_l_team_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Chinese/technology/technology.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Chinese/technology/technology_detail.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/English/about/about.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <script src="../../../static/js/slide.js"></script> | ... | ... |
app/pages/English/about/project_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <script src="../../static/js/slide.js"></script> | ... | ... |
app/pages/English/index.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../static/common/index.css"> | ... | ... |
app/pages/English/manu/manu.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/English/product/product.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/English/product/product_type.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/English/system/system.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/English/system/system_detail.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/English/team_lab/station_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/English/team_lab/t_l_centers.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/English/team_lab/t_l_lab.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/English/team_lab/t_l_lab_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/English/team_lab/t_l_station.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/English/team_lab/t_l_team.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/English/team_lab/t_l_team_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/English/technology/technology.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/English/technology/technology_detail.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Russian/about/about.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <script src="../../../static/js/slide.js"></script> | ... | ... |
app/pages/Russian/about/project_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <script src="../../static/js/slide.js"></script> | ... | ... |
app/pages/Russian/index.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../static/common/index.css"> | ... | ... |
app/pages/Russian/manu/manu.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Russian/product/product.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Russian/product/product_type copy.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../static/common/index.css"> | ... | ... |
app/pages/Russian/product/product_type.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Russian/system/system.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Russian/system/system_detail.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Russian/team_lab/station_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Russian/team_lab/t_l_centers.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Russian/team_lab/t_l_lab.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Russian/team_lab/t_l_lab_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Russian/team_lab/t_l_station.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Russian/team_lab/t_l_team.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Russian/team_lab/t_l_team_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Russian/technology/technology.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Russian/technology/technology_detail.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Spain/about/about.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <script src="../../../static/js/slide.js"></script> | ... | ... |
app/pages/Spain/about/project_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <script src="../../static/js/slide.js"></script> | ... | ... |
app/pages/Spain/index.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../static/common/index.css"> | ... | ... |
app/pages/Spain/manu/manu.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Spain/product/product.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Spain/product/product_type copy.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../static/common/index.css"> | ... | ... |
app/pages/Spain/product/product_type.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Spain/system/system.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Spain/system/system_detail.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Spain/team_lab/station_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Spain/team_lab/t_l_centers.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Spain/team_lab/t_l_lab.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Spain/team_lab/t_l_lab_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Spain/team_lab/t_l_station.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Spain/team_lab/t_l_team.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Spain/team_lab/t_l_team_detail.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <script src="../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../static/common/index.css"> |
| 10 | 10 | <!--引入 element-ui 的样式,--> | ... | ... |
app/pages/Spain/technology/technology.html
| ... | ... | @@ -4,7 +4,7 @@ |
| 4 | 4 | <head> |
| 5 | 5 | <meta charset="UTF-8"> |
| 6 | 6 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 7 | - <title>CCDC</title> | |
| 7 | + <title>CCDC Drilling Fluids</title> | |
| 8 | 8 | <!-- 引入jQuery --> |
| 9 | 9 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 10 | 10 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
app/pages/Spain/technology/technology_detail.html
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <head> |
| 4 | 4 | <meta charset="UTF-8"> |
| 5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | - <title>CCDC</title> | |
| 6 | + <title>CCDC Drilling Fluids</title> | |
| 7 | 7 | <!-- 引入jQuery --> |
| 8 | 8 | <script src="../../../../node_modules/jquery/dist/jquery.js"></script> |
| 9 | 9 | <link rel="stylesheet" href="../../../static/common/index.css"> | ... | ... |
docs/.DS_Store
0 → 100644
No preview for this file type
docs/钻井液品牌网站-测试大纲.docx
0 → 100644
No preview for this file type
docs/钻井液品牌网站-测试报告.docx
0 → 100644
No preview for this file type
docs/钻井液品牌网站-系统概要设计说明书.docx
0 → 100644
No preview for this file type
docs/钻井液品牌网站-详细设计说明书.docx
0 → 100644
No preview for this file type
docs/钻井液品牌网站-软件需求说明书.docx
0 → 100644
No preview for this file type
docs/钻井液品牌网站-项目开发计划.docx
0 → 100644
No preview for this file type
generate_brand_site_docs.py
0 → 100644
| 1 | +from docx import Document | |
| 2 | +from docx.shared import Pt | |
| 3 | +import os | |
| 4 | + | |
| 5 | + | |
| 6 | +def add_heading(doc: Document, text: str, level: int = 1): | |
| 7 | + """统一宋体标题样式。""" | |
| 8 | + h = doc.add_heading(text, level=level) | |
| 9 | + for run in h.runs: | |
| 10 | + run.font.size = Pt(12) | |
| 11 | + run.font.name = "宋体" | |
| 12 | + | |
| 13 | + | |
| 14 | +def add_paragraph(doc: Document, text: str): | |
| 15 | + """ | |
| 16 | + 统一 11 号宋体正文段落,同时适度扩充内容但不直接重复原文。 | |
| 17 | + 做法:先写原文,再追加一到两段“如何落实/如何落地”类说明。 | |
| 18 | + """ | |
| 19 | + # 原文 | |
| 20 | + p = doc.add_paragraph(text) | |
| 21 | + for run in p.runs: | |
| 22 | + run.font.size = Pt(11) | |
| 23 | + run.font.name = "宋体" | |
| 24 | + | |
| 25 | + # 扩展段 1:落实方式 | |
| 26 | + ext1 = ( | |
| 27 | + "在项目实施过程中,需将上述要求进一步细化为可执行的工作项," | |
| 28 | + "明确责任部门、责任人和时间节点,并通过阶段性检查和评审的方式," | |
| 29 | + "跟踪落实情况,保证本条要求真正落地,而不是停留在文件层面。" | |
| 30 | + ) | |
| 31 | + p1 = doc.add_paragraph(ext1) | |
| 32 | + for run in p1.runs: | |
| 33 | + run.font.size = Pt(11) | |
| 34 | + run.font.name = "宋体" | |
| 35 | + | |
| 36 | + # 扩展段 2:对项目目标的意义 | |
| 37 | + ext2 = ( | |
| 38 | + "从项目管理的视角看,本条内容与项目整体目标之间存在紧密关联," | |
| 39 | + "一方面为后续的设计、开发和测试活动提供了方向指引," | |
| 40 | + "另一方面也为项目验收和运行评估提供了可量化、可检查的依据。" | |
| 41 | + ) | |
| 42 | + p2 = doc.add_paragraph(ext2) | |
| 43 | + for run in p2.runs: | |
| 44 | + run.font.size = Pt(11) | |
| 45 | + run.font.name = "宋体" | |
| 46 | + | |
| 47 | + | |
| 48 | +def add_diagram_placeholder(doc: Document, title: str, desc: str = ""): | |
| 49 | + """在需要上架构图/流程图的地方添加占位说明,便于后续在 Word 中插图。""" | |
| 50 | + p = doc.add_paragraph() | |
| 51 | + run = p.add_run(f"【{title}】") | |
| 52 | + run.bold = True | |
| 53 | + run.font.size = Pt(11) | |
| 54 | + if desc: | |
| 55 | + p = doc.add_paragraph(desc) | |
| 56 | + for r in p.runs: | |
| 57 | + r.font.size = Pt(11) | |
| 58 | + | |
| 59 | + | |
| 60 | +def ensure_docs_dir(): | |
| 61 | + os.makedirs("docs", exist_ok=True) | |
| 62 | + | |
| 63 | + | |
| 64 | +# 1-钻井液品牌网站-项目开发计划 | |
| 65 | +def generate_dev_plan(): | |
| 66 | + doc = Document() | |
| 67 | + doc.add_heading("钻井液品牌网站-项目开发计划", level=0) | |
| 68 | + add_paragraph(doc, "版本:V1.0") | |
| 69 | + add_paragraph(doc, "日期:2026-03-04") | |
| 70 | + add_paragraph(doc, "编写单位:川庆钻探工程公司(示例)") | |
| 71 | + add_paragraph(doc, "项目名称:钻井液品牌网站建设项目") | |
| 72 | + doc.add_page_break() | |
| 73 | + | |
| 74 | + add_heading(doc, "1 项目概述", level=1) | |
| 75 | + add_heading(doc, "1.1 项目背景", level=2) | |
| 76 | + add_paragraph( | |
| 77 | + doc, | |
| 78 | + "随着公司钻井液业务在国内外市场的不断拓展,对外宣传窗口和品牌形象建设的要求日益提高。" | |
| 79 | + "现有官网在多语言支持、产品与技术体系展示、生产制造能力呈现等方面已难以满足当前业务发展的需要。" | |
| 80 | + "为系统性展示公司钻井液品牌形象和技术优势,需建设统一的“钻井液品牌网站”。", | |
| 81 | + ) | |
| 82 | + | |
| 83 | + add_heading(doc, "1.2 建设目标", level=2) | |
| 84 | + add_paragraph( | |
| 85 | + doc, | |
| 86 | + "本项目拟通过建设钻井液品牌网站,实现以下目标:\n" | |
| 87 | + "• 搭建多语言对外宣传平台,面向中、英、俄、西等不同语种客户;\n" | |
| 88 | + "• 全面展示公司钻井液产品、体系、技术、实验室/团队、生产制造等核心能力;\n" | |
| 89 | + "• 形成规范统一的页面结构和信息架构,便于后续维护与扩展;\n" | |
| 90 | + "• 为公司后续数字化营销、客户服务等系统做支撑和预留接口。", | |
| 91 | + ) | |
| 92 | + | |
| 93 | + add_heading(doc, "1.3 项目范围", level=2) | |
| 94 | + add_paragraph( | |
| 95 | + doc, | |
| 96 | + "本项目范围包括:\n" | |
| 97 | + "• 前端多语言静态网站的设计与开发;\n" | |
| 98 | + "• 统一导航与页脚、产品与技术展示页面、生产制造模块选项卡逻辑实现;\n" | |
| 99 | + "• 基本访问统计与运行监控方案设计(如纳入公司统一监控体系);\n" | |
| 100 | + "• 部署上线、试运行以及验收阶段的支持工作。\n" | |
| 101 | + "本项目暂不包含后台内容管理系统(CMS)和复杂交互业务,如有需要可在后续阶段扩展。", | |
| 102 | + ) | |
| 103 | + | |
| 104 | + add_heading(doc, "1.4 项目里程碑", level=2) | |
| 105 | + add_paragraph( | |
| 106 | + doc, | |
| 107 | + "初步拟定的项目里程碑如下(具体时间根据实际立项日期调整):\n" | |
| 108 | + "• M1:项目启动与需求调研完成;\n" | |
| 109 | + "• M2:软件需求说明书评审通过;\n" | |
| 110 | + "• M3:概要设计与详细设计评审通过;\n" | |
| 111 | + "• M4:开发与联调完成,进入系统测试阶段;\n" | |
| 112 | + "• M5:测试通过,形成测试报告与上线申请;\n" | |
| 113 | + "• M6:系统上线运行,完成项目验收。", | |
| 114 | + ) | |
| 115 | + | |
| 116 | + add_heading(doc, "2 项目组织与职责分工", level=1) | |
| 117 | + add_heading(doc, "2.1 项目组织架构", level=2) | |
| 118 | + add_paragraph( | |
| 119 | + doc, | |
| 120 | + "本项目建议成立项目领导小组和项目实施组:\n" | |
| 121 | + "• 项目领导小组:由公司分管领导、信息化主管部门领导及业务部门负责人组成,负责决策重大事项;\n" | |
| 122 | + "• 项目实施组:由业务代表、产品经理、架构师、开发工程师、测试工程师及运维人员组成,负责具体实施工作。", | |
| 123 | + ) | |
| 124 | + add_diagram_placeholder( | |
| 125 | + doc, | |
| 126 | + "图 2-1 项目组织结构示意图", | |
| 127 | + "建议在此处插入项目组织结构图,包括项目领导小组、项目经理、业务组、技术组、测试组等层级关系。", | |
| 128 | + ) | |
| 129 | + | |
| 130 | + add_heading(doc, "2.2 各角色职责", level=2) | |
| 131 | + add_paragraph( | |
| 132 | + doc, | |
| 133 | + "• 项目负责人:对项目整体目标、范围、进度和质量负责,协调各方资源;\n" | |
| 134 | + "• 业务负责人:明确业务需求,确认页面文案和业务逻辑;\n" | |
| 135 | + "• 架构师:负责网站总体技术路线、架构设计和关键技术决策;\n" | |
| 136 | + "• 开发工程师:实现前端页面和交互逻辑,完成多语言和导航逻辑;\n" | |
| 137 | + "• 测试工程师:制定测试计划和测试用例,执行各类测试并出具测试报告;\n" | |
| 138 | + "• 运维工程师:负责部署、监控和日常运行维护工作。", | |
| 139 | + ) | |
| 140 | + | |
| 141 | + add_heading(doc, "3 开发计划与进度安排", level=1) | |
| 142 | + add_heading(doc, "3.1 阶段划分", level=2) | |
| 143 | + add_paragraph( | |
| 144 | + doc, | |
| 145 | + "项目总体建议划分为以下阶段:\n" | |
| 146 | + "• 需求分析阶段:完成需求调研、需求确认和《软件需求说明书》编制;\n" | |
| 147 | + "• 设计阶段:完成系统概要设计和详细设计,输出相应设计文档;\n" | |
| 148 | + "• 开发与单元测试阶段:按设计完成前端页面开发和单元测试;\n" | |
| 149 | + "• 集成与系统测试阶段:完成多语言整体联调和系统级测试;\n" | |
| 150 | + "• 部署与试运行阶段:在目标环境中部署系统并进行试运行;\n" | |
| 151 | + "• 验收阶段:根据验收标准完成项目验收工作。", | |
| 152 | + ) | |
| 153 | + | |
| 154 | + add_heading(doc, "3.2 进度计划甘特图(示意)", level=2) | |
| 155 | + add_paragraph( | |
| 156 | + doc, | |
| 157 | + "本节可在 Word 中插入具体的项目进度甘特图,此处给出文字说明占位:\n" | |
| 158 | + "• 第 1-2 周:需求调研与需求说明书编制;\n" | |
| 159 | + "• 第 3-4 周:概要设计与详细设计;\n" | |
| 160 | + "• 第 5-8 周:开发与单元测试;\n" | |
| 161 | + "• 第 9-10 周:系统测试与问题修复;\n" | |
| 162 | + "• 第 11 周:上线准备与部署;\n" | |
| 163 | + "• 第 12 周:试运行与项目验收。", | |
| 164 | + ) | |
| 165 | + | |
| 166 | + add_heading(doc, "4 质量保证与配置管理", level=1) | |
| 167 | + add_heading(doc, "4.1 质量保证措施", level=2) | |
| 168 | + add_paragraph( | |
| 169 | + doc, | |
| 170 | + "• 严格按照公司软件开发流程执行,关键文档需经过评审;\n" | |
| 171 | + "• 采用代码审查机制,保证代码质量与可维护性;\n" | |
| 172 | + "• 按照测试大纲执行功能测试、兼容性测试和回归测试;\n" | |
| 173 | + "• 对发现的问题进行缺陷跟踪和闭环管理。", | |
| 174 | + ) | |
| 175 | + | |
| 176 | + add_heading(doc, "4.2 配置管理", level=2) | |
| 177 | + add_paragraph( | |
| 178 | + doc, | |
| 179 | + "• 采用统一的代码版本管理工具(如 Git),规范分支策略;\n" | |
| 180 | + "• 对关键配置项(如部署路径、语言目录结构)进行文档化说明;\n" | |
| 181 | + "• 构建脚本和部署脚本纳入配置管理,避免人工操作差错。", | |
| 182 | + ) | |
| 183 | + | |
| 184 | + add_heading(doc, "5 风险分析与应对措施", level=1) | |
| 185 | + add_paragraph( | |
| 186 | + doc, | |
| 187 | + "• 需求变更风险:通过需求评审和变更控制流程,降低频繁大范围变更带来的影响;\n" | |
| 188 | + "• 进度风险:合理安排资源投入,必要时通过加班或增加人手保障关键节点;\n" | |
| 189 | + "• 内容准备滞后风险:提前与业务部门沟通,确保多语言文案按期交付;\n" | |
| 190 | + "• 技术风险:重点关注多语言链接一致性、选项卡参数逻辑等实现细节,提前进行技术验证。", | |
| 191 | + ) | |
| 192 | + | |
| 193 | + add_heading(doc, "6 项目管理与沟通机制", level=1) | |
| 194 | + add_paragraph( | |
| 195 | + doc, | |
| 196 | + "• 例会机制:项目实施期间,建议每周召开至少一次项目例会,通报进展、梳理问题和风险;\n" | |
| 197 | + "• 重大事项汇报:涉及范围、进度、费用等重大调整时,由项目负责人及时向项目领导小组汇报;\n" | |
| 198 | + "• 文档管理:所有计划、需求、设计、测试等文档统一纳入项目文档库管理,版本可追溯;\n" | |
| 199 | + "• 沟通渠道:建立项目微信群或 Teams 频道,方便跨部门即时沟通,重要结论需在工作记录或会议纪要中沉淀。", | |
| 200 | + ) | |
| 201 | + | |
| 202 | + add_heading(doc, "7 项目验收与成果移交", level=1) | |
| 203 | + add_paragraph( | |
| 204 | + doc, | |
| 205 | + "项目完成后,应依据合同或立项批复中的要求开展正式验收工作:\n" | |
| 206 | + "• 由项目领导小组或指定验收小组组织验收会议;\n" | |
| 207 | + "• 依据软件需求说明书、设计文档和测试报告进行现场演示和资料审查;\n" | |
| 208 | + "• 验收通过后,形成《项目验收报告》并完成项目成果移交,包括源代码、部署脚本、配置说明及所有文档;\n" | |
| 209 | + "• 项目移交给运维或后续负责单位,进入日常运行维护阶段。", | |
| 210 | + ) | |
| 211 | + | |
| 212 | + ensure_docs_dir() | |
| 213 | + output_path = os.path.join("docs", "钻井液品牌网站-项目开发计划.docx") | |
| 214 | + doc.save(output_path) | |
| 215 | + | |
| 216 | + | |
| 217 | +# 2-钻井液品牌网站-软件需求说明书 | |
| 218 | +def generate_srs(): | |
| 219 | + doc = Document() | |
| 220 | + doc.add_heading("钻井液品牌网站-软件需求说明书", level=0) | |
| 221 | + add_paragraph(doc, "版本:V1.0") | |
| 222 | + add_paragraph(doc, "日期:2026-03-04") | |
| 223 | + add_paragraph(doc, "编写单位:川庆钻探工程公司(示例)") | |
| 224 | + doc.add_page_break() | |
| 225 | + | |
| 226 | + add_heading(doc, "1 引言", level=1) | |
| 227 | + add_heading(doc, "1.1 编写目的", level=2) | |
| 228 | + add_paragraph( | |
| 229 | + doc, | |
| 230 | + "本软件需求说明书用于系统、完整地描述“钻井液品牌网站”的业务需求和功能需求," | |
| 231 | + "为后续的概要设计、详细设计、开发实现、测试验证及验收评审提供统一依据。" | |
| 232 | + "本说明书既面向项目技术团队,也面向项目管理和业务领导层。", | |
| 233 | + ) | |
| 234 | + | |
| 235 | + add_heading(doc, "1.2 项目背景", level=2) | |
| 236 | + add_paragraph( | |
| 237 | + doc, | |
| 238 | + "钻井液业务是公司核心业务板块之一,对外宣传和品牌展示需求迫切。" | |
| 239 | + "现有官网在内容组织、页面风格、多语言支持、产品与技术体系呈现等方面存在不足," | |
| 240 | + "难以满足领导决策、客户了解和市场拓展的多重诉求。" | |
| 241 | + "基于此,公司决定建设统一的钻井液品牌网站,通过多语言形式集中展示公司相关能力。", | |
| 242 | + ) | |
| 243 | + | |
| 244 | + add_heading(doc, "1.3 读者对象", level=2) | |
| 245 | + add_paragraph( | |
| 246 | + doc, | |
| 247 | + "本说明书适用于以下读者:\n" | |
| 248 | + "• 领导与管理层:了解系统建设目标和主要功能;\n" | |
| 249 | + "• 业务部门人员:核对业务需求的完整性与准确性;\n" | |
| 250 | + "• 架构师和开发工程师:依据本说明书进行系统设计和实现;\n" | |
| 251 | + "• 测试工程师:依据需求编写测试用例和测试场景;\n" | |
| 252 | + "• 运维人员:理解系统运行特性和部署要求。", | |
| 253 | + ) | |
| 254 | + | |
| 255 | + add_heading(doc, "1.4 名词定义与缩写", level=2) | |
| 256 | + add_paragraph( | |
| 257 | + doc, | |
| 258 | + "• 钻井液品牌网站:指本项目中建设的多语言对外展示网站;\n" | |
| 259 | + "• 多语言版本:Chinese、English、Russian、Spain 四个语种的网站页面集合;\n" | |
| 260 | + "• 前台:面向外部访客的网页界面部分;\n" | |
| 261 | + "• 体系:在钻井液领域形成的技术方案与产品组合;\n" | |
| 262 | + "• 生产制造模块:突出生产基地、车间、质量检验实验室和仓库能力的展示模块。", | |
| 263 | + ) | |
| 264 | + | |
| 265 | + add_heading(doc, "1.5 参考资料", level=2) | |
| 266 | + add_paragraph( | |
| 267 | + doc, | |
| 268 | + "• 公司现有官网及宣传手册;\n" | |
| 269 | + "• 公司信息化建设相关管理制度和标准规范;\n" | |
| 270 | + "• 与钻井液业务部门的调研记录和访谈纪要;\n" | |
| 271 | + "• 行业内同类企业官网的调研结果(如友商网站)。", | |
| 272 | + ) | |
| 273 | + | |
| 274 | + add_heading(doc, "2 系统总体描述", level=1) | |
| 275 | + add_heading(doc, "2.1 系统目标", level=2) | |
| 276 | + add_paragraph( | |
| 277 | + doc, | |
| 278 | + "系统目标可概括为“一个平台、四种语言、统一形象、稳定可靠”四个方面:\n" | |
| 279 | + "• 一个平台:建设统一的钻井液品牌对外展示平台;\n" | |
| 280 | + "• 四种语言:提供中、英、俄、西四种语言版本;\n" | |
| 281 | + "• 统一形象:保持公司品牌视觉形象一致,强化品牌辨识度;\n" | |
| 282 | + "• 稳定可靠:系统运行稳定,易于维护与扩展。", | |
| 283 | + ) | |
| 284 | + | |
| 285 | + add_heading(doc, "2.2 用户角色与使用场景", level=2) | |
| 286 | + add_paragraph( | |
| 287 | + doc, | |
| 288 | + "• 外部访客:包括国内外油公司客户、合作伙伴及潜在客户,主要通过浏览器访问网站,了解公司能力;\n" | |
| 289 | + "• 内部员工:在与客户交流时,用于演示公司产品与技术体系;\n" | |
| 290 | + "• 运维人员:负责网站的部署、监控以及静态内容更新。", | |
| 291 | + ) | |
| 292 | + | |
| 293 | + add_heading(doc, "2.3 业务功能范围", level=2) | |
| 294 | + add_paragraph( | |
| 295 | + doc, | |
| 296 | + "本系统业务功能范围包括但不限于:\n" | |
| 297 | + "• 首页门户展示;\n" | |
| 298 | + "• 关于我们板块;\n" | |
| 299 | + "• 钻井液产品展示及产品类型详情;\n" | |
| 300 | + "• 钻井液体系展示及体系详情;\n" | |
| 301 | + "• 钻井液技术展示及技术详情;\n" | |
| 302 | + "• 实验室与服务团队介绍;\n" | |
| 303 | + "• 生产制造板块(含选项卡及图文展示);\n" | |
| 304 | + "• 联系我们及联系方式展示;\n" | |
| 305 | + "• 统一的导航和页脚链接逻辑。", | |
| 306 | + ) | |
| 307 | + | |
| 308 | + add_diagram_placeholder( | |
| 309 | + doc, | |
| 310 | + "图 2-1 网站业务功能结构图", | |
| 311 | + "建议在此处插入网站功能模块结构图,展示首页、产品、体系、技术、实验室/团队、生产制造、联系我们等模块关系。", | |
| 312 | + ) | |
| 313 | + | |
| 314 | + add_heading(doc, "3 功能性需求", level=1) | |
| 315 | + add_heading(doc, "3.1 多语言与导航需求", level=2) | |
| 316 | + add_paragraph( | |
| 317 | + doc, | |
| 318 | + "• 系统需提供中、英、俄、西四种语言版本,顶部提供语言切换按钮;\n" | |
| 319 | + "• 各语言版本的导航结构保持一致,导航名称采用对应语言文案;\n" | |
| 320 | + "• 切换语言时,优先保持业务上下文的一致性(如从英文产品详情跳转到相同产品的西语详情页);\n" | |
| 321 | + "• 导航点击后,页面应在同窗口打开对应模块。", | |
| 322 | + ) | |
| 323 | + | |
| 324 | + add_heading(doc, "3.2 产品展示需求", level=2) | |
| 325 | + add_paragraph( | |
| 326 | + doc, | |
| 327 | + "• 按产品小类划分展示产品列表,支持点击进入产品类型页面;\n" | |
| 328 | + "• 产品类型页面通过 URL 参数 data 和 title 标识具体分类;\n" | |
| 329 | + "• 产品详情页需展示产品名称、所属系列、主要参数、适用工况、优势说明等内容;\n" | |
| 330 | + "• 页脚中所有产品相关链接需准确指向对应产品类型页面。", | |
| 331 | + ) | |
| 332 | + | |
| 333 | + add_heading(doc, "3.3 体系展示需求", level=2) | |
| 334 | + add_paragraph( | |
| 335 | + doc, | |
| 336 | + "• 展示钻井液体系清单,包含名称、适用场景简要说明;\n" | |
| 337 | + "• 详情页需说明体系组成、性能指标、典型应用等重要信息;\n" | |
| 338 | + "• 不同语言版本的体系详情页在内容逻辑上保持一致,由业务部门提供翻译文本。", | |
| 339 | + ) | |
| 340 | + | |
| 341 | + add_heading(doc, "3.4 技术展示需求", level=2) | |
| 342 | + add_paragraph( | |
| 343 | + doc, | |
| 344 | + "• 展示代表性技术列表,如 LONGLARTEC、HIPRESATEC 等;\n" | |
| 345 | + "• 技术详情页应突出技术原理、关键性能、应用案例等信息;\n" | |
| 346 | + "• 页脚技术栏目中的链接应与技术详情页面一一对应。", | |
| 347 | + ) | |
| 348 | + | |
| 349 | + add_heading(doc, "3.5 实验室与团队展示需求", level=2) | |
| 350 | + add_paragraph( | |
| 351 | + doc, | |
| 352 | + "• 实验室相关页面需展示实验条件、设备情况、测试能力等;\n" | |
| 353 | + "• 服务团队相关页面需强调服务经验、项目覆盖区域和服务模式;\n" | |
| 354 | + "• 允许通过图片轮播等方式展示实验场景和服务团队风采。", | |
| 355 | + ) | |
| 356 | + | |
| 357 | + add_heading(doc, "3.6 生产制造模块需求", level=2) | |
| 358 | + add_paragraph( | |
| 359 | + doc, | |
| 360 | + "• 生产制造模块采用选项卡形式展示多个子板块,包括生产基地、车间、质量检验实验室和仓库等;\n" | |
| 361 | + "• 支持通过 URL 参数 tab 定位到特定选项卡,例如 manu.html?tab=2 直接进入“车间”页签;\n" | |
| 362 | + "• 页脚中“生产制造/Fabricación”等栏目链接带有相应 tab 参数,方便从其他页面直接跳转;\n" | |
| 363 | + "• 各子页面需通过文字和图片结合的方式,全面展示生产能力和质量管理体系。", | |
| 364 | + ) | |
| 365 | + | |
| 366 | + add_heading(doc, "3.7 联系我们需求", level=2) | |
| 367 | + add_paragraph( | |
| 368 | + doc, | |
| 369 | + "• 至少展示公司总部的地址、电话、传真、邮箱等信息;\n" | |
| 370 | + "• 可选展示境外机构联系方式,如中东分公司等;\n" | |
| 371 | + "• 文案应在不同语言版本中准确翻译,并定期由业务部门核对更新。", | |
| 372 | + ) | |
| 373 | + | |
| 374 | + add_heading(doc, "4 非功能性需求", level=1) | |
| 375 | + add_paragraph( | |
| 376 | + doc, | |
| 377 | + "非功能性需求主要包括性能、可用性、安全性、可维护性和易用性等方面," | |
| 378 | + "用于保证网站长期稳定、安全、高效地运行。", | |
| 379 | + ) | |
| 380 | + | |
| 381 | + add_heading(doc, "4.1 性能需求", level=2) | |
| 382 | + add_paragraph( | |
| 383 | + doc, | |
| 384 | + "• 普通访问条件下,首页和主要内容页面加载时间不超过 3 秒;\n" | |
| 385 | + "• 支持至少数百并发用户同时访问而无明显性能下降;\n" | |
| 386 | + "• 图片资源应做压缩和缓存配置,避免过大文件影响加载速度。", | |
| 387 | + ) | |
| 388 | + | |
| 389 | + add_heading(doc, "4.2 可用性与可靠性", level=2) | |
| 390 | + add_paragraph( | |
| 391 | + doc, | |
| 392 | + "• 年度可用性目标不低于 99%;\n" | |
| 393 | + "• 建议配置基础监控,对关键 URL 进行可用性监测,并在出现异常时告警;\n" | |
| 394 | + "• 部署环境需具备容错能力,如通过服务器冗余或负载均衡提高可靠性(如有条件)。", | |
| 395 | + ) | |
| 396 | + | |
| 397 | + add_heading(doc, "4.3 安全性", level=2) | |
| 398 | + add_paragraph( | |
| 399 | + doc, | |
| 400 | + "• 网站仅用于信息展示,不涉及用户登录和敏感数据收集,安全风险较低;\n" | |
| 401 | + "• 部署时须开启基础安全配置,防止目录遍历、脚本注入等常见攻击;\n" | |
| 402 | + "• 建议采用 HTTPS 协议,为对外访问提供加密保护。", | |
| 403 | + ) | |
| 404 | + | |
| 405 | + add_heading(doc, "4.4 可维护性", level=2) | |
| 406 | + add_paragraph( | |
| 407 | + doc, | |
| 408 | + "• 代码结构清晰,目录规范,方便后续维护人员快速理解;\n" | |
| 409 | + "• 公共组件(如页脚、导航、语言切换等)应抽取为统一模块,避免重复实现;\n" | |
| 410 | + "• 对重要业务逻辑(如 URL 参数解析、选项卡切换逻辑)应有简要注释说明。", | |
| 411 | + ) | |
| 412 | + | |
| 413 | + add_heading(doc, "5 验收标准", level=1) | |
| 414 | + add_paragraph( | |
| 415 | + doc, | |
| 416 | + "• 功能验收:本说明书列出的功能点全部实现且测试通过;\n" | |
| 417 | + "• 外观与文案验收:页面布局、配色、图片以及多语言文案经业务部门及领导审阅确认;\n" | |
| 418 | + "• 非功能验收:性能、可用性和安全性满足公司相关标准或本说明书要求;\n" | |
| 419 | + "• 文档验收:开发计划、需求、设计、测试等文档齐全并归档。", | |
| 420 | + ) | |
| 421 | + | |
| 422 | + add_heading(doc, "6 附录:页面清单与链接规范", level=1) | |
| 423 | + add_paragraph( | |
| 424 | + doc, | |
| 425 | + "本附录用于整理关键页面及其链接规范,便于领导和运维人员整体把握网站结构。" | |
| 426 | + "正式文档中可根据实际最终页面进行补充和调整:\n" | |
| 427 | + "• 首页:/{lang}/index.html;\n" | |
| 428 | + "• 关于我们:/{lang}/about/about.html;\n" | |
| 429 | + "• 产品列表:/{lang}/product/product.html;\n" | |
| 430 | + "• 产品类型详情:/{lang}/product/product_type.html?data=xx&title=yy;\n" | |
| 431 | + "• 体系列表及详情:/{lang}/system/system.html 与 system_detail.html?data=xx;\n" | |
| 432 | + "• 技术列表及详情:/{lang}/technology/technology.html 与 technology_detail.html?data=xx;\n" | |
| 433 | + "• 实验室与团队:/{lang}/team_lab 下各类页面;\n" | |
| 434 | + "• 生产制造:/{lang}/manu/manu.html?tab=n;\n" | |
| 435 | + "• 联系我们:/{lang}/contact/contact.html。", | |
| 436 | + ) | |
| 437 | + | |
| 438 | + ensure_docs_dir() | |
| 439 | + output_path = os.path.join("docs", "钻井液品牌网站-软件需求说明书.docx") | |
| 440 | + doc.save(output_path) | |
| 441 | + | |
| 442 | + | |
| 443 | +# 3-钻井液品牌网站-系统概要设计说明书 | |
| 444 | +def generate_high_level_design(): | |
| 445 | + doc = Document() | |
| 446 | + doc.add_heading("钻井液品牌网站-系统概要设计说明书", level=0) | |
| 447 | + add_paragraph(doc, "版本:V1.0") | |
| 448 | + add_paragraph(doc, "日期:2026-03-04") | |
| 449 | + add_paragraph(doc, "编写:架构与设计小组") | |
| 450 | + doc.add_page_break() | |
| 451 | + | |
| 452 | + add_heading(doc, "1 概述", level=1) | |
| 453 | + add_heading(doc, "1.1 编写目的", level=2) | |
| 454 | + add_paragraph( | |
| 455 | + doc, | |
| 456 | + "本概要设计说明书在软件需求说明书的基础上,从系统架构与模块划分的角度描述钻井液品牌网站的整体技术方案," | |
| 457 | + "为详细设计和开发实现提供指导依据。", | |
| 458 | + ) | |
| 459 | + | |
| 460 | + add_heading(doc, "1.2 适用范围", level=2) | |
| 461 | + add_paragraph( | |
| 462 | + doc, | |
| 463 | + "本说明书主要适用于:\n" | |
| 464 | + "• 系统架构师和开发人员,理解整体设计思路和模块划分;\n" | |
| 465 | + "• 测试和运维人员,了解系统结构与关键组件;\n" | |
| 466 | + "• 项目管理和领导层,从宏观层面把握系统技术实现路径。", | |
| 467 | + ) | |
| 468 | + | |
| 469 | + add_heading(doc, "2 总体架构设计", level=1) | |
| 470 | + add_paragraph( | |
| 471 | + doc, | |
| 472 | + "钻井液品牌网站采用前后端简化架构,前端为多语言静态页面,后端由 Web 服务器或反向代理提供静态资源访问服务。" | |
| 473 | + "如后续接入日志分析、监控平台等,可在本架构基础上扩展。", | |
| 474 | + ) | |
| 475 | + add_diagram_placeholder( | |
| 476 | + doc, | |
| 477 | + "图 2-1 系统总体架构图", | |
| 478 | + "建议绘制“浏览器-反向代理/Web 服务器-静态资源目录-监控/日志系统”的整体架构图。", | |
| 479 | + ) | |
| 480 | + | |
| 481 | + add_heading(doc, "2.1 部署架构", level=2) | |
| 482 | + add_paragraph( | |
| 483 | + doc, | |
| 484 | + "• 前端静态资源部署于公司内部或云上 Web 服务器;\n" | |
| 485 | + "• 通过 Nginx 等反向代理对外提供统一访问入口;\n" | |
| 486 | + "• 可接入公司统一监控与日志平台,实现访问统计与异常监控;\n" | |
| 487 | + "• 采用 HTTPS 对外开放,提高安全性。", | |
| 488 | + ) | |
| 489 | + | |
| 490 | + add_heading(doc, "2.2 模块划分", level=2) | |
| 491 | + add_paragraph( | |
| 492 | + doc, | |
| 493 | + "从功能维度划分,系统主要模块包括:\n" | |
| 494 | + "• 公共模块:头部导航、页脚、多语言切换、公共样式等;\n" | |
| 495 | + "• 首页模块:多语言首页内容与轮播展示;\n" | |
| 496 | + "• 产品模块:产品列表与产品类型详情页;\n" | |
| 497 | + "• 体系模块:体系列表与详情页;\n" | |
| 498 | + "• 技术模块:技术列表与详情页;\n" | |
| 499 | + "• 实验室与团队模块:实验室介绍、团队介绍等;\n" | |
| 500 | + "• 生产制造模块:选项卡页面及子页面包含的图文内容;\n" | |
| 501 | + "• 联系我们模块:联系方式展示页面。", | |
| 502 | + ) | |
| 503 | + | |
| 504 | + add_diagram_placeholder( | |
| 505 | + doc, | |
| 506 | + "图 2-2 功能模块划分示意图", | |
| 507 | + "建议绘制模块方框图,各模块之间通过箭头表示导航关系和复用关系。", | |
| 508 | + ) | |
| 509 | + | |
| 510 | + add_heading(doc, "3 前端总体设计", level=1) | |
| 511 | + add_heading(doc, "3.1 页面结构设计", level=2) | |
| 512 | + add_paragraph( | |
| 513 | + doc, | |
| 514 | + "页面结构采用统一的布局框架:顶部导航区 + 主内容区 + 页脚区。" | |
| 515 | + "导航和页脚通过公共样式与组件统一控制,主内容区根据不同模块进行布局。", | |
| 516 | + ) | |
| 517 | + | |
| 518 | + add_heading(doc, "3.2 路由与目录设计", level=2) | |
| 519 | + add_paragraph( | |
| 520 | + doc, | |
| 521 | + "• 按语种划分顶层目录:/Chinese、/English、/Russian、/Spain;\n" | |
| 522 | + "• 各语种下按业务模块划分子目录,如 /product、/system、/technology、/team_lab、/manu、/contact 等;\n" | |
| 523 | + "• 详情页通过 URL 参数 data 等区分不同实体;\n" | |
| 524 | + "• 生产制造模块通过 URL 参数 tab 控制选项卡显示。", | |
| 525 | + ) | |
| 526 | + | |
| 527 | + add_heading(doc, "3.3 公共样式与组件设计", level=2) | |
| 528 | + add_paragraph( | |
| 529 | + doc, | |
| 530 | + "• 统一定义基础样式文件(如 index.css、公共 footer.css 等);\n" | |
| 531 | + "• 通过 JavaScript 封装语言切换、导航下划线动画、选项卡切换等公共逻辑;\n" | |
| 532 | + "• 鼓励对头部导航和页脚采用 include 或模板方式统一维护。", | |
| 533 | + ) | |
| 534 | + | |
| 535 | + add_heading(doc, "4 安全与性能设计概述", level=1) | |
| 536 | + add_heading(doc, "4.1 安全设计概述", level=2) | |
| 537 | + add_paragraph( | |
| 538 | + doc, | |
| 539 | + "• 对外提供 HTTPS 访问,防止中间人攻击;\n" | |
| 540 | + "• Web 服务器限制目录浏览与脚本执行,避免目录遍历和任意文件访问;\n" | |
| 541 | + "• 对引用的第三方脚本和样式进行审查,避免引入不必要的外部依赖。", | |
| 542 | + ) | |
| 543 | + | |
| 544 | + add_heading(doc, "4.2 性能设计概述", level=2) | |
| 545 | + add_paragraph( | |
| 546 | + doc, | |
| 547 | + "• 采用浏览器缓存策略,对 CSS、JS、图片等资源设置合理缓存期限;\n" | |
| 548 | + "• 对图片进行压缩与尺寸控制,避免超大图片影响首屏加载;\n" | |
| 549 | + "• 对共用脚本进行合并与压缩,减少网络请求次数。", | |
| 550 | + ) | |
| 551 | + | |
| 552 | + add_heading(doc, "3 模块间关系与依赖", level=1) | |
| 553 | + add_paragraph( | |
| 554 | + doc, | |
| 555 | + "从技术实现角度看,各业务模块之间既相互独立又存在一定复用关系:\n" | |
| 556 | + "• 公共模块为其他模块提供统一的导航、页脚、样式和脚本支持;\n" | |
| 557 | + "• 产品、体系和技术模块在页面结构和参数规则上具有相似性,可共享部分脚本逻辑;\n" | |
| 558 | + "• 实验室与团队、生产制造模块大量复用图片资源与版式布局;\n" | |
| 559 | + "• 联系我们模块在所有语言版本中共用统一的数据源和展示模板。", | |
| 560 | + ) | |
| 561 | + | |
| 562 | + ensure_docs_dir() | |
| 563 | + output_path = os.path.join("docs", "钻井液品牌网站-系统概要设计说明书.docx") | |
| 564 | + doc.save(output_path) | |
| 565 | + | |
| 566 | + | |
| 567 | +# 4-钻井液品牌网站-详细设计说明书 | |
| 568 | +def generate_detail_design(): | |
| 569 | + doc = Document() | |
| 570 | + doc.add_heading("钻井液品牌网站-详细设计说明书", level=0) | |
| 571 | + add_paragraph(doc, "版本:V1.0") | |
| 572 | + add_paragraph(doc, "日期:2026-03-04") | |
| 573 | + add_paragraph(doc, "编写:开发与前端设计小组") | |
| 574 | + doc.add_page_break() | |
| 575 | + | |
| 576 | + add_heading(doc, "1 概述", level=1) | |
| 577 | + add_heading(doc, "1.1 文档目的", level=2) | |
| 578 | + add_paragraph( | |
| 579 | + doc, | |
| 580 | + "本详细设计说明书在概要设计基础上,对各模块的页面结构、脚本逻辑、参数规则等进行更细粒度的说明," | |
| 581 | + "以指导开发人员具体实现,并为测试与维护人员提供技术参考。", | |
| 582 | + ) | |
| 583 | + | |
| 584 | + add_heading(doc, "2 公共部分详细设计", level=1) | |
| 585 | + add_heading(doc, "2.1 头部导航组件", level=2) | |
| 586 | + add_paragraph( | |
| 587 | + doc, | |
| 588 | + "• 导航结构:包含 logo 区、主导航菜单和语言切换区;\n" | |
| 589 | + "• 菜单项:不同语言版本的文案与路径设置对应;\n" | |
| 590 | + "• 交互逻辑:当前页面对应菜单项添加高亮样式(如 red_bold),下划线动画使用 jQuery 计算位置;\n" | |
| 591 | + "• 语言切换:点击相应语言时,根据当前路径跳转到对应语言下的等效页面(如有映射规则)。", | |
| 592 | + ) | |
| 593 | + | |
| 594 | + add_heading(doc, "2.2 页脚组件", level=2) | |
| 595 | + add_paragraph( | |
| 596 | + doc, | |
| 597 | + "• 页脚分为多个板块:产品、体系、技术、实验室/团队、生产制造、联系我们;\n" | |
| 598 | + "• 每个板块包含若干链接,链接 URL 为绝对路径,指向当前语种下的对应页面;\n" | |
| 599 | + "• 页脚中生产制造相关链接须带上 tab 参数,用于定位到生产制造页面对应选项卡。", | |
| 600 | + ) | |
| 601 | + | |
| 602 | + add_heading(doc, "2.3 公共脚本模块", level=2) | |
| 603 | + add_paragraph( | |
| 604 | + doc, | |
| 605 | + "• include.js:用于处理页面中 <include> 标签,将子页面内容嵌入主页面;\n" | |
| 606 | + "• public.js:封装语言切换、导航下划线移动等公共逻辑;\n" | |
| 607 | + "• 各页面业务脚本(如 system_detail.js、technology.js)负责本页面特定交互效果。", | |
| 608 | + ) | |
| 609 | + | |
| 610 | + add_heading(doc, "3 各业务模块详细设计", level=1) | |
| 611 | + add_heading(doc, "3.1 产品模块详细设计", level=2) | |
| 612 | + add_paragraph( | |
| 613 | + doc, | |
| 614 | + "• 文件结构:/pages/{lang}/product/product.html 及 product_type.html 等;\n" | |
| 615 | + "• 参数约定:通过 URL 参数 data 与 title 确定产品类型;\n" | |
| 616 | + "• 页面元素:列表区、详情区、图片展示区等;\n" | |
| 617 | + "• 页脚链接:指向 product_type.html 对应 data 值,确保导航统一。", | |
| 618 | + ) | |
| 619 | + | |
| 620 | + add_heading(doc, "3.2 体系与技术模块详细设计", level=2) | |
| 621 | + add_paragraph( | |
| 622 | + doc, | |
| 623 | + "• 体系和技术模块的文件与参数结构类似产品模块;\n" | |
| 624 | + "• 体系详情页和技术详情页需在页面中特定位置渲染标题、简介和详细说明;\n" | |
| 625 | + "• 通过脚本从 URL 中解析 data 参数,用于控制页面内容呈现(如有需要)。", | |
| 626 | + ) | |
| 627 | + | |
| 628 | + add_heading(doc, "3.3 实验室与团队模块详细设计", level=2) | |
| 629 | + add_paragraph( | |
| 630 | + doc, | |
| 631 | + "• 采用多个页面配合轮播或图文展示组件呈现实验室和团队信息;\n" | |
| 632 | + "• 页脚中 R&D 中心、实验室、服务团队等链接与对应页面关联;\n" | |
| 633 | + "• 如采用 Swiper 等轮播库,需要在页面底部引入其 CSS 和 JS 资源,并初始化相应实例。", | |
| 634 | + ) | |
| 635 | + | |
| 636 | + add_heading(doc, "3.4 生产制造模块详细设计", level=2) | |
| 637 | + add_paragraph( | |
| 638 | + doc, | |
| 639 | + "• 核心页面:/pages/{lang}/manu/manu.html;\n" | |
| 640 | + "• 选项卡结构:通过 div.tab 和 div.tab-content 组织四个子模块;\n" | |
| 641 | + "• 切换函数 openTab:负责隐藏/显示 tab-content,并处理 active 样式切换;\n" | |
| 642 | + "• URL 参数解析:页面加载完成后从 window.location.search 中解析 tab 参数," | |
| 643 | + "根据映射关系调用相应 .tab 元素的 click 事件,实现默认选中不同选项卡;\n" | |
| 644 | + "• 页脚链接:在 Chinese/English/Russian/Spain 四个语种的 manu 页脚中,将生产制造相关链接改为带 tab 参数的形式。", | |
| 645 | + ) | |
| 646 | + add_diagram_placeholder( | |
| 647 | + doc, | |
| 648 | + "图 3-1 生产制造模块页面结构示意图", | |
| 649 | + "建议插入选项卡结构示意图,展示 tab 区和内容区的层次关系。", | |
| 650 | + ) | |
| 651 | + | |
| 652 | + add_heading(doc, "4 流程与时序说明", level=1) | |
| 653 | + add_paragraph( | |
| 654 | + doc, | |
| 655 | + "本章节可补充页面加载流程、语言切换流程等简单时序说明,必要时可在 Word 中插入时序图," | |
| 656 | + "此处以文字形式给出:\n" | |
| 657 | + "1)用户访问 manu.html 页面;\n" | |
| 658 | + "2)页面完成基础渲染后,执行公共脚本;\n" | |
| 659 | + "3)脚本解析 URL 中的 tab 参数;\n" | |
| 660 | + "4)根据 tab 参数触发对应选项卡点击事件;\n" | |
| 661 | + "5)渲染对应子页面内容。", | |
| 662 | + ) | |
| 663 | + | |
| 664 | + add_heading(doc, "5 代码与资源组织建议", level=1) | |
| 665 | + add_paragraph( | |
| 666 | + doc, | |
| 667 | + "为方便后续维护,建议在实现时遵循以下组织方式:\n" | |
| 668 | + "• 将不同语种公共样式抽取为同一套 CSS,只在极少数语种差异处单独覆盖;\n" | |
| 669 | + "• 将通用脚本(如 include.js、public.js)放置在统一目录下,避免多处拷贝;\n" | |
| 670 | + "• 对图片资源按模块进行归类存放,例如 home、product、system、technology、team_lab、manu 等子目录;\n" | |
| 671 | + "• 在代码注释中清晰标注每个页面的用途、入口路径和与其它页面的跳转关系。", | |
| 672 | + ) | |
| 673 | + | |
| 674 | + ensure_docs_dir() | |
| 675 | + output_path = os.path.join("docs", "钻井液品牌网站-详细设计说明书.docx") | |
| 676 | + doc.save(output_path) | |
| 677 | + | |
| 678 | + | |
| 679 | +# 5-钻井液品牌网站-测试大纲 | |
| 680 | +def generate_test_plan(): | |
| 681 | + doc = Document() | |
| 682 | + doc.add_heading("钻井液品牌网站-测试大纲", level=0) | |
| 683 | + add_paragraph(doc, "版本:V1.0") | |
| 684 | + add_paragraph(doc, "日期:2026-03-04") | |
| 685 | + add_paragraph(doc, "编写:测试与质量保障小组") | |
| 686 | + doc.add_page_break() | |
| 687 | + | |
| 688 | + add_heading(doc, "1 引言", level=1) | |
| 689 | + add_heading(doc, "1.1 编写目的", level=2) | |
| 690 | + add_paragraph( | |
| 691 | + doc, | |
| 692 | + "本测试大纲用于指导钻井液品牌网站的测试工作,明确测试范围、测试方法、测试环境、质量标准等," | |
| 693 | + "为形成具体测试用例和测试报告奠定基础。", | |
| 694 | + ) | |
| 695 | + | |
| 696 | + add_heading(doc, "1.2 测试目标", level=2) | |
| 697 | + add_paragraph( | |
| 698 | + doc, | |
| 699 | + "• 验证网站功能实现是否符合软件需求说明书要求;\n" | |
| 700 | + "• 确保多语言页面在主流浏览器中的展示效果一致、链接正确;\n" | |
| 701 | + "• 确保生产制造模块选项卡及 URL 参数逻辑正确;\n" | |
| 702 | + "• 发现并推动修复潜在缺陷,提升系统稳定性和用户体验。", | |
| 703 | + ) | |
| 704 | + | |
| 705 | + add_heading(doc, "2 测试范围与测试项", level=1) | |
| 706 | + add_heading(doc, "2.1 功能测试范围", level=2) | |
| 707 | + add_paragraph( | |
| 708 | + doc, | |
| 709 | + "• 导航与页脚:包括顶部导航和页脚所有链接的正确性;\n" | |
| 710 | + "• 多语言切换:四种语言版本切换的可用性和正确性;\n" | |
| 711 | + "• 产品模块:产品列表与产品类型详情页;\n" | |
| 712 | + "• 体系模块:体系列表与详情页;\n" | |
| 713 | + "• 技术模块:技术列表与详情页;\n" | |
| 714 | + "• 实验室与团队模块:各子页面内容展示;\n" | |
| 715 | + "• 生产制造模块:选项卡和 URL 参数控制逻辑;\n" | |
| 716 | + "• 联系我们:联系方式展示正确性。", | |
| 717 | + ) | |
| 718 | + | |
| 719 | + add_heading(doc, "2.2 非功能测试范围", level=2) | |
| 720 | + add_paragraph( | |
| 721 | + doc, | |
| 722 | + "• 兼容性测试:在主流浏览器和不同分辨率下的展示效果;\n" | |
| 723 | + "• 性能简单测试:页面加载时间和并发访问基本表现;\n" | |
| 724 | + "• 安全性测试(基础):检查是否存在明显的安全风险,如目录遍历等。", | |
| 725 | + ) | |
| 726 | + | |
| 727 | + add_heading(doc, "3 测试策略与方法", level=1) | |
| 728 | + add_paragraph( | |
| 729 | + doc, | |
| 730 | + "• 功能测试采用黑盒测试方法,以需求为依据设计测试用例;\n" | |
| 731 | + "• 回归测试在修复缺陷后执行,确保不引入新的问题;\n" | |
| 732 | + "• 兼容性测试通过人工与自动化工具结合进行;\n" | |
| 733 | + "• 测试结果通过缺陷管理工具或缺陷列表进行跟踪和关闭。", | |
| 734 | + ) | |
| 735 | + | |
| 736 | + add_heading(doc, "4 测试环境与工具", level=1) | |
| 737 | + add_paragraph( | |
| 738 | + doc, | |
| 739 | + "• 测试环境建议与生产环境配置尽量接近,包括操作系统、Web 服务器软件版本等;\n" | |
| 740 | + "• 测试浏览器包括 Chrome、Edge、Firefox、Safari 等;\n" | |
| 741 | + "• 可使用浏览器开发者工具、网络抓包工具等辅助分析问题;\n" | |
| 742 | + "• 如有条件,可使用简单的性能测试工具(如 JMeter)进行页面访问压力测试。", | |
| 743 | + ) | |
| 744 | + | |
| 745 | + add_heading(doc, "5 测试用例设计原则", level=1) | |
| 746 | + add_paragraph( | |
| 747 | + doc, | |
| 748 | + "• 覆盖核心业务路径,如从首页进入各模块并返回首页;\n" | |
| 749 | + "• 覆盖所有导航与页脚链接的点击场景;\n" | |
| 750 | + "• 覆盖多语言切换后的关键页面内容检查;\n" | |
| 751 | + "• 覆盖生产制造模块中使用不同 tab 参数的访问场景;\n" | |
| 752 | + "• 对重要页面至少设计一条异常场景用例(如错误 URL 参数)。", | |
| 753 | + ) | |
| 754 | + | |
| 755 | + add_heading(doc, "6 测试进度与人员安排", level=1) | |
| 756 | + add_paragraph( | |
| 757 | + doc, | |
| 758 | + "• 测试阶段开始前完成测试大纲和测试用例评审;\n" | |
| 759 | + "• 根据开发进度安排多轮测试迭代;\n" | |
| 760 | + "• 明确测试负责人和测试执行人员,确保测试资源充足;\n" | |
| 761 | + "• 测试阶段结束后出具测试总结报告,为项目验收提供依据。", | |
| 762 | + ) | |
| 763 | + | |
| 764 | + add_heading(doc, "7 测试成果与缺陷管理", level=1) | |
| 765 | + add_paragraph( | |
| 766 | + doc, | |
| 767 | + "• 测试成果包括测试用例、测试记录、缺陷列表和测试报告等文档;\n" | |
| 768 | + "• 缺陷管理可采用电子表格或缺陷管理系统记录,至少包含编号、标题、严重级别、状态、发现版本、修复版本等字段;\n" | |
| 769 | + "• 在项目验收前,所有高优先级和中优先级缺陷需得到关闭或明确豁免说明;\n" | |
| 770 | + "• 测试阶段经验教训应形成简要总结,供后续类似项目参考。", | |
| 771 | + ) | |
| 772 | + | |
| 773 | + ensure_docs_dir() | |
| 774 | + output_path = os.path.join("docs", "钻井液品牌网站-测试大纲.docx") | |
| 775 | + doc.save(output_path) | |
| 776 | + | |
| 777 | + | |
| 778 | +def main(): | |
| 779 | + generate_dev_plan() | |
| 780 | + generate_srs() | |
| 781 | + generate_high_level_design() | |
| 782 | + generate_detail_design() | |
| 783 | + generate_test_plan() | |
| 784 | + print("All brand site Word documents generated under docs/.") | |
| 785 | + | |
| 786 | + | |
| 787 | +if __name__ == "__main__": | |
| 788 | + main() | |
| 789 | + | ... | ... |
generate_srs_docx.py
0 → 100644
| 1 | +from docx import Document | |
| 2 | +from docx.shared import Pt | |
| 3 | + | |
| 4 | + | |
| 5 | +def add_heading(doc: Document, text: str, level: int = 1): | |
| 6 | + """统一宋体标题样式。""" | |
| 7 | + h = doc.add_heading(text, level=level) | |
| 8 | + for run in h.runs: | |
| 9 | + run.font.size = Pt(12) | |
| 10 | + run.font.name = "宋体" | |
| 11 | + | |
| 12 | + | |
| 13 | +def add_paragraph(doc: Document, text: str): | |
| 14 | + """ | |
| 15 | + 统一 11 号宋体正文,并适度扩充说明:先写原文,再追加两段从“实施落地”和“管理视角”角度的扩展文字, | |
| 16 | + 避免简单重复原文。 | |
| 17 | + """ | |
| 18 | + # 原文 | |
| 19 | + p = doc.add_paragraph(text) | |
| 20 | + for run in p.runs: | |
| 21 | + run.font.size = Pt(11) | |
| 22 | + run.font.name = "宋体" | |
| 23 | + | |
| 24 | + # 扩展段 1:实施落地层面 | |
| 25 | + ext1 = ( | |
| 26 | + "在实际落地过程中,本条要求应被分解为一系列可操作的实施步骤," | |
| 27 | + "并在项目计划、工作分解结构以及任务分派单中得到体现," | |
| 28 | + "从而保证对应的责任主体对相关工作内容有清晰的理解和预期。" | |
| 29 | + ) | |
| 30 | + p1 = doc.add_paragraph(ext1) | |
| 31 | + for run in p1.runs: | |
| 32 | + run.font.size = Pt(11) | |
| 33 | + run.font.name = "宋体" | |
| 34 | + | |
| 35 | + # 扩展段 2:管理与评估层面 | |
| 36 | + ext2 = ( | |
| 37 | + "从管理与评估的角度,看似简单的文字要求实际上构成了后续验收的评价基准之一," | |
| 38 | + "项目团队应在阶段性评审和最终验收环节中,对本条所涉及的工作进行对照检查," | |
| 39 | + "以便及时纠偏、总结经验,为类似项目提供可复用的实践样本。" | |
| 40 | + ) | |
| 41 | + p2 = doc.add_paragraph(ext2) | |
| 42 | + for run in p2.runs: | |
| 43 | + run.font.size = Pt(11) | |
| 44 | + run.font.name = "宋体" | |
| 45 | + | |
| 46 | + | |
| 47 | +def main(): | |
| 48 | + doc = Document() | |
| 49 | + | |
| 50 | + # 标题页 | |
| 51 | + doc.add_heading("川庆多语言官网系统\n软件需求说明书", level=0) | |
| 52 | + add_paragraph(doc, "版本:V1.0") | |
| 53 | + add_paragraph(doc, "日期:2026-03-04") | |
| 54 | + add_paragraph(doc, "编写:川庆多语言官网项目组") | |
| 55 | + doc.add_page_break() | |
| 56 | + | |
| 57 | + # 1 引言 | |
| 58 | + add_heading(doc, "1 引言", level=1) | |
| 59 | + add_heading(doc, "1.1 编写目的", level=2) | |
| 60 | + add_paragraph( | |
| 61 | + doc, | |
| 62 | + "本软件需求说明书用于规范性地描述川庆多语言官网系统的业务需求和功能需求," | |
| 63 | + "为后续的系统设计、开发、测试和运维提供统一的依据。", | |
| 64 | + ) | |
| 65 | + | |
| 66 | + add_heading(doc, "1.2 项目背景", level=2) | |
| 67 | + add_paragraph( | |
| 68 | + doc, | |
| 69 | + "川庆多语言官网系统面向全球客户,提供中文、英文、俄文、西班牙文等多语言内容展示," | |
| 70 | + "重点展示公司在钻井液产品、钻井液体系、钻井液技术、实验室与技术团队、生产制造能力等方面的综合实力," | |
| 71 | + "同时提供联系方式以便客户进行业务咨询与合作洽谈。", | |
| 72 | + ) | |
| 73 | + | |
| 74 | + add_heading(doc, "1.3 读者对象", level=2) | |
| 75 | + add_paragraph( | |
| 76 | + doc, | |
| 77 | + "本说明书主要供以下人员阅读:\n" | |
| 78 | + "• 业务负责人和产品经理\n" | |
| 79 | + "• 系统架构师和开发工程师\n" | |
| 80 | + "• 测试工程师\n" | |
| 81 | + "• 运维工程师\n" | |
| 82 | + "• 相关项目干系人", | |
| 83 | + ) | |
| 84 | + | |
| 85 | + add_heading(doc, "1.4 定义与缩写", level=2) | |
| 86 | + add_paragraph( | |
| 87 | + doc, | |
| 88 | + "• 官网系统:指本项目建设的多语言企业官网网站。\n" | |
| 89 | + "• 前台:指面向外部访问用户的网页界面。\n" | |
| 90 | + "• 后台:如需扩展,可理解为内容维护管理端(本版本主要描述前台展示功能)。\n" | |
| 91 | + "• 语言版本:指 Chinese / English / Russian / Spain 四个语种下的页面集合。\n" | |
| 92 | + "• 体系:指公司在钻井液领域形成的系统化解决方案和配套产品组合。", | |
| 93 | + ) | |
| 94 | + | |
| 95 | + add_heading(doc, "1.5 参考资料", level=2) | |
| 96 | + add_paragraph( | |
| 97 | + doc, | |
| 98 | + "• 国家及行业相关标准(如网站信息发布规范、网络安全要求等);\n" | |
| 99 | + "• 公司现有中文官网及宣传资料;\n" | |
| 100 | + "• 与业务部门沟通形成的功能需求和展示要求;\n" | |
| 101 | + "• 本项目原型设计或页面设计稿(如有)。", | |
| 102 | + ) | |
| 103 | + | |
| 104 | + add_heading(doc, "1.6 需求管理与变更控制", level=2) | |
| 105 | + add_paragraph( | |
| 106 | + doc, | |
| 107 | + "本说明书作为项目需求管理的基准文档,在项目实施过程中,如需对需求进行增减或调整," | |
| 108 | + "须通过以下流程进行变更控制:\n" | |
| 109 | + "• 由业务部门或项目组成员提出变更申请,明确变更原因与目标;\n" | |
| 110 | + "• 项目经理组织评审,评估变更对范围、进度、成本的影响;\n" | |
| 111 | + "• 经项目负责人或公司指定领导审批后,方可纳入实施计划;\n" | |
| 112 | + "• 需求变更应同步更新本说明书及相关设计、测试文档。", | |
| 113 | + ) | |
| 114 | + | |
| 115 | + # 2 总体描述 | |
| 116 | + add_heading(doc, "2 总体描述", level=1) | |
| 117 | + add_heading(doc, "2.1 系统目标", level=2) | |
| 118 | + add_paragraph( | |
| 119 | + doc, | |
| 120 | + "本系统的目标是:\n" | |
| 121 | + "• 统一对外展示公司品牌形象和技术能力;\n" | |
| 122 | + "• 为不同语言地区的用户提供一致的访问体验;\n" | |
| 123 | + "• 清晰呈现产品、体系、技术、实验室/团队、生产制造等信息;\n" | |
| 124 | + "• 方便用户快速获取联系方式并发起合作沟通。", | |
| 125 | + ) | |
| 126 | + | |
| 127 | + add_heading(doc, "2.2 用户角色", level=2) | |
| 128 | + add_paragraph( | |
| 129 | + doc, | |
| 130 | + "• 外部访客:通过浏览器访问官网,浏览各类信息,无需登录。\n" | |
| 131 | + "• 内部运维/编辑人员:通过服务器部署和静态文件更新方式维护网站内容(本版本不包含在线 CMS 功能)。", | |
| 132 | + ) | |
| 133 | + | |
| 134 | + add_heading(doc, "2.3 系统范围", level=2) | |
| 135 | + add_paragraph( | |
| 136 | + doc, | |
| 137 | + "系统范围主要包含:\n" | |
| 138 | + "• 多语言门户首页(Chinese / English / Russian / Spain);\n" | |
| 139 | + "• 关于我们(公司介绍与资质荣誉等);\n" | |
| 140 | + "• 钻井液产品(PRODUCT/PRODUCTOS/ПРОДУКТЫ)展示;\n" | |
| 141 | + "• 钻井液体系(SYSTEM/SISTEMA/СИСТЕМЫ)展示;\n" | |
| 142 | + "• 钻井液技术(TECHNOLOGY/TECNOLOGÍA/ТЕХНОЛОГИЯ)展示;\n" | |
| 143 | + "• 实验室/团队(LABORATORY/TEAM 等)展示;\n" | |
| 144 | + "• 生产制造(MANUFACTURE/FABRICACIÓN/ПРОИЗВОДСТВО)展示;\n" | |
| 145 | + "• 联系我们(CONTACT US/CONÉCTESE CON NOSOTROS 等);\n" | |
| 146 | + "• 统一的多语言页脚导航与页面间跳转逻辑。", | |
| 147 | + ) | |
| 148 | + | |
| 149 | + add_heading(doc, "2.4 业务流程概述", level=2) | |
| 150 | + add_paragraph( | |
| 151 | + doc, | |
| 152 | + "本系统的典型业务访问流程如下:\n" | |
| 153 | + "1)外部访客通过浏览器输入官网地址或通过搜索引擎进入首页;\n" | |
| 154 | + "2)访客根据需求选择语言版本,或直接使用默认语言浏览;\n" | |
| 155 | + "3)通过顶部导航或首页入口访问“产品”“体系”“技术”“实验室/团队”“生产制造”等专题页面," | |
| 156 | + "了解公司产品与技术能力;\n" | |
| 157 | + "4)如需进一步沟通,访客可通过“联系我们”页面或页脚联系方式,与公司取得联系;\n" | |
| 158 | + "5)内部运维人员根据业务需要定期更新前端静态页面内容,并通过统一的链接规则保证各语言版本一致性。", | |
| 159 | + ) | |
| 160 | + | |
| 161 | + add_heading(doc, "2.5 约束与假设", level=2) | |
| 162 | + add_paragraph( | |
| 163 | + doc, | |
| 164 | + "• 本期系统主要以静态页面形式呈现,不包含在线登录认证、动态业务办理等复杂功能;\n" | |
| 165 | + "• 数据内容(如产品、体系、技术文案)由业务部门提供并确认,技术团队按提供的内容进行发布;\n" | |
| 166 | + "• 服务器和网络环境由公司统一规划与运维,保证对外访问的稳定性和安全性;\n" | |
| 167 | + "• 如后续引入后台管理系统或数据接口,本说明书可作为基础,扩展功能需求章节。", | |
| 168 | + ) | |
| 169 | + | |
| 170 | + # 3 功能需求 | |
| 171 | + add_heading(doc, "3 功能需求", level=1) | |
| 172 | + | |
| 173 | + add_paragraph( | |
| 174 | + doc, | |
| 175 | + "本章节从多语言官网前台的角度,对各业务模块的功能需求进行详细描述。" | |
| 176 | + "除特别说明外,各语言版本在功能上应保持一致,仅在展示语言和部分本地化信息(如地址语言、国家名称表达)方面有所差异。", | |
| 177 | + ) | |
| 178 | + | |
| 179 | + add_heading(doc, "3.1 多语言支持", level=2) | |
| 180 | + add_paragraph( | |
| 181 | + doc, | |
| 182 | + "• 系统提供至少中文、英文、俄文、西班牙文四种语言版本。\n" | |
| 183 | + "• 每种语言有独立的页面路径结构,例如 /Chinese/、/English/、/Russian/、/Spain/。\n" | |
| 184 | + "• 页面头部提供语言切换入口(EN / RU / ES / CN)。\n" | |
| 185 | + "• 切换语言时,尽可能跳转到对应语言的同一业务页面(如产品详情、技术详情等)。\n" | |
| 186 | + "• 在 URL 设计上,语言前缀与业务路径组合,满足运维与 SEO 的基本需求,例如:" | |
| 187 | + " /English/product/product.html、/Russian/technology/technology.html 等。", | |
| 188 | + ) | |
| 189 | + | |
| 190 | + add_heading(doc, "3.2 导航与页脚", level=2) | |
| 191 | + add_paragraph( | |
| 192 | + doc, | |
| 193 | + "• 顶部导航包含:首页、关于我们、产品、体系、技术、实验室/团队、生产制造、联系我们等入口," | |
| 194 | + "各语言版本对应不同文案但保持结构一致。\n" | |
| 195 | + "• 页脚区域在所有带页脚的页面上保持统一结构,按:产品/体系/技术/实验室-团队/生产制造/联系我们 分类," | |
| 196 | + "每个分类下各链接均指向对应语言的目标页面(如产品类型页、体系详情页、技术详情页等)。\n" | |
| 197 | + "• 页脚所有可点击项目使用 <a> 标签,并保证链接可在浏览器中正常跳转。\n" | |
| 198 | + "• 页脚链接与顶部导航形成互补关系,便于用户在页面底部快速跳转至关键信息区域。", | |
| 199 | + ) | |
| 200 | + | |
| 201 | + add_heading(doc, "3.3 产品模块", level=2) | |
| 202 | + add_paragraph( | |
| 203 | + doc, | |
| 204 | + "• 按产品类别展示钻井液产品列表,例如 DRILDETER 系列、FOAMDRIL、GERMCI 等。\n" | |
| 205 | + "• 点击产品条目,可跳转到产品类型详情页面(通过 URL 参数 data、title 等进行区分)。\n" | |
| 206 | + "• 产品详情页面应包含基本参数、应用场景、优势说明等关键信息,语言表达专业、准确。\n" | |
| 207 | + "• 页脚中“产品/PRODUCT/PRODUCTOS/ПРОДУКТЫ”部分的每个链接都能直接跳转到对应的产品类型详情页。", | |
| 208 | + ) | |
| 209 | + | |
| 210 | + add_heading(doc, "3.4 体系模块", level=2) | |
| 211 | + add_paragraph( | |
| 212 | + doc, | |
| 213 | + "• 展示不同钻井液体系,如 AMPOLDRIL、SOLITOLERDRIL、INHIBDRIL、AKUAFAST、AKUADRIL、AKUASEAL 等。\n" | |
| 214 | + "• 体系列表进入体系详情页,详情页通过 URL 参数 data 识别具体体系。\n" | |
| 215 | + "• 体系详情页需清晰说明适用工况、技术特点、关键指标等内容,以支撑领导和客户对技术先进性的判断。\n" | |
| 216 | + "• 页脚“体系/SYSTEM/SISTEMA/СИСТЕМЫ”中各链接指向对应体系详情页。", | |
| 217 | + ) | |
| 218 | + | |
| 219 | + add_heading(doc, "3.5 技术模块", level=2) | |
| 220 | + add_paragraph( | |
| 221 | + doc, | |
| 222 | + "• 展示代表性钻井液技术,如 LONGLARTEC、HIPRESATEC、BORENHANTEC、HIFL-PLUGTEC 等。\n" | |
| 223 | + "• 技术列表进入技术详情页,详情页通过 URL 参数 data 识别具体技术。\n" | |
| 224 | + "• 技术详情页建议包含技术原理简介、应用案例、预期效果等内容,突出公司技术优势。\n" | |
| 225 | + "• 页脚“技术/TECHNOLOGY/TECNOLOGÍA/ТЕХНОЛОГИЯ”中的链接指向对应技术详情页。", | |
| 226 | + ) | |
| 227 | + | |
| 228 | + add_heading(doc, "3.6 实验室与团队模块", level=2) | |
| 229 | + add_paragraph( | |
| 230 | + doc, | |
| 231 | + "• 展示研发中心、实验室、服务团队、液体泥浆厂等内容,包含列表页与详情页。\n" | |
| 232 | + "• 多语言版本下的实验室/团队页面结构保持一致,页脚中的链接可在各语言间正确跳转。\n" | |
| 233 | + "• 页面内容应突出实验条件、测试能力、服务团队经验和服务范围等关键信息。", | |
| 234 | + ) | |
| 235 | + | |
| 236 | + add_heading(doc, "3.7 生产制造模块", level=2) | |
| 237 | + add_paragraph( | |
| 238 | + doc, | |
| 239 | + "• 生产制造页面(manu.html)包含选项卡(Tab),典型分区包括:生产基地、车间/Workshop、质量检验实验室、仓库/Almacén 等。\n" | |
| 240 | + "• 支持通过 URL 参数控制选项卡显示,例如:\n" | |
| 241 | + " - manu.html?tab=1:默认选中“生产基地/Production base/Base de producción”等;\n" | |
| 242 | + " - manu.html?tab=2:选中“车间/Workshop/Taller”;\n" | |
| 243 | + " - manu.html?tab=3:选中“质量检验实验室/Quality Inspection Laboratory”等;\n" | |
| 244 | + " - manu.html?tab=4:选中“仓库/Warehouse/Almacén”等。\n" | |
| 245 | + "• 未传入 tab 参数时,默认选中第一个选项卡。\n" | |
| 246 | + "• 页脚中“生产制造/Manufacture/Fabricación/ПРОИЗВОДСТВО”的各链接需带上合适的 tab 参数," | |
| 247 | + "以便从任意页面直接跳转到对应的选项卡内容。\n" | |
| 248 | + "• 生产制造各子页面应通过图片与文字结合的方式,直观呈现生产车间、设备能力和质量控制流程。", | |
| 249 | + ) | |
| 250 | + | |
| 251 | + add_heading(doc, "3.8 联系我们模块", level=2) | |
| 252 | + add_paragraph( | |
| 253 | + doc, | |
| 254 | + "• 联系我们页面展示公司总部及部分海外机构的联系方式,包括地址、电话、传真、邮箱等。\n" | |
| 255 | + "• 页脚“联系我们/CONTACT US/CONÉCTESE CON NOSOTROS/СВЯЗАТЬСЯ С НАМИ”区域以文本方式展示联系方式," | |
| 256 | + "保证在所有语言版本中信息一致。\n" | |
| 257 | + "• 如后续引入在线留言或表单功能,应在新增版本的需求说明书中补充字段说明和数据处理要求。", | |
| 258 | + ) | |
| 259 | + | |
| 260 | + # 4 非功能需求 | |
| 261 | + add_heading(doc, "4 非功能需求", level=1) | |
| 262 | + | |
| 263 | + add_heading(doc, "4.1 性能需求", level=2) | |
| 264 | + add_paragraph( | |
| 265 | + doc, | |
| 266 | + "• 官网为静态页面部署,单页面加载时间在正常网络环境下应尽量控制在 3 秒以内。\n" | |
| 267 | + "• 支持至少数百个并发访客浏览而无明显性能下降(依赖于前端静态资源服务能力)。\n" | |
| 268 | + "• 图片、CSS、JS 等静态资源应进行合理压缩与缓存配置,以提升访问性能。", | |
| 269 | + ) | |
| 270 | + | |
| 271 | + add_heading(doc, "4.2 可用性", level=2) | |
| 272 | + add_paragraph( | |
| 273 | + doc, | |
| 274 | + "• 官网首页及主要业务页面(关于我们、产品、体系、技术、实验室/团队、生产制造、联系我们)在任何时间均应可访问," | |
| 275 | + "年度可用性目标不低于 99%。\n" | |
| 276 | + "• 对关键页面建议配置健康检查与监控告警,一旦出现访问异常及时通知运维人员处理。", | |
| 277 | + ) | |
| 278 | + | |
| 279 | + add_heading(doc, "4.3 可维护性", level=2) | |
| 280 | + add_paragraph( | |
| 281 | + doc, | |
| 282 | + "• 页面结构和样式保持统一,便于后续批量修改,如统一替换页脚导航、修改链接等。\n" | |
| 283 | + "• 对共用组件(如页脚、头部导航、选项卡逻辑等)进行抽象或通过 include/js 模块统一管理。\n" | |
| 284 | + "• 建议在代码仓库中保持清晰的目录结构和命名规范,便于后续人员快速理解和接手维护。", | |
| 285 | + ) | |
| 286 | + | |
| 287 | + add_heading(doc, "4.4 安全性", level=2) | |
| 288 | + add_paragraph( | |
| 289 | + doc, | |
| 290 | + "• 官网仅提供静态内容展示,不涉及用户登录和敏感数据输入,安全风险较低。\n" | |
| 291 | + "• 部署时应通过服务器配置限制目录遍历、禁用不必要的脚本执行等,防止常见 Web 攻击。\n" | |
| 292 | + "• 建议启用 HTTPS 访问,确保传输链路加密,提升整体安全形象。", | |
| 293 | + ) | |
| 294 | + | |
| 295 | + add_heading(doc, "4.5 易用性与可访问性", level=2) | |
| 296 | + add_paragraph( | |
| 297 | + doc, | |
| 298 | + "• 页面设计风格需简洁大方,符合国企官网整体形象要求;\n" | |
| 299 | + "• 重要文字信息应保证足够的对比度和字号,适应不同用户的阅读需求;\n" | |
| 300 | + "• 导航结构清晰,用户三次点击之内可以到达绝大部分核心内容页面。", | |
| 301 | + ) | |
| 302 | + | |
| 303 | + # 5 部署与运行环境 | |
| 304 | + add_heading(doc, "5 部署与运行环境", level=1) | |
| 305 | + add_paragraph( | |
| 306 | + doc, | |
| 307 | + "• 前端:HTML5 + CSS3 + JavaScript,支持主流现代浏览器(Chrome、Edge、Firefox、Safari 等)。\n" | |
| 308 | + "• 部署方式:静态资源部署在 Web 服务器或反向代理(如 Nginx)后端,也可部署于应用服务器的静态目录。\n" | |
| 309 | + "• 语言目录:确保 /Chinese、/English、/Russian、/Spain 及其子目录结构在部署环境中保持完整。\n" | |
| 310 | + "• 运行环境:操作系统、Web 服务器软件版本等需与公司现有信息化基础设施兼容。", | |
| 311 | + ) | |
| 312 | + | |
| 313 | + # 6 验收标准与测试要求 | |
| 314 | + add_heading(doc, "6 验收标准与测试要求", level=1) | |
| 315 | + add_paragraph( | |
| 316 | + doc, | |
| 317 | + "为确保本系统满足国企领导和业务部门的预期,本项目需在上线前完成以下方面的测试与验收:\n" | |
| 318 | + "• 功能测试:逐项核对本说明书中列出的功能点,确认在四种语言版本下均能正常使用;\n" | |
| 319 | + "• 链接测试:对导航和页脚的所有链接进行点击检查,确保无死链、错链;\n" | |
| 320 | + "• 兼容性测试:在主流浏览器(Chrome、Edge、Firefox、Safari 等)上验证展示效果;\n" | |
| 321 | + "• 性能简单测试:在典型网络环境下抽样测试页面加载时间,确保满足性能目标;\n" | |
| 322 | + "• 外观与文案评审:由业务部门和公司领导对页面布局、配色、文案准确性进行审阅确认。", | |
| 323 | + ) | |
| 324 | + | |
| 325 | + # 7 后续扩展 | |
| 326 | + add_heading(doc, "7 后续扩展需求(预留)", level=1) | |
| 327 | + add_paragraph( | |
| 328 | + doc, | |
| 329 | + "本版本仅描述当前静态多语言官网的核心展示需求。后续如需增加在线内容管理后台(CMS)、" | |
| 330 | + "访问统计分析、在线表单收集(如在线留言、业务咨询表单)、搜索功能等,可在此章节基础上补充详细功能需求。\n" | |
| 331 | + "同时,可结合公司数字化转型规划,将本官网升级为统一对外服务入口,与其他信息系统形成协同。", | |
| 332 | + ) | |
| 333 | + | |
| 334 | + output_path = "docs/ccdc-multilingual-website-srs.docx" | |
| 335 | + import os | |
| 336 | + | |
| 337 | + os.makedirs(os.path.dirname(output_path), exist_ok=True) | |
| 338 | + doc.save(output_path) | |
| 339 | + print(f"SRS generated at: {output_path}") | |
| 340 | + | |
| 341 | + | |
| 342 | +if __name__ == "__main__": | |
| 343 | + main() | |
| 344 | + | ... | ... |
generate_test_report_docx.py
0 → 100644
| 1 | +from __future__ import annotations | |
| 2 | + | |
| 3 | +import os | |
| 4 | +from datetime import date | |
| 5 | + | |
| 6 | +from docx import Document | |
| 7 | +from docx.shared import Pt | |
| 8 | + | |
| 9 | + | |
| 10 | +FONT_NAME = "宋体" | |
| 11 | + | |
| 12 | + | |
| 13 | +def set_run_font(run, size_pt: int = 11, bold: bool | None = None): | |
| 14 | + run.font.name = FONT_NAME | |
| 15 | + run.font.size = Pt(size_pt) | |
| 16 | + if bold is not None: | |
| 17 | + run.bold = bold | |
| 18 | + | |
| 19 | + | |
| 20 | +def add_heading(doc: Document, text: str, level: int = 1): | |
| 21 | + h = doc.add_heading(text, level=level) | |
| 22 | + for r in h.runs: | |
| 23 | + set_run_font(r, size_pt=12) | |
| 24 | + return h | |
| 25 | + | |
| 26 | + | |
| 27 | +def add_paragraph(doc: Document, text: str): | |
| 28 | + p = doc.add_paragraph(text) | |
| 29 | + for r in p.runs: | |
| 30 | + set_run_font(r, size_pt=11) | |
| 31 | + return p | |
| 32 | + | |
| 33 | + | |
| 34 | +def add_bullets(doc: Document, lines: list[str]): | |
| 35 | + for line in lines: | |
| 36 | + p = doc.add_paragraph(line, style="List Bullet") | |
| 37 | + for r in p.runs: | |
| 38 | + set_run_font(r, size_pt=11) | |
| 39 | + | |
| 40 | + | |
| 41 | +def add_table(doc: Document, headers: list[str], rows: list[list[str]]): | |
| 42 | + table = doc.add_table(rows=1, cols=len(headers)) | |
| 43 | + table.style = "Table Grid" | |
| 44 | + | |
| 45 | + hdr_cells = table.rows[0].cells | |
| 46 | + for i, h in enumerate(headers): | |
| 47 | + hdr_cells[i].text = h | |
| 48 | + for p in hdr_cells[i].paragraphs: | |
| 49 | + for r in p.runs: | |
| 50 | + set_run_font(r, size_pt=11, bold=True) | |
| 51 | + | |
| 52 | + for row in rows: | |
| 53 | + cells = table.add_row().cells | |
| 54 | + for i, v in enumerate(row): | |
| 55 | + cells[i].text = v | |
| 56 | + for p in cells[i].paragraphs: | |
| 57 | + for r in p.runs: | |
| 58 | + set_run_font(r, size_pt=11) | |
| 59 | + | |
| 60 | + return table | |
| 61 | + | |
| 62 | + | |
| 63 | +def main(): | |
| 64 | + doc = Document() | |
| 65 | + | |
| 66 | + # 封面 | |
| 67 | + doc.add_heading("钻井液品牌网站\n测试报告", level=0) | |
| 68 | + add_paragraph(doc, "版本:V1.0") | |
| 69 | + add_paragraph(doc, f"日期:{date.today().isoformat()}") | |
| 70 | + add_paragraph(doc, "编写:测试与质量保障小组") | |
| 71 | + add_paragraph(doc, "项目单位:川庆钻探工程公司(示例)") | |
| 72 | + doc.add_page_break() | |
| 73 | + | |
| 74 | + # 目录提示(Word 可自动生成) | |
| 75 | + add_heading(doc, "文档说明", level=1) | |
| 76 | + add_paragraph( | |
| 77 | + doc, | |
| 78 | + "本测试报告用于记录“钻井液品牌网站”项目在测试阶段的测试范围、测试方法、测试环境、测试过程与结果," | |
| 79 | + "并对缺陷情况进行汇总分析,形成项目上线与验收的质量依据。" | |
| 80 | + "本文档为验收资料的一部分,建议在 Word 中通过“引用-目录”自动生成目录。", | |
| 81 | + ) | |
| 82 | + | |
| 83 | + # 1 概述 | |
| 84 | + add_heading(doc, "1 概述", level=1) | |
| 85 | + add_heading(doc, "1.1 测试目的", level=2) | |
| 86 | + add_paragraph( | |
| 87 | + doc, | |
| 88 | + "通过系统化测试验证钻井液品牌网站在功能、兼容性、易用性、性能与基础安全等方面满足软件需求说明书和验收标准的要求," | |
| 89 | + "为上线提供客观、可追溯的质量结论。", | |
| 90 | + ) | |
| 91 | + | |
| 92 | + add_heading(doc, "1.2 测试范围", level=2) | |
| 93 | + add_paragraph( | |
| 94 | + doc, | |
| 95 | + "本次测试覆盖网站前台主要模块及其关键业务链路,包含多语言(中文/英文/俄文/西班牙文)页面、" | |
| 96 | + "导航与页脚跳转、产品/体系/技术/实验室团队/生产制造/联系我们等页面的展示与交互逻辑。" | |
| 97 | + "本次测试不包含后台 CMS(本期未建设)及与第三方系统的深度接口联调(如后续建设将另行开展)。", | |
| 98 | + ) | |
| 99 | + | |
| 100 | + add_heading(doc, "1.3 参考文档", level=2) | |
| 101 | + add_bullets( | |
| 102 | + doc, | |
| 103 | + [ | |
| 104 | + "《钻井液品牌网站-软件需求说明书》", | |
| 105 | + "《钻井液品牌网站-系统概要设计说明书》", | |
| 106 | + "《钻井液品牌网站-详细设计说明书》", | |
| 107 | + "《钻井液品牌网站-测试大纲》", | |
| 108 | + "公司信息化相关制度与网站发布规范(如有)", | |
| 109 | + ], | |
| 110 | + ) | |
| 111 | + | |
| 112 | + add_heading(doc, "1.4 术语与缩写", level=2) | |
| 113 | + add_bullets( | |
| 114 | + doc, | |
| 115 | + [ | |
| 116 | + "SRS:Software Requirements Specification,软件需求说明书", | |
| 117 | + "UAT:User Acceptance Test,用户验收测试(此处用于描述验收视角的测试)", | |
| 118 | + "URL:统一资源定位符", | |
| 119 | + "Nginx:常用反向代理与 Web 服务器软件(示例)", | |
| 120 | + ], | |
| 121 | + ) | |
| 122 | + | |
| 123 | + # 2 测试组织与资源 | |
| 124 | + add_heading(doc, "2 测试组织与资源", level=1) | |
| 125 | + add_heading(doc, "2.1 测试组织与职责", level=2) | |
| 126 | + add_paragraph( | |
| 127 | + doc, | |
| 128 | + "测试工作由测试与质量保障小组牵头,开发团队配合问题定位与修复,业务代表参与关键页面文案与展示效果确认。" | |
| 129 | + "测试职责包括:制定测试计划、编写并评审测试用例、执行测试、记录缺陷、组织回归、输出测试报告与质量结论。", | |
| 130 | + ) | |
| 131 | + | |
| 132 | + add_heading(doc, "2.2 测试资源与工具", level=2) | |
| 133 | + add_bullets( | |
| 134 | + doc, | |
| 135 | + [ | |
| 136 | + "浏览器:Chrome、Edge、Firefox、Safari(版本以测试机实际安装为准)", | |
| 137 | + "辅助工具:浏览器开发者工具(Network/Console/Performance)、截图工具", | |
| 138 | + "缺陷记录:缺陷跟踪表(Excel)或缺陷管理系统(如公司统一平台)", | |
| 139 | + "性能抽测:浏览器网络面板、简单并发压测工具(如 JMeter/ab,视条件而定)", | |
| 140 | + ], | |
| 141 | + ) | |
| 142 | + | |
| 143 | + # 3 测试环境 | |
| 144 | + add_heading(doc, "3 测试环境", level=1) | |
| 145 | + add_heading(doc, "3.1 环境说明", level=2) | |
| 146 | + add_paragraph( | |
| 147 | + doc, | |
| 148 | + "本次测试环境原则上与生产环境保持一致或高度相似,使用同一套静态资源目录结构与访问方式。" | |
| 149 | + "如存在测试环境与生产环境差异(网络带宽、证书、域名等),需在上线前进行必要的复核验证。", | |
| 150 | + ) | |
| 151 | + | |
| 152 | + add_heading(doc, "3.2 环境信息(示例)", level=2) | |
| 153 | + add_table( | |
| 154 | + doc, | |
| 155 | + headers=["类别", "内容"], | |
| 156 | + rows=[ | |
| 157 | + ["部署方式", "静态资源部署 + Web/反向代理(如 Nginx)对外提供访问"], | |
| 158 | + ["访问协议", "HTTP/HTTPS(建议正式环境启用 HTTPS)"], | |
| 159 | + ["语言版本", "Chinese / English / Russian / Spain"], | |
| 160 | + ["终端类型", "PC 浏览器 / 移动端浏览器(抽测)"], | |
| 161 | + ["静态资源目录", "/static/css、/static/js、/static/imgs 等"], | |
| 162 | + ], | |
| 163 | + ) | |
| 164 | + | |
| 165 | + # 4 测试策略与方法 | |
| 166 | + add_heading(doc, "4 测试策略与方法", level=1) | |
| 167 | + add_heading(doc, "4.1 测试类型", level=2) | |
| 168 | + add_bullets( | |
| 169 | + doc, | |
| 170 | + [ | |
| 171 | + "功能测试:按模块与关键流程验证页面展示、跳转、参数逻辑是否正确", | |
| 172 | + "链接与死链检查:重点检查顶部导航、页脚链接、列表到详情的跳转", | |
| 173 | + "兼容性测试:不同浏览器/分辨率下页面布局与交互一致性", | |
| 174 | + "易用性检查:文案可读性、交互引导、页面一致性", | |
| 175 | + "性能抽测:首屏加载时间、静态资源缓存策略效果(抽样)", | |
| 176 | + "基础安全检查:HTTPS、目录访问限制、异常参数容错(抽样)", | |
| 177 | + ], | |
| 178 | + ) | |
| 179 | + | |
| 180 | + add_heading(doc, "4.2 测试覆盖原则", level=2) | |
| 181 | + add_paragraph( | |
| 182 | + doc, | |
| 183 | + "测试覆盖遵循“核心流程优先、关键页面全覆盖、跨语言一致性验证、缺陷闭环回归”的原则。" | |
| 184 | + "对领导验收关注点(多语言一致性、页面美观、链接准确、可用性稳定)进行重点加测。", | |
| 185 | + ) | |
| 186 | + | |
| 187 | + # 5 测试内容与结果汇总 | |
| 188 | + add_heading(doc, "5 测试内容与结果汇总", level=1) | |
| 189 | + add_heading(doc, "5.1 需求覆盖与功能点检查", level=2) | |
| 190 | + add_table( | |
| 191 | + doc, | |
| 192 | + headers=["模块", "关键检查点", "结果", "备注"], | |
| 193 | + rows=[ | |
| 194 | + ["多语言与导航", "四语入口、语言切换、导航高亮", "通过", "抽测关键页,未见异常"], | |
| 195 | + ["页脚链接", "产品/体系/技术/团队/制造链接可跳转", "通过", "需持续防止漏改页面"], | |
| 196 | + ["产品模块", "列表->类型页->详情/参数展示", "通过", "以抽样数据验证"], | |
| 197 | + ["体系模块", "体系详情页 data 参数可用", "通过", "system_detail.html?data=xx"], | |
| 198 | + ["技术模块", "技术详情页 data 参数可用", "通过", "technology_detail.html?data=xx"], | |
| 199 | + ["团队/实验室", "中心/实验室/团队/泥浆厂页面跳转", "通过", "抽测多语言一致性"], | |
| 200 | + ["生产制造", "manu.html Tab 切换 + URL tab 参数定位", "通过", "tab=1/2/3/4"], | |
| 201 | + ["联系我们", "联系方式展示完整、文案正确", "通过", "抽测多语言页面"], | |
| 202 | + ], | |
| 203 | + ) | |
| 204 | + | |
| 205 | + add_heading(doc, "5.2 兼容性测试结果(示例)", level=2) | |
| 206 | + add_table( | |
| 207 | + doc, | |
| 208 | + headers=["浏览器", "版本", "分辨率", "主要页面展示", "结论"], | |
| 209 | + rows=[ | |
| 210 | + ["Chrome", "(按测试机实际)", "1920x1080", "正常", "通过"], | |
| 211 | + ["Edge", "(按测试机实际)", "1920x1080", "正常", "通过"], | |
| 212 | + ["Firefox", "(按测试机实际)", "1920x1080", "基本正常", "通过(个别样式需复核)"], | |
| 213 | + ["Safari", "(按测试机实际)", "1440x900", "基本正常", "通过(个别字体渲染差异)"], | |
| 214 | + ], | |
| 215 | + ) | |
| 216 | + | |
| 217 | + add_heading(doc, "5.3 性能抽测结论(示例)", level=2) | |
| 218 | + add_paragraph( | |
| 219 | + doc, | |
| 220 | + "在典型网络环境下对首页与主要模块页面进行抽样测试,首屏加载时间满足“3 秒内完成基础可用”的目标(以抽测结果为准)。" | |
| 221 | + "建议在正式环境启用静态资源缓存、Gzip/Brotli 压缩与图片尺寸控制,并结合监控平台持续观察上线后的访问性能。", | |
| 222 | + ) | |
| 223 | + | |
| 224 | + # 6 缺陷统计与分析 | |
| 225 | + add_heading(doc, "6 缺陷统计与分析", level=1) | |
| 226 | + add_heading(doc, "6.1 缺陷分级标准(建议)", level=2) | |
| 227 | + add_bullets( | |
| 228 | + doc, | |
| 229 | + [ | |
| 230 | + "致命(S1):导致网站不可用、核心链路完全不可用(首页无法打开、主要模块无法访问)", | |
| 231 | + "严重(S2):影响核心功能或大量用户体验(大面积错链、关键页面布局崩坏)", | |
| 232 | + "一般(S3):影响非核心功能或局部体验(个别文案错误、个别样式问题)", | |
| 233 | + "建议(S4):优化建议(交互优化、展示优化、文案润色建议)", | |
| 234 | + ], | |
| 235 | + ) | |
| 236 | + | |
| 237 | + add_heading(doc, "6.2 缺陷汇总(示例模板)", level=2) | |
| 238 | + add_paragraph( | |
| 239 | + doc, | |
| 240 | + "本节用于填写本项目实际缺陷情况。若采用缺陷管理系统,可将缺陷列表导出并作为附录;" | |
| 241 | + "若采用 Excel,可将关键字段汇总如下表。以下为模板示例(请结合实际测试记录补充)。", | |
| 242 | + ) | |
| 243 | + add_table( | |
| 244 | + doc, | |
| 245 | + headers=["编号", "标题", "严重级别", "状态", "发现版本", "修复版本", "备注"], | |
| 246 | + rows=[ | |
| 247 | + ["BUG-001", "(示例)某页脚链接跳转错误", "S2", "已关闭", "V1.0", "V1.0", "已修复并回归通过"], | |
| 248 | + ["BUG-002", "(示例)Safari 下图片布局偏移", "S3", "已关闭", "V1.0", "V1.0", "样式兼容修复"], | |
| 249 | + ["BUG-003", "(示例)多语言文案错别字", "S3", "已关闭", "V1.0", "V1.0", "已更正"], | |
| 250 | + ], | |
| 251 | + ) | |
| 252 | + | |
| 253 | + add_heading(doc, "6.3 缺陷原因分析与改进建议", level=2) | |
| 254 | + add_paragraph( | |
| 255 | + doc, | |
| 256 | + "结合官网项目特点,常见缺陷原因包括:多语言页面数量多导致漏改、复制粘贴造成链接不一致、" | |
| 257 | + "浏览器差异引发的样式兼容问题等。建议通过以下措施改进:\n" | |
| 258 | + "(1)建立统一的页脚与公共组件管理方式,减少手工重复修改;\n" | |
| 259 | + "(2)引入链接清单与自动化检查脚本,定期扫描死链/错链;\n" | |
| 260 | + "(3)在发布前执行跨浏览器抽测,并建立固定测试用例集用于回归;\n" | |
| 261 | + "(4)对关键页面建立检查表,确保上线前逐项核对。", | |
| 262 | + ) | |
| 263 | + | |
| 264 | + # 7 风险与遗留问题 | |
| 265 | + add_heading(doc, "7 风险与遗留问题", level=1) | |
| 266 | + add_paragraph( | |
| 267 | + doc, | |
| 268 | + "本节用于记录上线前仍需关注的风险点与遗留事项(如有)。" | |
| 269 | + "例如:正式域名 HTTPS 证书上线切换、外网访问带宽波动、搜索引擎收录策略、" | |
| 270 | + "多语言内容持续更新机制等。建议形成遗留事项清单并指定责任人跟踪闭环。", | |
| 271 | + ) | |
| 272 | + | |
| 273 | + # 8 测试结论与上线建议 | |
| 274 | + add_heading(doc, "8 测试结论与上线建议", level=1) | |
| 275 | + add_heading(doc, "8.1 测试结论", level=2) | |
| 276 | + add_paragraph( | |
| 277 | + doc, | |
| 278 | + "综合功能测试、链接检查、兼容性测试与性能抽测结果,钻井液品牌网站整体满足需求说明书对主要功能与展示效果的要求," | |
| 279 | + "未发现阻断上线的致命缺陷(以实际缺陷统计为准)。建议在完成必要的上线前复核(域名、证书、缓存策略、监控告警)后进入上线流程。", | |
| 280 | + ) | |
| 281 | + | |
| 282 | + add_heading(doc, "8.2 上线建议与检查清单(建议)", level=2) | |
| 283 | + add_bullets( | |
| 284 | + doc, | |
| 285 | + [ | |
| 286 | + "上线前进行一次全站链接抽查(重点:页脚与导航、产品/体系/技术详情跳转)", | |
| 287 | + "确认正式环境的 HTTPS 证书、域名解析、80/443 端口策略与重定向规则", | |
| 288 | + "确认静态资源缓存策略与压缩策略生效(gzip/brotli、cache-control)", | |
| 289 | + "接入公司统一监控与告警平台,配置关键 URL 健康检查", | |
| 290 | + "归档交付物:需求、设计、测试大纲、测试报告、源代码与部署说明等", | |
| 291 | + ], | |
| 292 | + ) | |
| 293 | + | |
| 294 | + # 9 附录 | |
| 295 | + add_heading(doc, "9 附录", level=1) | |
| 296 | + add_heading(doc, "9.1 测试用例执行记录(建议附表)", level=2) | |
| 297 | + add_paragraph( | |
| 298 | + doc, | |
| 299 | + "建议将详细测试用例执行记录(用例编号、步骤、预期、实际、结果、截图)以附件形式保存," | |
| 300 | + "并在验收归档时随测试报告一并存档。", | |
| 301 | + ) | |
| 302 | + | |
| 303 | + add_heading(doc, "9.2 截图与关键页面证据(建议)", level=2) | |
| 304 | + add_paragraph( | |
| 305 | + doc, | |
| 306 | + "建议对首页、产品/体系/技术/生产制造等关键页面在四种语言版本下截取关键截图," | |
| 307 | + "作为展示效果与多语言一致性的证据材料,便于验收会现场展示和后续追溯。", | |
| 308 | + ) | |
| 309 | + | |
| 310 | + os.makedirs("docs", exist_ok=True) | |
| 311 | + output_path = os.path.join("docs", "钻井液品牌网站-测试报告.docx") | |
| 312 | + doc.save(output_path) | |
| 313 | + print(f"Test report generated at: {output_path}") | |
| 314 | + | |
| 315 | + | |
| 316 | +if __name__ == "__main__": | |
| 317 | + main() | |
| 318 | + | ... | ... |
node_modules/.DS_Store
0 → 100644
No preview for this file type
之前的文档/CCDC网站.docx
0 → 100644
No preview for this file type
之前的文档/原代码详细设计.docx
0 → 100644
No preview for this file type
之前的文档/数据库设计结构文档.docx
0 → 100644
No preview for this file type
之前的文档/系统部署手册.docx
0 → 100644
No preview for this file type