| 1234567891011121314151617181920212223242526 |
- using System.Collections.Generic;
- using System.Linq;
- using IvfTl.Control.Entity.InitEntitys;
- namespace ivf_tl_Control
- {
- /// <summary>
- /// 启动期坏舱决策(无 I/O,纯函数,可单测)。
- /// 规则:坏舱=故障清单中已知舱号(HouseSn>0);可跑舱=发现的舱−坏舱;致命=零可跑舱。
- /// 单舱/部分舱坏绝不致命 —— 落实 spec §34。
- /// </summary>
- public static class StartupFaultPolicy
- {
- public static HashSet<int> BadHouseSns(IEnumerable<HouseFault> faults)
- => faults.Where(f => f.HouseSn > 0).Select(f => f.HouseSn).ToHashSet();
- public static List<int> RunnableHouses(IEnumerable<int> discovered, IEnumerable<HouseFault> faults)
- {
- var bad = BadHouseSns(faults);
- return discovered.Where(sn => !bad.Contains(sn)).Distinct().OrderBy(x => x).ToList();
- }
- public static bool IsFatal(IReadOnlyList<int> runnableHouses)
- => runnableHouses == null || runnableHouses.Count == 0;
- }
- }
|