From 5e2493fdf47a939e2fe5b17eeff2eee328369f42 Mon Sep 17 00:00:00 2001 From: dqb-dev Date: Fri, 2 Oct 2026 01:57:08 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E4=BB=93=E5=BA=93=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E6=96=87=E6=A1=A3=20README(=E5=8A=9F=E8=83=BD=E6=A6=82?= =?UTF-8?q?=E8=A7=88/=E6=8A=80=E6=9C=AF=E6=A0=88/=E4=BB=93=E5=BA=93?= =?UTF-8?q?=E7=BB=93=E6=9E=84/=E6=9E=84=E5=BB=BA=E5=91=BD=E4=BB=A4/?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8F=B7=E4=B8=8E=E5=8F=91=E7=89=88=E6=B5=81?= =?UTF-8?q?=E7=A8=8B/=E5=B7=A5=E5=85=B7=E8=84=9A=E6=9C=AC=E7=B4=A2?= =?UTF-8?q?=E5=BC=95/=E7=89=88=E6=9C=AC=E6=8E=A7=E5=88=B6=E4=B8=8E?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B/=E5=BC=80=E6=BA=90=E8=87=B4=E8=B0=A2,?= =?UTF-8?q?=E4=B8=8E=E4=BB=A3=E7=A0=81=E7=B4=A2=E5=BC=95.md=E4=BA=92?= =?UTF-8?q?=E8=A1=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c1f01f0 --- /dev/null +++ b/README.md @@ -0,0 +1,90 @@ +# 成套报价软件 + +电气成套设备报价桌面软件:报价三表(图号/箱号/元件)+ CAD/PDF 图纸扒图 + 元件库选型 + 公式计算 + 甲方报表,单机 SQLite 存储,可选 AI 助手与云端会员服务。 + +> **改代码前必读**:[代码索引.md](代码索引.md)(所有功能的文件/方法级定位 + 修改铁律) +> **组件属性手册**:`.agents\skills\sd-enhanced-components\SKILL.md`(WinForms 控件白名单、设计器规则、版本号铁律、git 推送排查手册) + +## 功能概览 + +- **项目管理**:新建/修改/删除/复制项目,zip 项目包导入导出,最近项目自动恢复 +- **报价三表**:图号/箱号/元件三级联动,虚拟模式万行秒开,编辑实时落库;公式自动计算(成本价/报出价/利润/毛利率,公式可自定义);批量粘贴/删除/撤销、费用模板行 +- **CAD 扒图**:内嵌网页 CAD 查看器(mlightcad)打开 DWG/DXF;框选扒图号/箱号/元件,表格点行定位图上蒙版,F1/F2/F3 元件合并 +- **PDF 扒图**:pdfium 渲染 + 框选 OCR(百度/智谱 GLM/千帆/UApiPro/Umi-OCR 本地五引擎),自动纠正文本方向,入库/合并/定位同 CAD +- **元件库与选型**:厂家/系列/价格网页选型,收藏跳转,方案库独立库文件,用户库/柜体库管理与 CSV 导入导出 +- **计算与报表**:GCS 母排计算与铜排推荐、批量调系数、元件排序、甲方报表 Excel 导出 +- **其它**:停靠布局保存恢复、数据备份恢复、登录门禁、可选 AI 助手(ZCode 引擎) + +## 技术栈 + +| 项 | 说明 | +|---|---| +| 框架 | WinForms,.NET Framework 4.8,x86(SharpDevelop 5.x 工具链) | +| 数据库 | SQLite(WAL + Pooling + BusyTimeout=5000),连接串统一见 `成套报价软件\数据库连接.cs` | +| 内嵌网页 | WebView2(元件库/CAD 查看器/AI 助手面板) | +| PDF/OCR | pdfium 渲染 + 多引擎 OCR(`扒图\` 下为唯一源码,pdfbt 链接共享) | +| Excel | NPOI(甲方报表/导入导出) | +| UI 组件 | Smart.CustomComponents(自研)、WeifenLuo Docking、AdvancedDataGridView | + +## 仓库结构 + +``` +成套报价软件\ 主程序源码(MainForm 拆 14 个 partial;xiangmu/shezhi/ku 子模块窗体) + └ 扒图\ CAD/PDF 扒图窗口 + OCR/PDF 基础设施(唯一权威源,pdfbt 链接共享) +cadbt\ CAD 扒图独立程序(含 CAD-Viewer 网页引擎) +pdfbt\ PDF 扒图独立程序(OCR 等基础设施链接主项目扒图\ 源码) +ai助手\ ZCode 引擎发行包 + 启停脚本(发行包不进 git) +会员服务器\ 肥牛 fnnas 会员服务端 v1.5.1(fpk 工程) +tools\ 构建/打包/维护脚本(见下表) +release\ 组装产物(仅 setup.iss 进 git) +ghj\ yjktool\ 历史试验小工具 +``` + +**数据目录**(运行时,均不进 git):`sjk\bjb\项目<编号>.db` 每项目一库;`sjk\fak.db` 公式库;`sjk\方案库\*.db` 一方案一库;`shezhi\` 用户配置;`xiangmu\` 报表模板。 + +## 构建与验证 + +```powershell +# 主程序(工作目录必须是 成套报价软件\ 子目录!rsp 相对路径基于它) +cd 成套报价软件 +& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe" "@..\tools\verify_build.rsp" /warn:1 + +# pdfbt 独立程序(链接共享主项目扒图\ 源码,改 OCR 相关先确认两项目都编译) +& "C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" pdfbt\pdfbt.csproj /t:Build /p:Configuration=Debug +``` + +注意:编译前杀掉运行中的主程序(exe 被锁报 CS0016);rsp 默认 `/warn:0` 压警告,排查时加 `/warn:1`。 + +## 版本号与发版流程 + +版本号唯一事实源 = `成套报价软件\Properties\AssemblyInfo.cs` 的 `AssemblyVersion`(固定三段式 `主.次.修订.0`,禁用 `1.0.*` 自动号);关于软件窗口运行时自动读它显示;安装包文件名带版本号。 + +```powershell +# 每次发版必须先递增版本号(规则详见技能"版本号铁律") +powershell -File tools\递增版本号.ps1 # 修订号+1;大版本: tools\递增版本号.ps1 1.1.0 + +# 发版链(顺序固定) +递增版本号 → 编译 → python tools\make_package.py → ISCC release\成套报价软件\setup.iss +→ python tools\make_update_package.py → git add/commit/push → Gitea Release(tag=v版本号,附件=安装包+更新包) +``` + +## 常用工具脚本(tools\) + +| 脚本 | 用途 | +|---|---| +| `递增版本号.ps1` | 版本号一键递增,同步 AssemblyInfo + setup.iss | +| `make_package.py` | 组装发布目录(exe+DLL+数据目录+cadbt+pdfbt+AI 助手) | +| `make_update_package.py` | 生成覆盖式更新包(exe+说明.txt+zip) | +| `扒图同步检查.ps1` | Cad/Pdf Form3.cs 双胞胎漂移护栏(超基线报警) | +| `perf_load.py` | 性能加载测试 | + +## 版本控制与远程 + +- 远程:`http://192.168.9.43:3000/0999we/ctbjrj`(Gitea,remote URL 内嵌访问令牌自动认证) +- 节奏:每轮改动 `git add -A → commit(中文消息)→ push`;Release 附件只在发版时上传一次 +- 故障排查(认证失败/rebase 整合/文件占用/gitignore 陷阱等 7 类场景):见技能"git 推送流程与故障排查" +- 发版历史:Gitea Releases(含安装包与更新包附件) + +## 开源组件致谢 + +软件内嵌的开源组件(WeifenLuo Docking、ADGV、NPOI、DotNetZip、SharpZipLib、ReoGrid、System.Data.SQLite、pdfium、WebView2、Node.js、ZCode、mlightcad CAD-Viewer、Umi-OCR、Lucide)的版权与许可声明见软件"关于→开源致谢"页及安装目录 `licenses\`。