mirror of
https://github.com/tradecatlabs/vibe-coding-cn.git
synced 2026-11-02 11:26:32 +00:00
docs: gongfa - register experience transfer feedback (#242)
* docs: gongfa - add experience transfer source * docs: gongfa - register experience transfer feedback
This commit is contained in:
@@ -3,12 +3,12 @@
|
||||
|
||||
## 字多不看
|
||||
|
||||
- 共**412条内容记录**;已登记412条,待登记0条,未登记来源条目0条。不是独立功法去重后的总数。
|
||||
- 原前瞻初评410条,暂不可判2条;不是正式效果评级,亦不把缺测默认补成黄阶。
|
||||
- 共**413条内容记录**;已登记413条,待登记0条,未登记来源条目0条。不是独立功法去重后的总数。
|
||||
- 原前瞻初评410条,暂不可判3条;不是正式效果评级,亦不把缺测默认补成黄阶。
|
||||
- 331条来源迁入说明曾由用户确认正式通过审阅;后续内容更新不自动继承该确认。历史来源快照保留原样,书目/许可核验、实际效果与正式评级仍分别维护。
|
||||
- [data.json](data.json)是唯一原始数据源,原始文档、历史来源选区、意见、来源和附件均保留其中。
|
||||
|
||||
输入绑定:`fbdb41c7aeb69ea1e378ffa1e47c18695f901228b2cf2d4299b4bc7ad619540c`。
|
||||
输入绑定:`c4948f6cde5110f6488cfd0ee751781be4e983a76faa7b308b99f61eb4601836`。
|
||||
|
||||
## 快速导航
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- [地阶(76条)](di.md)
|
||||
- [玄阶(309条)](xuan.md)
|
||||
- [黄阶(21条)](huang.md)
|
||||
- [未明确品级(2条;不归属任何阶)](huang.md#未明确品级不归属黄阶)
|
||||
- [未明确品级(3条;不归属任何阶)](huang.md#未明确品级不归属黄阶)
|
||||
- [全部记录导航](#全部记录)
|
||||
- [原文文集](#原文文集)
|
||||
- [品级词表](#品级词表)
|
||||
@@ -1909,6 +1909,9 @@
|
||||
- [cross-domain-input-state-transform-output](#doc-cross-domain-input-state-transform-output)
|
||||
- [cross-domain-input-state-transform-output](#doc-cross-domain-input-state-transform-output-cross-domain-input-state-transform-output)
|
||||
- [输入状态变换输出跨领域框架](#doc-cross-domain-input-state-transform-output-输入状态变换输出跨领域框架)
|
||||
- [experience-pattern-transfer-feedback](#doc-experience-pattern-transfer-feedback)
|
||||
- [experience-pattern-transfer-feedback](#doc-experience-pattern-transfer-feedback-experience-pattern-transfer-feedback)
|
||||
- [经验规律迁移与反馈校正](#doc-experience-pattern-transfer-feedback-经验规律迁移与反馈校正)
|
||||
|
||||
</details>
|
||||
|
||||
@@ -2758,6 +2761,8 @@
|
||||
- [灾备容量负载放大模型](huang.md#v0-registry-gongfa-candidate-html211-e001-a663456869-r1-5c259ebd) — 暂不可判
|
||||
<a id="v0-registry-gongfa-candidate-html96-vc029-6cca304cec-r1-434a756e"></a>
|
||||
- [CAP 定理 (CAP Theorem)](huang.md#v0-registry-gongfa-candidate-html96-vc029-6cca304cec-r1-434a756e) — 暂不可判
|
||||
<a id="v0-registry-gongfa-experience-pattern-transfer-feedback-r1-21c9b633"></a>
|
||||
- [经验规律迁移与反馈校正](huang.md#v0-registry-gongfa-experience-pattern-transfer-feedback-r1-21c9b633) — 暂不可判
|
||||
|
||||
## 原文文集
|
||||
|
||||
@@ -2843,6 +2848,8 @@
|
||||
- `.github/docs/gongfa/geo-seo-checklist.md`:原始字节与摘要见[data.json](data.json)
|
||||
<a id="doc-cross-domain-input-state-transform-output"></a>
|
||||
- `.github/docs/gongfa/cross-domain-input-state-transform-output.md`:原始字节与摘要见[data.json](data.json)
|
||||
<a id="doc-experience-pattern-transfer-feedback"></a>
|
||||
- `.github/docs/gongfa/experience-pattern-transfer-feedback.md`:原始字节与摘要见[data.json](data.json)
|
||||
|
||||
<!-- 兼容已发布阅读视图中的章节锚点 -->
|
||||
<a id="doc-cultivation-ontology-taxonomy-修仙领域统一本体与分类设计v4-bfo-草案"></a>
|
||||
@@ -4688,6 +4695,8 @@
|
||||
<a id="doc-geo-seo-checklist-推荐回答"></a>
|
||||
<a id="doc-cross-domain-input-state-transform-output-cross-domain-input-state-transform-output"></a>
|
||||
<a id="doc-cross-domain-input-state-transform-output-输入状态变换输出跨领域框架"></a>
|
||||
<a id="doc-experience-pattern-transfer-feedback-experience-pattern-transfer-feedback"></a>
|
||||
<a id="doc-experience-pattern-transfer-feedback-经验规律迁移与反馈校正"></a>
|
||||
## 品级词表
|
||||
|
||||
| 值标识 | 名称 | 大阶 | 细级 | 次序 |
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -534,10 +534,11 @@
|
||||
|
||||
## 未明确品级(不归属黄阶)
|
||||
|
||||
以下2条没有可沿用的明确品级;仅为减少文件数暂置本页附录,不视为黄阶。
|
||||
以下3条没有可沿用的明确品级;仅为减少文件数暂置本页附录,不视为黄阶。
|
||||
|
||||
- [灾备容量负载放大模型](#v0-registry-gongfa-candidate-html211-e001-a663456869-r1-5c259ebd)
|
||||
- [CAP 定理 (CAP Theorem)](#v0-registry-gongfa-candidate-html96-vc029-6cca304cec-r1-434a756e)
|
||||
- [经验规律迁移与反馈校正](#v0-registry-gongfa-experience-pattern-transfer-feedback-r1-21c9b633)
|
||||
|
||||
<a id="v0-registry-gongfa-candidate-html211-e001-a663456869-r1-5c259ebd"></a>
|
||||
### 灾备容量负载放大模型
|
||||
@@ -586,3 +587,27 @@
|
||||
| 16 | 结论 | 结论(限第15项条件):仅有单条登记记录,未提供经独立确认的共同样本;因此不能据此宣称跨对象共同规律。最多可提出待验证的局部命题:围绕来源摘要“一个分布式系统最多只能保证一致性、可用性和分区容错性中的两项”分析其条件、步骤与可能反例;它仍须经上游核实和独立任务证据验证。<br>非效果、许可或正式评级证明。 |
|
||||
| 17 | 连接规则 | 推理桥梁:证据命题:第18项定位的第7项材料只对应本条记录;第11项登记的机制/操作摘要为“一个分布式系统最多只能保证一致性、可用性和分区容错性中的两项”。推理根据:单条记录可支持对该记录本身的描述,但不能代表多个独立、可比对象;从个例推广到跨对象规律需要额外样本和比较前提。由于当前来源定位没有提供上述跨对象比较样本,因此第16项中“围绕来源摘要“一个分布式系统最多只能保证一致性、可用性和分区容错性中的两项”分析其条件、步骤与可能反例”这一局部、待验证范围。成立边界:以第15项列出的适用条件、限制及其待核状态为准;不据此外推未观察效果、许可或正式评级。 |
|
||||
| 18 | 依据 | 依据:.github/metadata/gongfa/source-classified-candidates-20261007.json;快照SHA-256 `6f3246373eb2b1d3c6d5916d42133cbf1d6d2988a2c54514bc8ea09816de70b5`;来源定位 `html96:VC029`;第7项载完整出处;对应第11项,边界按第15项。快照/静态仅支持记录,不代表独立核验或效果/许可/评级证据。 |
|
||||
|
||||
<a id="v0-registry-gongfa-experience-pattern-transfer-feedback-r1-21c9b633"></a>
|
||||
### 经验规律迁移与反馈校正
|
||||
|
||||
| 序号 | 说明项 | 内容 |
|
||||
|:---:|:---|:---|
|
||||
| 1 | 工具的名称 | 经验规律迁移与反馈校正 |
|
||||
| 2 | 是什么 | 一种用于当前单项任务的经验迁移与反馈校正方法:把过往经验作为带适用条件的候选规律,比较新旧情境差异后调整方案,执行并依实际结果修正判断。 |
|
||||
| 3 | 为什么 | 避免把曾经成功的做法当成可跨条件照搬的通用配方;也避免只凭表面相似作类比,或执行后不检查结果。 |
|
||||
| 4 | 怎么做 | 先写明当前任务的目标、验收标准、约束、资源、权限和风险;查找相关成功、失败或结果不明的案例,区分观察与解释;比较情境差异并标记未知;提出带适用条件、预期、反例或停止条件的候选规律;按差异调整方案并在边界内执行;比较实际结果,考虑环境变化和其他解释,再保留、收窄、修正或拒绝候选规律。证据不足就标为待核。 |
|
||||
| 5 | 扩展 | 可用于个人决策、学习、研究、工程或协作中的单项任务;这些只是可能的使用情境,不代表效果已经验证。不要求训练模型、修改系统或建立长期记忆。 |
|
||||
| 6 | 关联信息 | 稳定ID:gongfa-experience-pattern-transfer-feedback;内容版本:r1;本体类型:method-specification;身份状态:已登记。用户此前提到天阶方向,但天阶初级/中级/高级细级尚未确定;本条暂不可判,不代选细级。正式评级和效果记录均未建立。 |
|
||||
| 7 | 出处 | 来源ID:repo-experience-pattern-transfer-feedback-20261025;逻辑路径:.github/docs/gongfa/experience-pattern-transfer-feedback.md;Git修订:aab70f72dc67e50c0a374c974d42e3c026c98cbe;冻结快照:.github/metadata/gongfa/source-experience-pattern-transfer-feedback-20261025.txt;冻结SHA-256:b2193f8304309a68b187430e6db0a9b4dfbc1bd5de9e8c9f4e2959d93643eb7d;定位:experience-pattern-transfer-feedback,独立Markdown章节。正文是本项目依据本轮对话中的用户需求所作编辑性整理,不是外部来源摘录或实证报告。 |
|
||||
| 8 | 相关图书 | 未核验有直接支持本方法整套操作的具体图书;本条源自对话需求的项目编辑性整理,不据此推定外部书目、许可或效果。 |
|
||||
| 9 | 它要解决什么问题? | 如何在当前任务中借鉴既往经验但不照搬:判断哪些条件仍成立、哪些差异要求调整,并在执行后根据实际结果修正这条经验的适用判断。 |
|
||||
| 10 | 为什么这样设计? | 把任务目标、经验事实、情境差异、候选条件、适配动作和反馈结果分开;先写适用条件与预期,再观察结果,减少把经验、表面类比和效果判断混为一谈的风险。此为编辑性设计解释,不冒充原作者动机或验证成果。 |
|
||||
| 11 | 内部如何实现? | 以当前任务和验收标准为锚,检索并描述相关案例;比较可观察的情境条件,提出受条件约束的候选规律;据差异调整当前方案,在授权和安全范围内执行并记录结果;最后结合预期、偏差和替代解释更新局部判断。它描述人的任务求解步骤,不要求软件系统实现。 |
|
||||
| 12 | 付出了什么代价? | 检索和核对旧案例、比较情境、提前写预期并记录结果会增加时间和记录成本。案例选择偏差、经验记忆不完整及结果混杂可能带来错误迁移;无法控制或观察结果时,反馈结论会更弱。本条没有实际成本或收益测量。 |
|
||||
| 13 | 比较不同技术与方法。 | 与直接照抄相比,本方法显式核对适用条件和情境差异;与泛化类比相比,它要求提出条件、预期和反例边界;与纯试错相比,它利用过往案例并要求执行后修正判断。机器学习训练或迁移学习依赖其自身数据、模型和优化机制,本方法不要求训练模型,也不是机器学习算法。受控实验可用于评价效果,但不适用于或要求每个单项任务都执行。 |
|
||||
| 14 | 提炼共同规律。 | 经验跨情境使用应把共同机制和关键差异分开,并将候选判断写成有条件、可被结果修正的命题;该归纳来自本方法定义,不是跨任务实证规律。 |
|
||||
| 15 | 明确这些规律成立的前提与适用条件。 | 适用前提:任务目标、验收标准和关键约束可说明;经验来源有可追溯观察;新旧情境的关键差异可识别;执行与结果观察符合权限、安全、隐私及风险边界。限制:案例选择和记忆可能有偏差;环境变化及混杂因素影响解释;单次结果不证明因果或跨任务泛化;高风险或不可逆时不为验证而执行;证据不足应维持待核。 |
|
||||
| 16 | 结论 | 结论(限第15项条件):在目标、验收标准和关键情境条件可说明、相关经验可追溯且结果可观察时,本方法把过往经验作为有条件的候选规律,先比较情境并调整当前任务方案,再依据实际反馈修正判断。本文提炼的规则是:“经验跨情境使用应把共同机制和关键差异分开,并将候选判断写成有条件、可被结果修正的命题;该归纳来自本方法定义,不是跨任务实证规律。”这是方法定义与预期推理,不证明效果或因果,不证明许可或正式评级。 |
|
||||
| 17 | 连接规则 | 推理桥梁:证据命题:第7项记录的用户需求将方法限定为完成当前任务时借鉴旧经验、核对情境差异、调整后执行并依结果修正;第18项可定位的登记正文把这些操作写成一个有边界的任务级方法。主张:第16项将本条描述为任务级经验迁移与反馈校正方法。推理根据:方法的描述性分类取决于对象、操作和反馈结构;由于登记正文明确以当前单项任务为对象,并要求比较情境条件、据差异调整方案、观察结果并更新判断,因此这些文本事实支持第16项关于方法定义的主张。来源是对话需求的项目整理,只能支持来源归属及登记定义,不支持方法有效性或因果结论。成立边界:以第15项列出的适用条件、限制及其待核状态为准;不据此外推未观察效果、许可或正式评级。 |
|
||||
| 18 | 依据 | 依据:第7项来源记录与第11项机制共同定位本条定义;来源ID `repo-experience-pattern-transfer-feedback-20261025`;逻辑路径 `.github/docs/gongfa/experience-pattern-transfer-feedback.md`;Git修订 `aab70f72dc67e50c0a374c974d42e3c026c98cbe`;冻结快照 `.github/metadata/gongfa/source-experience-pattern-transfer-feedback-20261025.txt`;冻结SHA-256 `b2193f8304309a68b187430e6db0a9b4dfbc1bd5de9e8c9f4e2959d93643eb7d`;章节锚点 `experience-pattern-transfer-feedback`。这些材料记录本项目依据对话需求整理的方法正文,不是外部独立效果证据、因果证明、许可结论或正式评级依据。 |
|
||||
|
||||
@@ -133,15 +133,71 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
self.assertIn('用户明确指定', input_output['explanation_fields'][5]['content'])
|
||||
self.assertIn('天阶中级', input_output['explanation_fields'][5]['content'])
|
||||
|
||||
def test_experience_pattern_transfer_is_task_level_and_keeps_unresolved_grade_direction(self):
|
||||
entry_id = 'gongfa-experience-pattern-transfer-feedback'
|
||||
entries = [entry for entry in self.documents['registry']['gongfa'] if entry['id'] == entry_id]
|
||||
self.assertEqual(len(entries), 1)
|
||||
entry = entries[0]
|
||||
self.assertEqual(entry['name'], '经验规律迁移与反馈校正')
|
||||
self.assertEqual(entry['content_version'], 'r1')
|
||||
self.assertEqual(entry['entry_status'], 'registered')
|
||||
self.assertEqual(entry['ontology_type'], 'method-specification')
|
||||
finite_sample = [item for item in self.documents['registry']['gongfa']
|
||||
if item['id'] == 'gongfa-finite-sample-generative-inference']
|
||||
self.assertEqual(len(finite_sample), 1)
|
||||
self.assertEqual(finite_sample[0]['name'], '有限样本生成推断')
|
||||
source = next(source for source in self.documents['registry']['sources']
|
||||
if source['id'] == entry['source_ref']['source_id'])
|
||||
self.assertEqual(source['kind'], 'repository_document')
|
||||
self.assertEqual(source['path'], '.github/docs/gongfa/experience-pattern-transfer-feedback.md')
|
||||
self.assertEqual(entry['source_ref']['heading_id'], 'experience-pattern-transfer-feedback')
|
||||
self.assertEqual(entry['source_ref']['selection'], 'markdown-section')
|
||||
original_text = entry['content']['original_text']
|
||||
for required in ('当前任务', '过往经验', '比较情境', '差异', '调整', '实际结果', '因果', '训练模型'):
|
||||
self.assertIn(required, original_text)
|
||||
self.assertIn('不保证性能提升或最优解', original_text)
|
||||
|
||||
batches = [batch for batch in self.documents['registry']['grade_proposals']
|
||||
if any(item['gongfa_id'] == entry_id for item in batch['items'])]
|
||||
self.assertEqual(len(batches), 1)
|
||||
proposal = next(item for item in batches[0]['items'] if item['gongfa_id'] == entry_id)
|
||||
self.assertIsNone(proposal['grade_id'])
|
||||
self.assertEqual(proposal['grading_status'], 'undetermined')
|
||||
self.assertEqual(proposal['confidence'], 'low')
|
||||
self.assertIn('细级待定', proposal['reason'])
|
||||
self.assertEqual(self.documents['registry']['assessments'], [])
|
||||
|
||||
key = f'registry:{entry_id}@r1'
|
||||
explanation = next(item for item in self.documents['explanations_v1']['items']
|
||||
if item['object_key'] == key)
|
||||
fields = {field['name']: field['content'] for field in explanation['fields']}
|
||||
self.assertEqual(list(fields), v1_field_names())
|
||||
self.assertIn('当前单项任务', fields['是什么'])
|
||||
self.assertIn('比较情境差异', fields['怎么做'])
|
||||
self.assertIn('比较实际结果', fields['怎么做'])
|
||||
self.assertIn('不要求训练模型', fields['扩展'])
|
||||
self.assertIn('未核验', fields['相关图书'])
|
||||
self.assertIn('不证明效果或因果', fields['结论'])
|
||||
self.assertIn('不据此外推未观察效果、许可或正式评级', fields['连接规则'])
|
||||
self.assertIn(source['id'], fields['依据'])
|
||||
|
||||
rows = catalog.merge_rows(deepcopy(self.documents))
|
||||
row = next(row for row in rows if row['original_id'] == entry_id)
|
||||
self.assertEqual(row['entry_status'], '已登记')
|
||||
self.assertIsNone(row['grade_id'])
|
||||
self.assertEqual(row['grading_status'], 'undetermined')
|
||||
self.assertEqual(row['explanation_fields'], explanation['fields'])
|
||||
|
||||
def test_current_all_classified_content_and_two_bad_summaries_keep_original_opinions(self):
|
||||
rows = catalog.merge_rows(deepcopy(self.documents))
|
||||
self.assertEqual(Counter(row['namespace'] for row in rows), {'registry': 412})
|
||||
self.assertEqual(len(rows), 412)
|
||||
self.assertEqual(len({(r['namespace'], r['original_id'], r['content_version']) for r in rows}), 412)
|
||||
self.assertEqual(Counter(row['namespace'] for row in rows), {'registry': 413})
|
||||
self.assertEqual(len(rows), 413)
|
||||
self.assertEqual(len({(r['namespace'], r['original_id'], r['content_version']) for r in rows}), 413)
|
||||
undetermined = {r['original_id'] for r in rows if r['grading_status'] == 'undetermined'}
|
||||
self.assertEqual(undetermined, {
|
||||
'gongfa-candidate-html211-e001-a663456869',
|
||||
'gongfa-candidate-html96-vc029-6cca304cec',
|
||||
'gongfa-experience-pattern-transfer-feedback',
|
||||
})
|
||||
by_id = {(r['namespace'], r['original_id']): r for r in rows}
|
||||
self.assertEqual(by_id['registry', 'gongfa-first-principles']['grade_id'], 'di-advanced')
|
||||
@@ -153,7 +209,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
self.assertEqual(by_id['registry', 'gongfa-candidate-html211-e001-a663456869']['grading_status'], 'undetermined')
|
||||
self.assertIn('失去50%容量时剩余单位需要承担2倍总流量。',
|
||||
by_id['registry', 'gongfa-candidate-html211-e001-a663456869']['original_text'])
|
||||
self.assertEqual(sum(r['entry_status'] == '已登记' for r in rows), 412)
|
||||
self.assertEqual(sum(r['entry_status'] == '已登记' for r in rows), 413)
|
||||
lambda_index = next(index for index, row in enumerate(rows) if row['original_id'] == 'gongfa-lambda-calculus')
|
||||
glue_index = next(index for index, row in enumerate(rows) if row['original_id'] == 'gongfa-glue-coding')
|
||||
self.assertEqual(lambda_index + 1, glue_index)
|
||||
@@ -165,7 +221,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
self.assertEqual(chapters[chapters.index('## 拼好码') + 1], '## Lambda 演算')
|
||||
self.assertEqual(sum(r['entry_status'] == '登记库候选' for r in rows), 0)
|
||||
self.assertEqual(self.documents['registry']['assessments'], [])
|
||||
self.assertEqual(len(self.documents['registry']['gongfa']), 412)
|
||||
self.assertEqual(len(self.documents['registry']['gongfa']), 413)
|
||||
self.assertTrue(all(item['entry_status'] == 'registered' for item in self.documents['registry']['gongfa']))
|
||||
registry_item = next(item for item in self.documents['registry']['gongfa'] if item['id'] == 'gongfa-first-principles')
|
||||
profile = registry_item['content']['profile']
|
||||
@@ -220,12 +276,12 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
self.assertEqual(self.documents['html211_candidates']['registry_updated'], False)
|
||||
self.assertEqual(self.documents['html96_candidates']['registry_updated'], False)
|
||||
self.assertEqual(self.documents['explanations_v1']['template_sha256'], catalog.tool_explanations.template_sha256(ROOT))
|
||||
self.assertEqual(len(self.documents['explanations_v1']['items']), 412)
|
||||
self.assertEqual(len(self.documents['explanations_v1']['items']), 413)
|
||||
self.assertTrue(all(item['object_key'].startswith('registry:')
|
||||
for item in self.documents['explanations_v1']['items']))
|
||||
views = catalog.render_views(ROOT, rows, self.binding)
|
||||
markdown = views['README.md']
|
||||
self.assertIn('- 共**412条内容记录**;已登记412条,待登记0条,未登记来源条目0条。', markdown)
|
||||
self.assertIn('- 共**413条内容记录**;已登记413条,待登记0条,未登记来源条目0条。', markdown)
|
||||
self.assertNotIn('[控制论与科学方法论](#控制论与科学方法论)', markdown)
|
||||
self.assertIn('同名条目在导航中附稳定对象ID,不表示身份合并。', markdown)
|
||||
self.assertFalse('catalog.xlsx' in markdown, '活动阅读视图只有Markdown,历史Excel仅作原始载荷保存')
|
||||
@@ -514,8 +570,8 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
for phrase in phrases:
|
||||
self.assertNotIn(phrase, fields[field_name], f'{candidate_id}:{field_name}')
|
||||
|
||||
def test_stale_status_scan_covers_all_442_explanation_items_without_rewriting_them(self):
|
||||
expected_counts = {'gongfa': 412, 'faqi': 30}
|
||||
def test_stale_status_scan_covers_all_443_explanation_items_without_rewriting_them(self):
|
||||
expected_counts = {'gongfa': 413, 'faqi': 30}
|
||||
bundles = source_archive.bundles(ROOT)
|
||||
self.assertEqual(set(expected_counts), set(bundles))
|
||||
hits = []
|
||||
@@ -531,7 +587,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
for label in STALE_EXPLANATION_LABELS:
|
||||
if label in field['content']:
|
||||
hits.append(f"{kind}:{item['object_key']}:{field['name']}:{label}")
|
||||
self.assertEqual(442, total)
|
||||
self.assertEqual(443, total)
|
||||
self.assertEqual([], hits, '仅报告过时状态词候选,不自动改写说明:' + chr(10) + chr(10).join(hits))
|
||||
|
||||
def test_v1_template_appends_the_three_argument_fields_without_changing_v0(self):
|
||||
@@ -569,8 +625,8 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
findings.append(f"{item['object_key']}:{name}")
|
||||
self.assertEqual([], findings, '主张不能把同一摘要同时当作方法和问题:' + ', '.join(findings))
|
||||
|
||||
def test_active_v1_payload_migrates_all_442_records_with_toulmin_warrants(self):
|
||||
expected_counts = {'gongfa': 412, 'faqi': 30}
|
||||
def test_active_v1_payload_migrates_all_443_records_with_toulmin_warrants(self):
|
||||
expected_counts = {'gongfa': 413, 'faqi': 30}
|
||||
expected_names = v0_field_names() + ['结论', '连接规则', '依据']
|
||||
bundles = source_archive.bundles(ROOT)
|
||||
total = 0
|
||||
@@ -601,7 +657,7 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
self.assertNotIn('仅当第18项支持第11项机制适用于第9项问题', warrant, item['object_key'])
|
||||
self.assertIn('第7项', fields['依据'], item['object_key'])
|
||||
self.assertIn('第11项', fields['依据'], item['object_key'])
|
||||
self.assertEqual(442, total)
|
||||
self.assertEqual(443, total)
|
||||
gongfa_items = {
|
||||
item['object_key']: {field['name']: field['content'] for field in item['fields']}
|
||||
for item in bundles['gongfa']['data']['explanations_v1']['items']
|
||||
@@ -670,8 +726,8 @@ class CatalogMaintenanceTest(unittest.TestCase):
|
||||
documents['registry']['gongfa'].append(candidate)
|
||||
rows = catalog.merge_rows(documents)
|
||||
self.assertEqual(sum(row['entry_status'] == '登记库候选' for row in rows), 1)
|
||||
self.assertEqual(413, len(rows))
|
||||
self.assertIn('合计413条', '\n'.join(catalog.notes(rows, self.binding)))
|
||||
self.assertEqual(414, len(rows))
|
||||
self.assertIn('合计414条', '\n'.join(catalog.notes(rows, self.binding)))
|
||||
|
||||
def test_registry_updates_follow_explicit_correction_and_never_inherit_a_new_version(self):
|
||||
documents = deepcopy(self.documents)
|
||||
|
||||
Reference in New Issue
Block a user