chore: 系统更名 华门窗→定兴门窗(全部用户可见名称)
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
|
|
||||||
|
- [2026-09-26 08:30] CHORE: v2.35 系统更名"华门窗"→"定兴门窗"。替换全部用户可见名称: 侧边栏 logo(折叠态 定)/面包屑/登录页标题/分享页 logo 与页脚/页面 title(index.html)/FastAPI title(/docs Swagger)/Dockerfile 注释/各包 docstring; 代码标识符(包名 huamenchuang/数据表/JWT iss)不变; 全仓库 0 处残留, vue-tsc 0 错+构建通过, 无头浏览器验证 logo/面包屑/页面标题生效 (Files: frontend/src/views/LayoutView.vue, frontend/src/views/LoginView.vue, frontend/src/views/ShareView.vue, frontend/index.html, src/huamenchuang/main.py, src/huamenchuang/*/…)__
|
||||||
|
|
||||||
- [2026-09-26 08:00] TEST+FIX: v2.34 第二轮深度审计——越权/引用完整性/公开面/持久化 16/16 PASS。新增 scripts/audit_deep.py(直插双公司数据验证 company_id 隔离/跨公司按 ID 直访/登记收款越权/公开接口范围/重启后数据存活)。复查修复 4 处真实缺陷: ①删除有下游单据的客户/合同无校验(会产生孤儿合同/订单, 收款统计 join 缺口)→ 引用完整性拒绝(客户: 合同/量尺/跟进; 合同: 订单/有效收款) ②Service 层误用 self.db(实际会话在 self.repo.db)→AttributeError 500 ③删除路由未捕获 ValueError(保护性失败变 500) ④已完工订单可删(生产留档要求禁删); 公开分享页无头验证渲染正确(标题/明细/合计, 0 JS 异常); 冒烟断言防残留加固(跟进列表 >=1); 深度审计+冒烟 52+16 项全 PASS (Files: src/huamenchuang/services/customer_service.py, src/huamenchuang/services/contract_service.py, src/huamenchuang/services/order_service.py, src/huamenchuang/api/customers.py, src/huamenchuang/api/contracts.py, src/huamenchuang/api/orders.py, src/huamenchuang/scripts/audit_deep.py, src/huamenchuang/scripts/smoke_all.py)
|
- [2026-09-26 08:00] TEST+FIX: v2.34 第二轮深度审计——越权/引用完整性/公开面/持久化 16/16 PASS。新增 scripts/audit_deep.py(直插双公司数据验证 company_id 隔离/跨公司按 ID 直访/登记收款越权/公开接口范围/重启后数据存活)。复查修复 4 处真实缺陷: ①删除有下游单据的客户/合同无校验(会产生孤儿合同/订单, 收款统计 join 缺口)→ 引用完整性拒绝(客户: 合同/量尺/跟进; 合同: 订单/有效收款) ②Service 层误用 self.db(实际会话在 self.repo.db)→AttributeError 500 ③删除路由未捕获 ValueError(保护性失败变 500) ④已完工订单可删(生产留档要求禁删); 公开分享页无头验证渲染正确(标题/明细/合计, 0 JS 异常); 冒烟断言防残留加固(跟进列表 >=1); 深度审计+冒烟 52+16 项全 PASS (Files: src/huamenchuang/services/customer_service.py, src/huamenchuang/services/contract_service.py, src/huamenchuang/services/order_service.py, src/huamenchuang/api/customers.py, src/huamenchuang/api/contracts.py, src/huamenchuang/api/orders.py, src/huamenchuang/scripts/audit_deep.py, src/huamenchuang/scripts/smoke_all.py)
|
||||||
|
|
||||||
- [2026-09-25 23:30] TEST+FIX: v2.33 26 项功能落地性复查——综合冒烟 52/52 PASS + 23 页巡检 0 异常。新增 scripts/smoke_all.py(26 项逐项接口冒烟: 每项验证创建/查询/联动/校验拦截全链路)+frontend/scripts/verify-pages.mjs(23 页无头巡检收集 JS 异常)。复查发现并修复 6 处: ①order_format 校验缺 barcode 类型(条码块模板无法保存) ②workshop/scan 缺 selectinload(MissingGreenlet 500) ③pickout 仅匹配单库存项(改跨批次累计扣减) ④照片模式洞口位置未传 AI(rect 相对坐标→英文方位描述进提示词, 引导装窗位置; 附 mime 嗅探修正 jpeg/png) ⑤打印条码 svg ref 脱离 DOM 残留(isConnected 过滤) ⑥AI 推荐只打分前 80 套(改全量 254 防分类偏倚); 冒烟残留数据已清理 (Files: src/huamenchuang/api/ai_render.py, src/huamenchuang/services/ai_prompt.py, src/huamenchuang/api/order_format.py, src/huamenchuang/api/workshop.py, src/huamenchuang/api/warehouse.py, src/huamenchuang/api/recommend.py, frontend/src/views/AIRenderView.vue, frontend/src/views/PrinterView.vue, src/huamenchuang/scripts/smoke_all.py, frontend/scripts/verify-pages.mjs)
|
- [2026-09-25 23:30] TEST+FIX: v2.33 26 项功能落地性复查——综合冒烟 52/52 PASS + 23 页巡检 0 异常。新增 scripts/smoke_all.py(26 项逐项接口冒烟: 每项验证创建/查询/联动/校验拦截全链路)+frontend/scripts/verify-pages.mjs(23 页无头巡检收集 JS 异常)。复查发现并修复 6 处: ①order_format 校验缺 barcode 类型(条码块模板无法保存) ②workshop/scan 缺 selectinload(MissingGreenlet 500) ③pickout 仅匹配单库存项(改跨批次累计扣减) ④照片模式洞口位置未传 AI(rect 相对坐标→英文方位描述进提示词, 引导装窗位置; 附 mime 嗅探修正 jpeg/png) ⑤打印条码 svg ref 脱离 DOM 残留(isConnected 过滤) ⑥AI 推荐只打分前 80 套(改全量 254 防分类偏倚); 冒烟残留数据已清理 (Files: src/huamenchuang/api/ai_render.py, src/huamenchuang/services/ai_prompt.py, src/huamenchuang/api/order_format.py, src/huamenchuang/api/workshop.py, src/huamenchuang/api/warehouse.py, src/huamenchuang/api/recommend.py, frontend/src/views/AIRenderView.vue, frontend/src/views/PrinterView.vue, src/huamenchuang/scripts/smoke_all.py, frontend/scripts/verify-pages.mjs)
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
# syntax=docker/dockerfile:1
|
# syntax=docker/dockerfile:1
|
||||||
# 华门窗云平台镜像(多阶段:前端构建 → Python 运行时)
|
# 定兴门窗云平台镜像(多阶段:前端构建 → Python 运行时)
|
||||||
# 云端构建: git 仓库直接构建即可; 本地: docker build -t menchuang .
|
# 云端构建: git 仓库直接构建即可; 本地: docker build -t menchuang .
|
||||||
# 注: npm/PyPI 默认走国内镜像源(npmmirror/清华), 海外构建可用 --build-arg 覆盖
|
# 注: npm/PyPI 默认走国内镜像源(npmmirror/清华), 海外构建可用 --build-arg 覆盖
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>华门窗云平台</title>
|
<title>定兴门窗云平台</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-container class="layout">
|
<el-container class="layout">
|
||||||
<el-aside :width="collapsed ? '64px' : '200px'" class="aside">
|
<el-aside :width="collapsed ? '64px' : '200px'" class="aside">
|
||||||
<div class="logo">{{ collapsed ? '门' : '华门窗' }}</div>
|
<div class="logo">{{ collapsed ? '定' : '定兴门窗' }}</div>
|
||||||
<el-scrollbar class="menu-scroll">
|
<el-scrollbar class="menu-scroll">
|
||||||
<el-menu :default-active="route.path" router :collapse="collapsed" background-color="#2b3a4d"
|
<el-menu :default-active="route.path" router :collapse="collapsed" background-color="#2b3a4d"
|
||||||
text-color="#bfc9d4" active-text-color="#ffffff" :collapse-transition="false">
|
text-color="#bfc9d4" active-text-color="#ffffff" :collapse-transition="false">
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
<div class="header-left">
|
<div class="header-left">
|
||||||
<el-icon class="fold-btn" @click="collapsed = !collapsed"><Expand v-if="collapsed" /><Fold v-else /></el-icon>
|
<el-icon class="fold-btn" @click="collapsed = !collapsed"><Expand v-if="collapsed" /><Fold v-else /></el-icon>
|
||||||
<el-breadcrumb separator="/">
|
<el-breadcrumb separator="/">
|
||||||
<el-breadcrumb-item>华门窗</el-breadcrumb-item>
|
<el-breadcrumb-item>定兴门窗</el-breadcrumb-item>
|
||||||
<el-breadcrumb-item>{{ route.meta.title }}</el-breadcrumb-item>
|
<el-breadcrumb-item>{{ route.meta.title }}</el-breadcrumb-item>
|
||||||
</el-breadcrumb>
|
</el-breadcrumb>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="login-page">
|
<div class="login-page">
|
||||||
<el-card class="login-card">
|
<el-card class="login-card">
|
||||||
<h2>华门窗云平台</h2>
|
<h2>定兴门窗云平台</h2>
|
||||||
<p class="sub">画图 · 报价 · 订单 · 生产</p>
|
<p class="sub">画图 · 报价 · 订单 · 生产</p>
|
||||||
<el-tabs v-model="tab" stretch>
|
<el-tabs v-model="tab" stretch>
|
||||||
<el-tab-pane label="登录" name="login">
|
<el-tab-pane label="登录" name="login">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="share-page">
|
<div class="share-page">
|
||||||
<header class="share-head">
|
<header class="share-head">
|
||||||
<span class="logo">华门窗</span>
|
<span class="logo">定兴门窗</span>
|
||||||
<span class="title">{{ data?.title || '分享详情' }}</span>
|
<span class="title">{{ data?.title || '分享详情' }}</span>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<footer class="share-foot">本页面由华门窗云平台生成 · {{ data?.created_at?.slice(0, 10) }}</footer>
|
<footer class="share-foot">本页面由定兴门窗云平台生成 · {{ data?.created_at?.slice(0, 10) }}</footer>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
@@ -1 +1 @@
|
|||||||
"""华门窗包。"""
|
"""定兴门窗包。"""
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
"""华门窗包。"""
|
"""定兴门窗包。"""
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ from huamenchuang.core.database import init_db
|
|||||||
from huamenchuang.core.deps import ModuleLockedError, NotAuthedError
|
from huamenchuang.core.deps import ModuleLockedError, NotAuthedError
|
||||||
from huamenchuang.core.response import fail, ok, paywall
|
from huamenchuang.core.response import fail, ok, paywall
|
||||||
|
|
||||||
app = FastAPI(title="华门窗云平台", version="0.1.0")
|
app = FastAPI(title="定兴门窗云平台", version="0.1.0")
|
||||||
|
|
||||||
|
|
||||||
@app.on_event("startup")
|
@app.on_event("startup")
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
"""华门窗包。"""
|
"""定兴门窗包。"""
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
"""华门窗包。"""
|
"""定兴门窗包。"""
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
"""华门窗包。"""
|
"""定兴门窗包。"""
|
||||||
|
|||||||
Reference in New Issue
Block a user