8.5 KiB
8.5 KiB
app/代码减法账本
基线:
xiaobai-preservation-complete-20260801
工作目录:只允许修改webapp/app/;原版根目录和冻结的next/只读
目标:删除重复实现和历史补丁,不改变功能、视觉、交互、动画、计算、权限、API或数据行为
固定规则
- 每批只处理一个明确边界,先证明重复或无消费者,再修改。
- 新共享实现必须在同一提交删除全部被替代实现;禁止只加一层包装。
- 运行代码总量原则上不得增加;测试和证据代码单独统计。
- 迁移期源码相等测试不得简单删除。发生已批准的结构重构时,必须替换成行为、错误语义和 唯一所有权契约。
- 每批通过领域测试、全量候选测试、独立导出测试和受影响的浏览器流程后才建立Git检查点。
- CSS最后处理;没有逐页日间、夜间和多视口截图证据,不删除视觉规则。
批次记录
| 批次 | 边界 | 基线问题 | 目标 | 状态 |
|---|---|---|---|---|
| CR-01 | LLM供应商传输 | 问师、问天、复盘助手和策略编译各自构造HTTP请求、解析响应和读取错误 | 只保留backend/llm/transport.py一个网络出口 |
已完成 |
| CR-02 | HTTP精确POST委托 | 27个端点重复使用“比较路径、调用无参数处理器、返回”三行分支 | 用公开/受保护两张显式映射统一委托,同时保留复杂路由的原控制流 | 已完成 |
| CR-03 | 股票市场后缀转换 | Tushare业务与iFinD图表各保留一份完全相同的沪深京代码转换函数 | 图表复用bootstrap/config.py::tushare_code,只保留一份函数体 |
已完成 |
| CR-04 | 数值归一化策略 | 四个业务模块分别保留两组完全相同的数值转换函数体 | 由backend/data/numbers.py集中拥有两种既有语义,消费者保留原局部别名 |
已完成 |
CR-01验收口径
- 四个功能模块不得包含
urllib.request或/chat/completions。 - 非流式与流式请求的URL、鉴权、User-Agent、SSE累积和空响应行为保持不变。
- 各功能原有错误类型和用户可见错误文案保持不变。
LLMGateway的会员、额度、主辅回退、首字后不中途换模型和审计规则保持不变。- 架构清单必须登记唯一传输入口;完整测试和真实主模型最小调用通过。
CR-01结果
- 四个功能模块的运行代码由572行降至422行;新增唯一传输实现129行,生产代码净减少21行、
约1.4 KB。行数不是主要收益,关键是5处
/chat/completions请求只剩1处。 - 三套重复HTTP错误正文解析合并为一套;各功能原有错误类型和用户可见文案由专项测试固定。
- 迁移期4个“Agent文件逐字相等”断言没有直接删除,而是替换为共享传输唯一所有权、提示词模块 归属、SSE行为和兼容模块对象契约。
- 候选311项、纯
app/导出248项、45项Playwright通过;24个JavaScript文件、架构/API注册表和 SQLite完整性检查通过。 - 使用候选数据库中加密保存的主模型完成真实非流式与流式最小调用,分别成功返回完整响应和 4个流式分片。调用未输出密钥或模型正文。
- 本批不修改页面、CSS、提示词、业务计算、会员额度、模型回退、数据库或部署。
回档基线为xiaobai-preservation-complete-20260801;本批检查点为
xiaobai-reduction-01-llm-transport-20260801。
CR-02验收口径
- 仅纳入没有路径参数、请求体解析或专属异常分支的精确POST端点;其余路由保持原样。
- 公开注册/登录端点继续在鉴权前分发;受保护端点继续严格执行登录、CSRF、注册表权限、处理器。
- 27个映射路径必须都由权威API注册表解析,处理方法必须真实存在,公开与受保护集合不得重叠。
- API路径、功能归属、访问角色、状态码、错误正文和静态页面绕过鉴权行为保持不变。
- API清单生成器必须结构化读取显式映射;架构清查复用API清单,不再维护第二套路由发现规则。
CR-02结果
- 2个公开端点和25个受保护端点改为显式委托映射,原来的79行重复分支被43行映射、分发与调用替代;
backend/application.py净减少36行,规范化源码约减少1.0 KB。 - 带正则路径参数、请求体读取、查询参数转换或特殊异常语义的GET、POST、DELETE端点未改动。
- 架构清查删除了自行扫描精确/正则API路径的第二套规则,改为消费权威
api.config.json;API注册表的 53个精确路径、11个正则路径、功能归属和权限均未变化。 - 原版231项、候选315项、纯
app/导出252项、45项Playwright通过;24个JavaScript文件、 API/架构注册表、Git空白检查和SQLite完整性检查通过。 - 本批不修改前端、CSS、业务计算、数据源、数据库结构、LLM、会员规则或部署。
本批基线为xiaobai-reduction-01-llm-transport-20260801;检查点为
xiaobai-reduction-02-http-dispatch-20260801。
CR-03验收口径
- 图表模块不再定义第二份市场后缀转换函数,仍保留原局部名称和两个调用点。
- 深市、沪市、北交所的既有映射结果保持不变;不借本批修正或扩展代码规则。
- 原图表文件除该函数外的所有顶层定义继续与原版AST逐项相等。
- 原版
_stock_market_code函数的参数和函数体必须与唯一共享实现AST相等,运行时别名必须指向 同一个函数对象。
CR-03结果
- 删除
backend/features/market/charts.py中第二份10行定义,以1行导入别名复用共享实现,生产代码 净减少9行;全仓后端只剩一份沪深京后缀转换函数体。 - 未合并实时聚合、东方财富图表、iFinD和Tushare的HTTP传输;它们的缓存、错误、重试和降级语义 不同,仅有外形相似,证据不足以安全抽象。
- 原有迁移期整文件相等断言被等价范围断言、共享函数AST断言和唯一对象断言替代,没有降低门禁。
- 原版231项、候选317项、纯
app/导出254项、45项Playwright通过;API/架构注册表、 24个JavaScript文件、Git空白检查和SQLite完整性检查通过。 - 本批不修改图表请求、数据来源、缓存、时间范围、行情计算、前端、CSS、数据库或部署。
本批基线为xiaobai-reduction-02-http-dispatch-20260801;检查点为
xiaobai-reduction-03-market-symbol-20260801。
CR-04验收口径
- 只合并参数、函数体和运行结果完全一致的数值转换函数,不借本批改变任何业务计算或异常默认值。
finite_number继续拒绝NaN与正负无穷;non_nan_number继续只拒绝NaN并保留正负无穷。- Tushare与智能选股必须复用有限数策略;市场洞察与情绪引擎必须复用非NaN策略,并继续暴露原局部
_number名称以保持兼容。 - 实时行情和图表转换器的空值、默认值或参数签名语义不同,必须继续独立保留,不能因名称相同而合并。
- 原版函数参数和函数体分别与共享实现AST相等;四个消费者的局部别名必须指向对应的唯一函数对象。
CR-04结果
- 删除Tushare、智能选股、市场洞察和情绪引擎中的四份重复函数体,新建两种明确命名的共享策略;生产 代码净减少约12行,全仓AST扫描不再发现完全相同的函数定义。
- 将可复用的函数及模块AST契约归入测试辅助层,原有迁移保持性测试改为“未改范围保持相等、被替换 函数与共享实现相等、运行时唯一对象”三重断言,没有降低门禁。
- 实时行情
backend/data/realtime.py::_number与图表backend/features/market/charts.py::_number被明确保留;它们不是本批重复实现,也未改变行为。 - 58项定向测试、41项保持性/治理测试、原版231项、候选320项、纯
app/导出257项和45项 Playwright通过;24个JavaScript文件、API/架构注册表、Git空白检查和SQLite完整性检查通过。 - 本批不修改前端、CSS、接口、数据来源、行情口径、选股条件、数据库、LLM、权限或部署。
本批基线为xiaobai-reduction-03-market-symbol-20260801;检查点为
xiaobai-reduction-04-numeric-normalization-20260801。
人工验收记录
- 2026-08-01:用户检查CR-02与CR-03运行结果,确认未发现明显异常。本记录仅表示本轮可见功能与 页面使用未发现明显回归,不替代后续批次各自的自动测试和人工抽查。