Files
ctbjrj/README.md
T

91 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 成套报价软件
电气成套设备报价桌面软件:报价三表(图号/箱号/元件)+ 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 基础设施(唯一权威源)
cadbt\ CAD 网页引擎运行时(node.exe + CAD-Viewer;2026-10-01 独立 cadbt.exe 退役)
ai助手\ ZCode 引擎发行包 + 启停脚本(发行包不进 git)
会员服务器\ 肥牛 fnnas 会员服务端 v1.5.1(fpk 工程)
tools\ 构建/打包/维护脚本(见下表)
release\ 组装产物(仅 setup.iss 进 git)
```
(已退役:独立 cadbt.exe/pdfbt.exe 扒图程序、ghj/yjktool 试验小工具、cadcj 旧 AutoCAD 插件——扒图功能全部由主程序内嵌窗口承载。)
**数据目录**(运行时,均不进 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\`。