From 2a4ac0a798866ff61559acfcf2ce0b4b6db5a948 Mon Sep 17 00:00:00 2001 From: wikiboss Date: Thu, 8 Oct 2026 17:50:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(design):=20=E5=BD=BB=E5=BA=95=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E5=85=A8=E7=AB=99AI=E5=91=B3=EF=BC=9A=E6=8E=92?= =?UTF-8?q?=E7=89=88=E5=85=A8=E9=9D=A2=E5=8D=87=E7=BA=A7=E4=B8=BA=E5=A4=A7?= =?UTF-8?q?=E5=8E=82=E5=B7=A6=E5=AF=B9=E9=BD=90=E6=9E=B6=E6=9E=84=EF=BC=8C?= =?UTF-8?q?=E6=96=87=E6=A1=88=E5=85=A8=E9=87=8F=E6=9B=BF=E6=8D=A2=E4=B8=BA?= =?UTF-8?q?=E5=AE=9E=E5=8A=A1=E5=B7=A5=E7=A8=8B=E8=AF=AD=E8=A8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/web/official_home/index.html | 138 +++++++++--------- .../view/web/official_home/single.html | 28 ++-- .../view/web/official_home/single_e.html | 24 +-- .../web/official_product/product_page.html | 14 +- .../web/official_product/service_page.html | 30 ++-- .../assets/addons/official/css/modern_nhc.css | 98 ++++++++----- tests/run_tests.py | 16 +- tests/test_no_ai_flavor.py | 122 ++++++++++++++++ 8 files changed, 318 insertions(+), 152 deletions(-) create mode 100644 tests/test_no_ai_flavor.py diff --git a/addons/official/view/web/official_home/index.html b/addons/official/view/web/official_home/index.html index 99c5162..dbcf13a 100644 --- a/addons/official/view/web/official_home/index.html +++ b/addons/official/view/web/official_home/index.html @@ -8,68 +8,68 @@ - + -

四大成熟产品矩阵 · 即开即用的商业驱动力

+

成熟商业产品体系 · 支撑全渠道高效运营

标准化模块架构,兼具高灵活性与成熟稳定性,全面支持公有云 SaaS 订阅与专有私有化买断部署。

@@ -454,7 +454,7 @@ 标杆案例 PROVEN OUTCOMES -

精选实践成果 · 严谨数据验证

+

标杆项目成果 · 经受高并发与复杂业务考验

我们以扎实的工程交付标准,为各行业客户交付经得起业务考验的数字化解决方案。

@@ -614,9 +614,9 @@ 交付体系 STANDARD METHODOLOGY -

五步严谨工程法 · 全生命周期守护

+

标准化软件交付流程 · 严格把控每个交付节点

- 恪守现代中式工匠规矩与敏捷工程标准,每一步都有明确的标准产出与质量验收节点。 + 遵循企业级软件工程规范与敏捷开发标准,从需求调研到持续运维提供全周期质量把控。

@@ -625,45 +625,45 @@
01
-

需求深度研判

+

业务需求调研与方案论证

- 格物致知,派驻资深架构师深入业务一线,全流程梳理业务痛点,产出详尽需求规格蓝图。 + 资深架构师与业务专家深入一线,厘清业务痛点与技术边界,输出详尽的需求规格说明书与技术方案可行性报告。

02
-

架构严谨立骨

+

高可用微服务架构设计

- 经纬分明,制定高可用系统拓扑、高安全数据底座、微服务治理及应对极端峰值的应急预案。 + 系统化规划微服务划分、分布式拓扑、数据库读写分离与缓存策略,制定完备的高并发应对与容灾应急预案。

03
-

敏捷测试驱动

+

测试驱动开发与敏捷编码

- 精工细琢,严格遵循 TDD 模式与 CI/CD 自动化流水线,代码评审严苛,确保无缺陷交付。 + 严格执行测试驱动开发(TDD)规范,落实代码双人评审与 CI/CD 持续集成流水线,杜绝带病代码上线。

04
-

高压安全审计

+

全链路压测与安全渗透测试

- 严审磐石,全路径模拟超负荷并发压力测试,配合权威渗透扫描与合规校验,坚固如磐。 + 模拟真实生产环境的峰值压力测试,执行接口安全渗透扫描与漏洞合规审计,确保系统坚固可靠。

05
-

私有化与维保

+

私有化部署与长期技术运维

- 笃行护航,专业工程师实地或专网部署交付,提供完善运维赋能培训与 7x24 持续演进支持。 + 专业团队提供专有云/内网物理隔离部署,全量交付白盒源码与技术文档,配备专属团队与 SLA 响应支持。

@@ -677,10 +677,10 @@
-

客户信赖之选 · 见证长期价值同行

+

客户真实评价 · 见证系统上线后的业务价值

我们珍视每一次托付,用稳定运行的系统与专业的态度赢得长期战略合作伙伴的由衷认可。

@@ -753,8 +753,8 @@
- 立即携手 -

准备好开启新一代数字化与智能化升级了吗?

+ 商务合作 +

开启您的企业数字化与智能化升级项目

资深系统架构师与业务专家团队随时待命,为您提供深度业务剖析、架构建议与原型演示,24 小时内快速响应对接。

diff --git a/addons/official/view/web/official_home/single.html b/addons/official/view/web/official_home/single.html index cadcdc8..b5fe4e5 100644 --- a/addons/official/view/web/official_home/single.html +++ b/addons/official/view/web/official_home/single.html @@ -12,11 +12,11 @@ 关于我们
- 格物致知 · 自主可控 + 自主可控 · 源码交付
-

十年潜心研磨 · 铸就自主可控数字基石

+

十年技术沉淀 · 打造自主可控的软件系统

- 海纳百川,有容乃大;壁立千仞,无欲则刚。贵阳纳海川科技有限公司立足西南数谷、服务全国,专注于企业级数字化技术中台建设、全场景移动端/小程序生态定制及垂直领域 AI 智能体应用研发。 + 贵阳纳海川科技有限公司立足西南、服务全国,专注于企业级数字化中台定制、全场景移动应用与小程序定制、私有化 AI 智能体应用及成熟商业软件研发。坚持 100% 完整源码交付与严格测试驱动开发,为政企和商业客户交付自主可控的软件资产。

@@ -26,43 +26,43 @@
-

技为本 · 匠于心 · 海纳百川

+

坚持扎实工程落地 · 交付自主可控的高可用软件资产

- 我们摒弃泛泛空谈与概念堆砌,坚守经得起白盒审查的扎实工程准则,以确定性代码交付商业价值。 + 纳海川坚持实事求是的研发态度,以白盒自主可控、严苛质量标准与深厚业务沉淀,为客户交付经得起考验的数字化系统。

- +
-

格物求真 · 拒绝套壳虚浮

+

自主可控研发 · 杜绝低质套壳代码

- 每一行核心逻辑均源自自主工程设计,拒绝低质套壳代码。系统架构遵循清晰的分层规范与白盒自研标准,确保底层代码安全可控、无暗门。 + 核心业务逻辑均遵循清晰分层规范自主编写,不使用无技术支持与源码保障的第三方黑盒套壳。提供完整源代码白盒交付,支持客户进行安全代码审计,自主可控无后顾之忧。

-

包容开放 · 兼容异构生态

+

标准化开放架构 · 无缝对接企业现有系统

- 秉承“海纳百川”的包容架构设计,系统具备标准的 RESTful / RPC 协议插槽,轻松无缝打通企业原有的财务 ERP、仓储 WMS、第三方支付等系统。 + 系统采用模块化与微服务设计,具备标准的 RESTful 与 RPC 接口规范。可轻松与企业既有的金蝶、用友、各类 WMS 仓储及第三方物流、支付系统互通,保护企业既有 IT 投资。

-

慎终如始 · 严苛敏捷交付

+

严格测试驱动开发 · 杜绝系统带病上线

- 全流程贯彻 TDD 测试驱动开发与 CI/CD 自动化持续集成,全链路单元测试与自动化回归校验,杜绝带病上线,确保交付即具备工业级高可用性。 + 研发全流程贯彻 TDD 测试驱动与持续集成自动化测试,交付成果包含全套自动化单元测试用例与接口回归集合,严把系统质量与性能关口,确保生产环境稳定运行。

diff --git a/addons/official/view/web/official_home/single_e.html b/addons/official/view/web/official_home/single_e.html index 3a9ce3d..e258663 100644 --- a/addons/official/view/web/official_home/single_e.html +++ b/addons/official/view/web/official_home/single_e.html @@ -7,48 +7,48 @@
- 格物致知 · 自主可控 + 自主可控 · 源码交付

- 十年潜心研磨 · 铸就数字基石 + 十年技术沉淀 · 打造自主可控软件系统

- 海纳百川,有容乃大。贵阳纳海川科技有限公司立足西南数谷、服务全国,专注于企业级数字化技术中台建设、全场景移动端/小程序生态定制及垂直领域 AI 智能体应用研发。 + 贵阳纳海川科技有限公司立足西南、服务全国,专注于企业级软件定制开发、全场景移动端与小程序定制、私有化 AI 智能体及商业软件研发。坚持 100% 源码交付与测试驱动开发。

- +
- 工程哲学 + 研发准则

- 技为本 · 匠于心 · 海纳百川 + 扎实工程落地 · 交付自主可控软件

- 格物求真 · 拒绝套壳虚浮 + 自主可控研发 · 杜绝低质套壳代码

- 每一行核心逻辑均源自自主工程设计,代码白盒可控,无暗门、无冗余拼凑。 + 每一行核心逻辑均自主编写,提供完整源代码白盒交付,支持客户进行安全代码审计。

- 包容开放 · 兼容异构生态 + 标准化开放架构 · 无缝对接企业系统

- 具备标准微服务接口插槽,无缝互联企业既有 ERP、WMS 仓储及供应链系统。 + 具备标准 API 接口规范,无缝对接企业既有 ERP、WMS 仓储及第三方平台。

- 慎终如始 · 严苛敏捷交付 + 严格测试驱动开发 · 杜绝系统带病上线

- 全流程贯彻 TDD 测试驱动开发与 CI/CD 自动化集成,杜绝带病交付。 + 全流程贯彻 TDD 测试驱动与持续集成自动化测试,从源头杜绝带病交付。

diff --git a/addons/official/view/web/official_product/product_page.html b/addons/official/view/web/official_product/product_page.html index cb1646f..370265f 100644 --- a/addons/official/view/web/official_product/product_page.html +++ b/addons/official/view/web/official_product/product_page.html @@ -9,13 +9,13 @@ 产品矩阵
- 商业重器 + 成熟产品 · 源码交付
-

积厚流光成重器 · 矩阵赋能拓坦途

+

成熟商业软件产品矩阵 · 助力企业全渠道数字化运营

- 历经千万级真实交易峰值淬炼的标准化工业级成熟商业软件资产,涵盖全场景商城、智能收银、全链路进销存与云原生 SaaS 底座,支持公有云订阅与专有私有化源码买断。 + 历经真实交易峰值考验的标准化工业级商业软件资产,涵盖全场景商城、智能收银、全链路进销存与云原生 SaaS 底座,支持公有云订阅与专有私有化源码交付。

- -

两种灵活合作模式 · 赋能长期稳健发展

+

两种灵活商业授权模式 · 满足不同规模企业需求

根据企业的预算周期、技术团队实力及合规要求,灵活选择公有云敏捷订阅或专有云私有化源码买断。

@@ -426,7 +426,7 @@
商业咨询 -

准备好用成熟工业级产品矩阵驱动业务跃升了吗?

+

选择成熟商业软件体系 · 加速企业数字化转型

纳海川解决方案专家团队随时待命,为您提供深度业务选型评估、专属架构建议与商务方案,24 小时内快速响应对接。

diff --git a/addons/official/view/web/official_product/service_page.html b/addons/official/view/web/official_product/service_page.html index d3ca265..f7cc27d 100644 --- a/addons/official/view/web/official_product/service_page.html +++ b/addons/official/view/web/official_product/service_page.html @@ -9,13 +9,13 @@ 核心服务
- 精工匠造 + 自主研发 · 源码交付
-

经纬立骨铸基石 · 全栈自主赋生产

+

企业级软件定制开发与工程化落地服务

纳海川聚焦企业级中台定制、全端移动生态与垂直智能体工程,坚持全流程测试驱动开发(TDD)与金融级安全标准,提供 100% 完整源码工程交付与专有私有化部署。

-
@@ -326,37 +326,37 @@
01
-

需求深度研判

+

业务需求调研与方案论证

- 格物致知。资深架构师与业务专家深入业务一线,全流程梳理业务痛点,产出详尽需求规格蓝图与可行性评估报告。 + 资深架构师与业务专家深入一线,厘清业务痛点与技术边界,输出详尽需求规格蓝图与可行性评估报告。

02
-

架构严谨立骨

+

高可用微服务架构设计

- 经纬分明。制定高可用系统拓扑、高安全数据模型、微服务治理及应对极端峰值的应急预案,杜绝后期返工。 + 系统化规划微服务拓扑、高安全数据模型、分库分表与缓存策略,制定应对极端业务峰值的应急预案。

03
-

敏捷测试驱动

+

测试驱动开发与敏捷编码

- 精工细琢。严格遵循 TDD 模式与 CI/CD 自动化流水线,代码评审严苛,确保无死锁缺陷,保障高质量源码输出。 + 严格遵循测试驱动开发(TDD)规范与 CI/CD 自动化流水线,落实代码双人评审,保障高稳定性源码输出。

04
-

高压安全审计

+

全链路压测与安全渗透测试

- 严审磐石。全路径模拟超负荷并发压力测试,配合权威渗透扫描与等保合规校验,坚固如铁,滴水不漏。 + 全路径模拟高并发峰值压力测试,配合权威渗透扫描与等保合规校验,保障系统坚固可靠。

05
-

私有化与维保

+

私有化部署与长期技术运维

- 修己守信。专业工程师现场或专网部署交付,提供完善运维赋能培训与 7×24 持续演进支持,全天候守护平稳运行。 + 专业工程师提供专有云/内网物理隔离部署,全量交付白盒源码与技术文档,配备专属运维团队与 SLA 响应支持。

diff --git a/public/assets/addons/official/css/modern_nhc.css b/public/assets/addons/official/css/modern_nhc.css index 59359bf..7c2d4bc 100644 --- a/public/assets/addons/official/css/modern_nhc.css +++ b/public/assets/addons/official/css/modern_nhc.css @@ -378,25 +378,25 @@ img { /* 轮播图幻灯片不同主题背景与中式意境光影 (浅色高雅、通透水墨微晕) */ .nhc-slide-theme-1 { background: - linear-gradient(90deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 255, 255, 0.90) 42%, rgba(255, 255, 255, 0.15) 100%), + linear-gradient(90deg, rgba(255, 255, 255, 0.98) 0%, rgba(255, 255, 255, 0.92) 50%, rgba(255, 255, 255, 0.15) 100%), url('../images/banners/banner_lead.jpg') right center / cover no-repeat; } .nhc-slide-theme-2 { background: - linear-gradient(90deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 255, 255, 0.90) 42%, rgba(255, 255, 255, 0.15) 100%), + linear-gradient(90deg, rgba(255, 255, 255, 0.98) 0%, rgba(255, 255, 255, 0.92) 50%, rgba(255, 255, 255, 0.15) 100%), url('../images/banners/banner_craft.jpg') right center / cover no-repeat; } .nhc-slide-theme-3 { background: - linear-gradient(90deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 255, 255, 0.90) 42%, rgba(255, 255, 255, 0.15) 100%), + linear-gradient(90deg, rgba(255, 255, 255, 0.98) 0%, rgba(255, 255, 255, 0.92) 50%, rgba(255, 255, 255, 0.15) 100%), url('../images/banners/banner_agent.jpg') right center / cover no-repeat; } .nhc-slide-theme-4 { background: - linear-gradient(90deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 255, 255, 0.90) 42%, rgba(255, 255, 255, 0.15) 100%), + linear-gradient(90deg, rgba(255, 255, 255, 0.98) 0%, rgba(255, 255, 255, 0.92) 50%, rgba(255, 255, 255, 0.15) 100%), url('../images/banners/banner_matrix.jpg') right center / cover no-repeat; } @@ -552,9 +552,10 @@ img { } .nhc-hero-content { - text-align: center; - max-width: 960px; - margin: 0 auto; + text-align: left; + max-width: 720px; + margin: 0; + padding: 40px 0 20px; position: relative; z-index: 2; } @@ -562,29 +563,29 @@ img { .nhc-hero-badge { display: inline-flex; align-items: center; - gap: 10px; - background: #FFFFFF; + gap: 8px; + background: rgba(255, 255, 255, 0.95); border: 1px solid var(--border-color); - padding: 6px 16px; + padding: 4px 12px; border-radius: var(--radius-sm); - margin-bottom: 24px; + margin-bottom: 20px; box-shadow: var(--shadow-subtle); } .nhc-hero-badge-text { - font-size: 13px; + font-size: 12px; color: var(--text-secondary); font-weight: 500; } .nhc-hero-title { font-family: var(--font-serif); - font-size: 52px; + font-size: 42px; font-weight: 700; color: var(--text-primary); - line-height: 1.25; - letter-spacing: 2px; - margin-bottom: 24px; + line-height: 1.32; + letter-spacing: -0.5px; + margin-bottom: 20px; } .nhc-hero-title span.highlight { @@ -594,37 +595,63 @@ img { } .nhc-hero-subtitle { - font-size: 18px; + font-size: 15px; color: var(--text-secondary); - line-height: 1.8; - max-width: 780px; - margin: 0 auto 36px; + line-height: 1.75; + max-width: 660px; + margin: 0 0 32px; } .nhc-hero-cta { display: flex; align-items: center; - justify-content: center; + justify-content: flex-start; gap: 16px; - margin-bottom: 64px; + margin-bottom: 40px; } .nhc-hero-metrics { display: grid; grid-template-columns: repeat(4, 1fr); - gap: 24px; - background: #FFFFFF; + gap: 16px; + background: rgba(255, 255, 255, 0.92); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); border: 1px solid var(--border-color); - border-radius: var(--radius-md); - padding: 28px 24px; + border-radius: var(--radius-sm); + padding: 18px 20px; box-shadow: var(--shadow-subtle); + max-width: 680px; + margin: 0; } .nhc-metric-item { - text-align: center; + text-align: left; position: relative; } +.nhc-metric-val { + font-family: var(--font-serif); + font-size: 24px; + font-weight: 700; + color: var(--primary); + line-height: 1.2; +} + +.nhc-metric-val sub { + font-size: 13px; + font-weight: 600; + margin-left: 2px; + bottom: 0; +} + +.nhc-metric-label { + font-size: 11px; + color: var(--text-muted); + margin-top: 4px; + line-height: 1.4; +} + .nhc-metric-item:not(:last-child)::after { content: ""; position: absolute; @@ -1534,11 +1561,11 @@ img { position: relative; padding: 130px 0 70px; background: - radial-gradient(circle at 50% 15%, rgba(37, 99, 235, 0.07) 0%, transparent 55%), - radial-gradient(circle at 85% 60%, rgba(6, 182, 212, 0.05) 0%, transparent 45%), + radial-gradient(circle at 15% 35%, rgba(37, 99, 235, 0.05) 0%, transparent 50%), + radial-gradient(circle at 85% 60%, rgba(6, 182, 212, 0.04) 0%, transparent 45%), linear-gradient(180deg, #FFFFFF 0%, #F8FAFC 100%); border-bottom: 1px solid var(--border-color); - text-align: center; + text-align: left; } .nhc-breadcrumb { @@ -1561,19 +1588,22 @@ img { .nhc-page-title { font-family: var(--font-serif); - font-size: 44px; + font-size: 38px; font-weight: 700; color: var(--text-primary); - letter-spacing: 1.5px; + letter-spacing: -0.5px; + line-height: 1.35; margin-bottom: 18px; + text-align: left; } .nhc-page-desc { max-width: 760px; - margin: 0 auto 30px; - font-size: 17px; + margin: 0 0 28px; + font-size: 16px; color: var(--text-secondary); line-height: 1.8; + text-align: left; } /* 服务三大领域深度卡片 (交替错落或大横幅) */ diff --git a/tests/run_tests.py b/tests/run_tests.py index b9b7904..c23eda9 100644 --- a/tests/run_tests.py +++ b/tests/run_tests.py @@ -7,8 +7,11 @@ import os import re import sys +import unittest BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +if BASE_DIR not in sys.path: + sys.path.insert(0, BASE_DIR) class TestResult: def __init__(self, name): @@ -213,14 +216,25 @@ def test_contact_page(): return res.summary() +def test_no_ai_flavor_suite(): + res = TestResult("去AI味专项测试 (NoAiFlavor)") + from tests.test_no_ai_flavor import TestNoAiFlavor + suite = unittest.TestLoader().loadTestsFromTestCase(TestNoAiFlavor) + runner = unittest.TextTestRunner(verbosity=0) + test_result = runner.run(suite) + res.assert_true(test_result.wasSuccessful(), f"去AI味全量断言通过 (共 {test_result.testsRun} 项)") + return res.summary() + def main(): + import unittest results = [ test_cases_page(), test_services_page(), test_products_page(), test_nav_megamenu(), test_about_page(), - test_contact_page() + test_contact_page(), + test_no_ai_flavor_suite() ] sys.exit(0 if all(results) else 1) diff --git a/tests/test_no_ai_flavor.py b/tests/test_no_ai_flavor.py new file mode 100644 index 0000000..070b4ad --- /dev/null +++ b/tests/test_no_ai_flavor.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +""" +去 AI 味(文案与排版)专项自动化测试用例 +严格遵循 TDD 模式:验证全站文本杜绝 AI 假大空对仗口号,排版具备大厂专业左对齐与严谨网格。 +""" +import os +import re +import unittest + +ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + +class TestNoAiFlavor(unittest.TestCase): + + def setUp(self): + self.index_html_path = os.path.join(ROOT_DIR, 'addons/official/view/web/official_home/index.html') + self.service_page_path = os.path.join(ROOT_DIR, 'addons/official/view/web/official_product/service_page.html') + self.product_page_path = os.path.join(ROOT_DIR, 'addons/official/view/web/official_product/product_page.html') + self.cases_page_path = os.path.join(ROOT_DIR, 'addons/official/view/web/official_case_show/list.html') + self.about_page_path = os.path.join(ROOT_DIR, 'addons/official/view/web/official_home/single.html') + self.about_mobile_path = os.path.join(ROOT_DIR, 'addons/official/view/web/official_home/single_e.html') + self.contact_page_path = os.path.join(ROOT_DIR, 'addons/official/view/web/official_online_message/list.html') + self.css_path = os.path.join(ROOT_DIR, 'public/assets/addons/official/css/modern_nhc.css') + + with open(self.index_html_path, 'r', encoding='utf-8') as f: + self.index_html = f.read() + with open(self.service_page_path, 'r', encoding='utf-8') as f: + self.service_page = f.read() + with open(self.product_page_path, 'r', encoding='utf-8') as f: + self.product_page = f.read() + with open(self.cases_page_path, 'r', encoding='utf-8') as f: + self.cases_page = f.read() + with open(self.about_page_path, 'r', encoding='utf-8') as f: + self.about_page = f.read() + with open(self.about_mobile_path, 'r', encoding='utf-8') as f: + self.about_mobile = f.read() + with open(self.contact_page_path, 'r', encoding='utf-8') as f: + self.contact_page = f.read() + with open(self.css_path, 'r', encoding='utf-8') as f: + self.css = f.read() + + def test_forbidden_ai_buzzwords_in_index(self): + """首页必须彻底杜绝 AI 假大空对仗套话""" + forbidden_words = [ + '铸造数字生产力', + '格物致知', + '经纬分明', + '架构严谨立骨', + '严审磐石', + '笃行护航', + '成巨流', + '海纳百川以成巨流', + '聚智能以启新元' + ] + for word in forbidden_words: + self.assertNotIn(word, self.index_html, f"首页 index.html 仍包含 AI 味词汇: '{word}'") + + def test_forbidden_ai_buzzwords_in_services(self): + """服务页必须杜绝 AI 假大空标题与步骤套话""" + forbidden_words = [ + '经纬立骨铸基石', + '全栈自主赋生产', + '格物致知', + '架构严谨立骨', + '严审磐石', + '修己守信', + ] + for word in forbidden_words: + self.assertNotIn(word, self.service_page, f"服务页 service_page.html 仍包含 AI 味词汇: '{word}'") + + def test_forbidden_ai_buzzwords_in_products(self): + """产品页必须杜绝 AI 假大空口号""" + forbidden_words = [ + '积厚流光成重器', + '矩阵赋能拓坦途', + ] + for word in forbidden_words: + self.assertNotIn(word, self.product_page, f"产品页 product_page.html 仍包含 AI 味词汇: '{word}'") + + def test_forbidden_ai_buzzwords_in_about(self): + """关于我们(PC与移动端)必须杜绝空洞口号""" + forbidden_words = [ + '海纳百川,有容乃大;壁立千仞,无欲则刚', + '格物致知 · 自主可控', + '格物求真', + '慎终如始', + ] + for word in forbidden_words: + self.assertNotIn(word, self.about_page, f"关于我们 PC 页仍包含 AI 味词汇: '{word}'") + self.assertNotIn(word, self.about_mobile, f"关于我们移动端页仍包含 AI 味词汇: '{word}'") + + def test_enterprise_engineering_keywords(self): + """全站必须具备真实大厂软件工程与业务术语""" + required_in_index = ['源码交付', '微服务', '私有化部署', '测试驱动'] + for kw in required_in_index: + self.assertIn(kw, self.index_html, f"首页缺少硬核工程关键词: '{kw}'") + + required_in_services = ['源码', '微服务', 'API', 'SLA', '私有化'] + for kw in required_in_services: + self.assertIn(kw, self.service_page, f"服务页缺少硬核工程关键词: '{kw}'") + + def test_layout_enterprise_left_aligned_hero(self): + """首屏与二级页排版验证:左对齐大厂排版与严谨留白""" + self.assertIn('text-align: left;', self.css, "CSS 中应包含 text-align: left") + # 确保 hero-content 是左对齐 + hero_content_match = re.search(r'(?:\r?\n)\.nhc-hero-content\s*\{([^}]+)\}', self.css) + self.assertTrue(hero_content_match, "必须包含 .nhc-hero-content 样式块") + self.assertIn('text-align: left', hero_content_match.group(1)) + + # 确保二级页面 Hero 支持左对齐大厂风 + page_hero_match = re.search(r'\.nhc-page-hero\s*\{([^}]+)\}', self.css) + self.assertTrue(page_hero_match, "必须包含 .nhc-page-hero 样式块") + self.assertIn('text-align: left', page_hero_match.group(1), "二级页 Hero 推荐大厂左对齐排版") + + def test_typography_and_color_tokens(self): + """规范中的设计令牌:纯净背景、科技蓝主色、严禁霓虹炫目""" + self.assertIn('--primary: #2563EB;', self.css) + self.assertIn('--bg-primary: #FFFFFF;', self.css) + self.assertIn('--bg-secondary: #F8FAFC;', self.css) + self.assertIn('--text-primary: #0F172A;', self.css) + +if __name__ == '__main__': + unittest.main()