<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[工作区和全局的Rules]]></title><description><![CDATA[<h1>Global Rules</h1>
<h2>语言与表达</h2>
<ul>
<li>默认使用中文交流</li>
<li>输出用 Markdown；使用短段落/分点列表；避免空话与过度客套</li>
<li>不确定时明确说明，并优先通过读取代码/配置来验证，而不是猜</li>
</ul>
<h2>工作方式（结对编程）</h2>
<ul>
<li>作为资深同事式的"动手型"搭档：默认直接实现改动，而不是只给建议</li>
<li>在意图不清时，先问 1-3 个非常具体的澄清问题，再动手</li>
</ul>
<h2>代码改动边界</h2>
<ul>
<li>只做与当前任务强相关的改动；避免"顺手重构"</li>
<li>除非明确要求：不新增/删除注释与文档；不做大规模格式化</li>
<li>任何改动保证可运行：补齐必要引用/配置，并考虑调用方影响面</li>
<li>不发明文件路径、变量名、CI job 名、接口地址；不确定就先搜索/读文件确认</li>
</ul>
<h2>仓库探索与工具使用</h2>
<ul>
<li>探索陌生代码区时：先定位入口点/核心服务/权威逻辑，再改动</li>
<li>优先使用搜索与读文件工具获取上下文，再下结论</li>
<li>能并行的只读操作（多文件读取/搜索）尽量并行执行以提速</li>
</ul>
<h2>命令执行安全（Windows）</h2>
<ul>
<li>涉及安装依赖、写入、网络请求、删除等破坏性命令，一律先等用户确认</li>
<li>运行命令时不在命令里写 cd（由工作目录参数控制）</li>
<li>给用户复制粘贴的命令，把 cd 作为第一行</li>
</ul>
<h2>PowerShell 命令输出规范</h2>
<ul>
<li>同一仓库：放一个 powershell 代码块里，多行连续便于复制粘贴</li>
<li>不同仓库：分开不同代码块</li>
<li>不使用相对路径 cd：不出现 <code>cd ..\</code>；若要切目录只用绝对路径</li>
<li>每个 git push 后加空行：便于分段执行/视觉隔离</li>
</ul>
<h2>跨平台意识</h2>
<ul>
<li>环境：Windows + WSL(Ubuntu)</li>
<li>给命令会明确是 PowerShell 还是 bash，避免混淆路径风格</li>
</ul>
<hr />
<h1>Git 分支与签入治理规范（全局强制）</h1>
<h2>分支默认</h2>
<ul>
<li>公司内主干统一命名为 <code>master</code>（不是 main）</li>
<li>涉及 Gitee 仓库时：默认主分支也是 <code>master</code></li>
</ul>
<h2>分支与环境映射</h2>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>分支类型</th>
<th>环境</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>master</code> / <code>main</code></td>
<td>production</td>
<td>生产环境</td>
</tr>
<tr>
<td><code>hotfix/*</code></td>
<td>production</td>
<td>紧急修复，使用生产环境</td>
</tr>
<tr>
<td><code>develop</code> / <code>next</code></td>
<td>development</td>
<td>开发环境</td>
</tr>
<tr>
<td><code>feature/*</code> / <code>bugfix/*</code> / <code>fix/*</code></td>
<td>development</td>
<td>功能开发分支</td>
</tr>
</tbody>
</table>
<h2>Key 规范（工程主键，全局唯一，MUST）</h2>
<p dir="auto">任何进入主干的变更，都必须可追溯到一个全局可索引主键（Key）。</p>
<p dir="auto"><strong>支持的 Key 格式</strong>：</p>
<ul>
<li><code>ZD-&lt;id&gt;</code>：禅道需求/缺陷编号（例：<code>ZD-10452</code>）</li>
<li><code>TG-&lt;id&gt;</code>：Taiga 需求编号（例：<code>TG-8931</code>）</li>
<li><code>REQ-&lt;id&gt;</code>：GitLab Intake Issue 编号（例：<code>REQ-1234</code>）</li>
</ul>
<p dir="auto"><strong>禁止的写法</strong>：<code>1234</code>、<code>#1234</code>、<code>bug1234</code></p>
<h2>分支命名规范（MUST）</h2>
<pre><code>feature/&lt;KEY&gt;-&lt;description&gt;
bugfix/&lt;KEY&gt;-&lt;description&gt;
hotfix/&lt;KEY&gt;-&lt;description&gt;
</code></pre>
<p dir="auto">示例：</p>
<ul>
<li><code>feature/REQ-1234-add-docker-deploy</code></li>
<li><code>bugfix/ZD-10452-fix-null-pointer</code></li>
<li><code>hotfix/TG-8931-fix-payment-timeout</code></li>
</ul>
<h2>Commit Message 规范（MUST）</h2>
<p dir="auto">注释必须以中文为主。<br />
第一行必须以 Key 开头：</p>
<pre><code>&lt;KEY&gt;: &lt;message&gt;
</code></pre>
<p dir="auto">示例：</p>
<ul>
<li><code>REQ-1234: 增加Docker开发支持</code></li>
<li><code>ZD-10452: 修复折扣计算错误</code></li>
</ul>
<h2>MR 标题规范（MUST）</h2>
<p dir="auto">标题必须以中文为主。</p>
<pre><code>&lt;KEY&gt; - &lt;title&gt;
</code></pre>
<p dir="auto">示例：</p>
<ul>
<li><code>REQ-1234 - 增加Docker开发支持</code></li>
<li><code>ZD-10452 - 修复折扣计算错误</code></li>
</ul>
<h2>代码签入治理（MUST）</h2>
<h3>修改代码前</h3>
<ul>
<li>执行 <code>git pull</code> 拉取最新代码，确保不会覆盖他人的更改</li>
</ul>
<h3>合并到主干的硬规则</h3>
<p dir="auto">任何进入 <code>master/main</code> 的变更必须：</p>
<ol>
<li>有 Key（ZD/TG/REQ）</li>
<li>走 MR（Merge Request）</li>
<li>通过 CI 校验</li>
</ol>
<blockquote>
<p dir="auto">任何需要上线/进入主干的变更，必须有 Key，否则拒绝合并。</p>
</blockquote>
<h3>追溯链路</h3>
<p dir="auto"><code>Key -&gt; 分支 -&gt; Commit -&gt; MR -&gt; 代码变更</code></p>
<h3>三处强约束</h3>
<p dir="auto">只强制一处会漏；三处都强制，GitLab 搜索必然命中：</p>
<ol>
<li><strong>分支名</strong>：<code>feature/&lt;KEY&gt;-&lt;slug&gt;</code></li>
<li><strong>Commit 第一行</strong>：<code>&lt;KEY&gt;: &lt;message&gt;</code></li>
<li><strong>MR 标题</strong>：<code>&lt;KEY&gt; - &lt;title&gt;</code></li>
</ol>
<p dir="auto">###【Git 命令输出偏好（PowerShell）】</p>
<ul>
<li>始终中文。</li>
<li>同一仓库的 git 命令：放在一个 powershell 代码块里，多行连续便于复制粘贴。</li>
<li>不同仓库：分开不同代码块；不要用相对路径 cd 切换（不出现 cd ..\）。</li>
<li>不用分号连接命令。</li>
<li>每个 git push 后加一个空行。</li>
</ul>
<p dir="auto">##【跨平台】</p>
<ul>
<li>你环境为 Windows + WSL(Ubuntu)；我给命令会明确是 PowerShell 还是 bash，并避免混用路径风格。</li>
<li>Gitee 默认主分支使用 master（不是 main）。</li>
</ul>
<h3>CI 校验（MR Pipeline 必跑）</h3>
<ol>
<li>分支名必须包含合法 Key（<code>ZD-\d+|TG-\d+|REQ-\d+</code>）</li>
<li>MR 标题必须包含合法 Key</li>
<li>Commit messages（最近 N 个）必须包含 Key</li>
</ol>
<h3>特殊分支豁免</h3>
<p dir="auto">以下分支跳过 Key 校验：<code>master</code>、<code>main</code>、<code>develop</code>、<code>release/*</code></p>
<h2>下游触发分支规则（FANOUT_BRANCH）</h2>
<ul>
<li><code>FANOUT_BRANCH</code> 贯穿整条触发链路，表示"本次触发链路从最上游开始的分支"</li>
<li>若上游已传入 <code>FANOUT_BRANCH</code>，则下游沿用该值</li>
<li>否则默认 <code>FANOUT_BRANCH = CI_COMMIT_BRANCH</code></li>
<li>若下游仓库只有 master，在上游项目显式配置 <code>DOWNSTREAM_BRANCH: master</code></li>
</ul>
<h2>文档记录（重要变更）</h2>
<p dir="auto">重要的更改需要在项目/仓库根目录下的 <code>docs/</code> 文件夹创建 <code>.md</code> 文件记录：</p>
<pre><code>docs/
├── README.md           # 文档索引
├── changelog/          # 变更记录（按版本或时间）
├── design/             # 设计文档和架构决策
├── guides/             # 使用指南
└── issues/             # 问题修复记录
</code></pre>
<p dir="auto">issues 目录文件命名：<code>&lt;KEY&gt;-&lt;英文描述&gt;.md</code>，如 <code>LT-66-Redis-failure-prompt.md</code></p>
<hr />
<h1>阶段性交付</h1>
<p dir="auto">每个阶段完成后给出：</p>
<ol>
<li>本阶段做了什么（要点）</li>
<li>可能风险/回滚点（如有）</li>
<li>一段可直接复制的 Windows git 命令（从 cd 开始）</li>
</ol>
<pre><code></code></pre>
]]></description><link>https://talk.loda.net/topic/48/工作区和全局的rules</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 08:16:09 GMT</lastBuildDate><atom:link href="https://talk.loda.net/topic/48.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 12 Jan 2026 15:13:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 工作区和全局的Rules on Mon, 12 Jan 2026 15:24:09 GMT]]></title><description><![CDATA[<p dir="auto">签入之后，Gitlab收到了“提交”：</p>
<p dir="auto"><img src="/assets/uploads/files/1768231443017-5f1981c3-e5d3-491e-adeb-4fca8dc8cb51-image-resized.png" alt="image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://talk.loda.net/post/64</link><guid isPermaLink="true">https://talk.loda.net/post/64</guid><dc:creator><![CDATA[zhongfangxiong]]></dc:creator><pubDate>Mon, 12 Jan 2026 15:24:09 GMT</pubDate></item><item><title><![CDATA[Reply to 工作区和全局的Rules on Mon, 12 Jan 2026 15:23:06 GMT]]></title><description><![CDATA[<p dir="auto">我的柬埔寨业务的工作区的Rule，暂时是</p>
<pre><code>## 工程治理，常用的Key

- LT-100：适用于这个文件夹/项目/仓库的改动：X:\gitlab\loda.net.cn\deploy\caddy\caddy-sjp
- LT-101：适用于这个文件夹/项目/仓库的改动：X:\gitlab\loda.net.cn\deploy\caddy\caddy-sz
- 上述两个反向代理服务器的改动，就不用git的分支了。
</code></pre>
<p dir="auto">会话里我让模型给我生成git提交语句，因为我修改了新加坡的Caddy的配置。得到的结果我不满意：</p>
<pre><code>cd X:\gitlab\loda.net.cn\deploy\caddy\caddy-sjp

git pull

git checkout -b feature/&lt;KEY&gt;-add-auto-test-sjp-site

git status

git restore --staged .

git add Caddyfile
git add configs/auto-test.conf

git status

git commit -m "&lt;KEY&gt;: Add auto-test.sjp.loda.net.cn caddy site"

git push -u origin feature/&lt;KEY&gt;-add-auto-test-sjp-site
</code></pre>
<p dir="auto">因为我们现在有工程治理规范，我都说了这个仓库/文件夹就是用LT-100，WindSurf就是不听。</p>
<p dir="auto">于是我向WindSurf提问：<br />
<img src="/assets/uploads/files/1768230993308-7a636a0f-83de-4e2a-986e-ba5be1872714-image.png" alt="7a636a0f-83de-4e2a-986e-ba5be1872714-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">得到答案：<br />
<img src="/assets/uploads/files/1768231072983-70c2eb4b-2783-403a-a252-4f321df9a3eb-image-resized.png" alt="70c2eb4b-2783-403a-a252-4f321df9a3eb-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">应用答案之前，给我的git签入语句是这样的：<br />
<img src="/assets/uploads/files/1768231326271-d660ceee-609e-419e-92b9-be82fe49fe17-image.png" alt="d660ceee-609e-419e-92b9-be82fe49fe17-image.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">应用了刚才的答案之后，就符合了我的要求：<br />
<img src="/assets/uploads/files/1768231371940-4ca683fe-2d6e-4de6-acd8-951135010ffc-image.png" alt="4ca683fe-2d6e-4de6-acd8-951135010ffc-image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://talk.loda.net/post/63</link><guid isPermaLink="true">https://talk.loda.net/post/63</guid><dc:creator><![CDATA[zhongfangxiong]]></dc:creator><pubDate>Mon, 12 Jan 2026 15:23:06 GMT</pubDate></item><item><title><![CDATA[Reply to 工作区和全局的Rules on Mon, 12 Jan 2026 15:13:44 GMT]]></title><description><![CDATA[<hr />
<h2>trigger: manual</h2>
<h1><a href="http://Loda.net.cn" target="_blank" rel="noopener noreferrer nofollow ugc">Loda.net.cn</a> Workspace Rules</h1>
<h2>项目架构</h2>
<ul>
<li>这是一个多仓库 monorepo 结构的企业级 .NET 项目群</li>
<li>主要框架: ABP Framework 8.3.x</li>
<li>包含子系统: ERP、B2B、门店管理(StoreManage)、Sellers、API服务等</li>
<li>每个子目录下可能是独立的 Git 仓库</li>
</ul>
<h2>版本管理</h2>
<ul>
<li>所有 NuGet 包版本统一在 version-numbers/*.props 文件中定义</li>
<li>根目录 <a target="_blank" rel="noopener noreferrer nofollow ugc">Directory.Build.props</a> 导入所有版本定义</li>
<li>修改包版本时，应修改对应的 .props 文件，而非直接修改 .csproj</li>
<li>ABP 版本当前为: 8.3.4</li>
</ul>
<h2>NuGet 配置</h2>
<ul>
<li>使用私有 NuGet 源: <a href="https://nexus3-sz.loda.net.cn/repository/nuget-group/" target="_blank" rel="noopener noreferrer nofollow ugc">https://nexus3-sz.loda.net.cn/repository/nuget-group/</a></li>
<li>ABP 商业版源: <a href="https://nuget.abp.io/" target="_blank" rel="noopener noreferrer nofollow ugc">https://nuget.abp.io/</a></li>
<li>配置文件: 根目录 <a target="_blank" rel="noopener noreferrer nofollow ugc">NuGet.Config</a></li>
</ul>
<h2>CI/CD</h2>
<ul>
<li>使用 GitLab CI/CD</li>
<li>CI 配置文件: .gitlab-ci.yml</li>
<li>部署配置在各子项目的 deploy/ 目录的common-ci/servers/products三个项目组成</li>
<li>注意 DOWNSTREAM_BRANCH 等 CI 变量的使用</li>
</ul>
<h2>PowerShell 脚本</h2>
<ul>
<li>批量 Git 操作脚本在 loda.framework.erp/ 目录</li>
<li>脚本应包含完整的错误处理和日志输出</li>
<li>批量操作前先统计影响范围，操作后输出汇总</li>
</ul>
<h2>命名约定</h2>
<ul>
<li>项目命名: Loda.Abp.* 或 Yee.*</li>
<li>版本变量命名: PackageName_Version (下划线替代点号)</li>
</ul>
<h2>常用路径</h2>
<ul>
<li>ERP 系统: loda.framework.erp/</li>
<li>门店管理: loda.storemanage/</li>
<li>API 基础模块: lodaapi/</li>
<li>版本定义: version-numbers/</li>
<li>工具集: tools/</li>
</ul>
<h2>常用Git仓库的根目录</h2>
<ul>
<li>X:\gitlab\loda.net.cn是Gitlab实例的根目录，生成Git签入命令的时候千万不要把它作为仓库的根目录。下边的文件夹多半对应着Gitlab里的群组，再下边的文件夹才是Gitlab仓库</li>
<li>X:\gitlab\loda.net.cn\loda.framework.erp下的仓库目录更深</li>
<li>新加坡反向代理服务器Caddy的配置在 X:\gitlab\loda.net.cn\deploy\caddy\caddy-sjp</li>
<li>深圳开发站的Caddy配置在 X:\gitlab\loda.net.cn\deploy\caddy\caddy-sz</li>
</ul>
<h2>工程治理，常用的Key</h2>
<ul>
<li>LT-100：适用于这个文件夹/项目/仓库的改动：X:\gitlab\loda.net.cn\deploy\caddy\caddy-sjp</li>
<li>LT-101：适用于这个文件夹/项目/仓库的改动：X:\gitlab\loda.net.cn\deploy\caddy\caddy-sz</li>
<li>上述两个反向代理服务器的改动，就不用git的分支了。</li>
</ul>
]]></description><link>https://talk.loda.net/post/62</link><guid isPermaLink="true">https://talk.loda.net/post/62</guid><dc:creator><![CDATA[zhongfangxiong]]></dc:creator><pubDate>Mon, 12 Jan 2026 15:13:44 GMT</pubDate></item></channel></rss>