@zhin.js/plugin-lottery 1.1.8 → 1.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/commands/lottery/[[game]]/index.js +5 -4
- package/commands/lottery/[[game]]/index.ts +5 -4
- package/commands/lottery-backtest/[[game]]/index.js +9 -4
- package/commands/lottery-backtest/[[game]]/index.ts +8 -4
- package/commands/lottery-history/[game]/index.js +6 -4
- package/commands/lottery-history/[game]/index.ts +6 -4
- package/commands/lottery-stats/[game]/index.js +11 -6
- package/commands/lottery-stats/[game]/index.ts +11 -5
- package/commands/lottery-today/index.js +8 -4
- package/commands/lottery-today/index.ts +8 -3
- package/commands/lottery-train/[[game]]/index.js +4 -3
- package/commands/lottery-train/[[game]]/index.ts +4 -3
- package/lib/command-helpers.d.ts +2 -1
- package/lib/command-helpers.d.ts.map +1 -1
- package/lib/command-helpers.js +2 -1
- package/lib/command-helpers.js.map +1 -1
- package/lib/evaluate/backtest.d.ts +3 -2
- package/lib/evaluate/backtest.d.ts.map +1 -1
- package/lib/evaluate/backtest.js +12 -11
- package/lib/evaluate/backtest.js.map +1 -1
- package/lib/evaluate/tracker.d.ts +2 -1
- package/lib/evaluate/tracker.d.ts.map +1 -1
- package/lib/evaluate/tracker.js +9 -8
- package/lib/evaluate/tracker.js.map +1 -1
- package/lib/evaluate/train-weights.d.ts +3 -2
- package/lib/evaluate/train-weights.d.ts.map +1 -1
- package/lib/evaluate/train-weights.js +12 -11
- package/lib/evaluate/train-weights.js.map +1 -1
- package/lib/games/kl8-groups.d.ts +2 -0
- package/lib/games/kl8-groups.d.ts.map +1 -1
- package/lib/games/kl8-groups.js +2 -1
- package/lib/games/kl8-groups.js.map +1 -1
- package/lib/i18n.d.ts +2 -0
- package/lib/i18n.d.ts.map +1 -0
- package/lib/i18n.js +222 -0
- package/lib/i18n.js.map +1 -0
- package/lib/lottery-tool-handlers.d.ts +4 -3
- package/lib/lottery-tool-handlers.d.ts.map +1 -1
- package/lib/lottery-tool-handlers.js +12 -7
- package/lib/lottery-tool-handlers.js.map +1 -1
- package/lib/pipeline.d.ts +3 -1
- package/lib/pipeline.d.ts.map +1 -1
- package/lib/pipeline.js +9 -7
- package/lib/pipeline.js.map +1 -1
- package/lib/recommend/game-pick.d.ts +4 -2
- package/lib/recommend/game-pick.d.ts.map +1 -1
- package/lib/recommend/game-pick.js +39 -28
- package/lib/recommend/game-pick.js.map +1 -1
- package/lib/recommend/report.d.ts +4 -2
- package/lib/recommend/report.d.ts.map +1 -1
- package/lib/recommend/report.js +17 -10
- package/lib/recommend/report.js.map +1 -1
- package/lib/runtime-state.d.ts +2 -0
- package/lib/runtime-state.d.ts.map +1 -1
- package/lib/runtime-state.js.map +1 -1
- package/lib/stats/pro-analysis.d.ts +3 -2
- package/lib/stats/pro-analysis.d.ts.map +1 -1
- package/lib/stats/pro-analysis.js +10 -9
- package/lib/stats/pro-analysis.js.map +1 -1
- package/lib/sync/run-sync.d.ts +2 -1
- package/lib/sync/run-sync.d.ts.map +1 -1
- package/lib/sync/run-sync.js +4 -3
- package/lib/sync/run-sync.js.map +1 -1
- package/lib/types.d.ts +2 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +8 -8
- package/plugin.js +4 -0
- package/skills/lottery/tools/compute-recommend/index.js +1 -1
- package/skills/lottery/tools/compute-recommend/index.ts +1 -1
- package/skills/lottery/tools/history/index.js +2 -1
- package/skills/lottery/tools/history/index.ts +2 -1
- package/skills/lottery/tools/save-prediction/index.js +1 -1
- package/skills/lottery/tools/save-prediction/index.ts +1 -1
- package/skills/lottery/tools/stats-snapshot/index.js +1 -1
- package/skills/lottery/tools/stats-snapshot/index.ts +1 -1
- package/skills/lottery/tools/sync/index.js +1 -1
- package/skills/lottery/tools/sync/index.ts +1 -0
- package/src/command-helpers.ts +3 -0
- package/src/evaluate/backtest.ts +13 -11
- package/src/evaluate/tracker.ts +10 -8
- package/src/evaluate/train-weights.ts +13 -11
- package/src/games/kl8-groups.ts +4 -1
- package/src/i18n.ts +222 -0
- package/src/lottery-tool-handlers.ts +12 -7
- package/src/pipeline.ts +10 -7
- package/src/recommend/game-pick.ts +40 -28
- package/src/recommend/report.ts +18 -8
- package/src/runtime-state.ts +2 -0
- package/src/stats/pro-analysis.ts +11 -7
- package/src/sync/run-sync.ts +5 -2
- package/src/types.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pro-analysis.js","sourceRoot":"","sources":["../../src/stats/pro-analysis.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pro-analysis.js","sourceRoot":"","sources":["../../src/stats/pro-analysis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,CAAC,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAyE,MAAM,aAAa,CAAC;AAErH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,MAAM,UAAU,iBAAiB,CAC/B,IAAc,EACd,OAA4B,EAC5B,OAA4B,EAC5B,QAA6B;IAE7B,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;IACxB,OAAO,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,OAAe,EAAE,OAAe;IAC9E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE;QAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAC1B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO;gBAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;IACtF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAiB,EAAE,OAAe,EAAE,OAAe;IAC9E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,IAAc,EACd,KAAuB,EACvB,OAAqB,EACrB,OAAgB,EAChB,OAAgB,EAChB,GAAY,EACZ,MAAe;IAEf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IAC/B,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,IAAI,KAAyB,CAAC;IAC9B,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACpG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAC1D,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACpF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACvB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO;QACL,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAC5C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAC/C,GAAG;QACH,IAAI;QACJ,KAAK;QACL,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;QAC1E,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAgB,EAChB,KAAuB,EACvB,OAAqB,EACrB,MAAe;IAEf,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9E,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACxF,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO;QACL,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,GAAG;QACH,IAAI;QACJ,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;QAC5B,SAAS,EAAE,EAAE;QACb,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,CAAc,EAAE,MAAc;IACjD,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IAC1C,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;IACzC,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC3C,OAAO,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;AACxB,CAAC"}
|
package/lib/sync/run-sync.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
1
2
|
import type { GameId, NormalizedDraw } from '../types.js';
|
|
2
3
|
import { type LotteryDb } from '../db.js';
|
|
3
|
-
export declare function runDataSync(getDb: () => LotteryDb | null, enabledGames: () => GameId[], historyLimit: number, gameId?: GameId): Promise<{
|
|
4
|
+
export declare function runDataSync(getDb: () => LotteryDb | null, enabledGames: () => GameId[], historyLimit: number, gameId?: GameId, locale?: Locale): Promise<{
|
|
4
5
|
text: string;
|
|
5
6
|
newSummary: string;
|
|
6
7
|
inserted: NormalizedDraw[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-sync.d.ts","sourceRoot":"","sources":["../../src/sync/run-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,SAAS,GAAG,IAAI,EAC7B,YAAY,EAAE,MAAM,MAAM,EAAE,EAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CAwB3E"}
|
|
1
|
+
{"version":3,"file":"run-sync.d.ts","sourceRoot":"","sources":["../../src/sync/run-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAEpD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,SAAS,GAAG,IAAI,EAC7B,YAAY,EAAE,MAAM,MAAM,EAAE,EAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,CAAC,CAwB3E"}
|
package/lib/sync/run-sync.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { messages as t } from '../i18n.js';
|
|
1
2
|
import { syncGame } from '../db.js';
|
|
2
|
-
export async function runDataSync(getDb, enabledGames, historyLimit, gameId) {
|
|
3
|
+
export async function runDataSync(getDb, enabledGames, historyLimit, gameId, locale) {
|
|
3
4
|
const db = getDb();
|
|
4
5
|
if (!db)
|
|
5
|
-
return { text:
|
|
6
|
+
return { text: t(locale, 'dbNotReady'), newSummary: '', inserted: [] };
|
|
6
7
|
const ids = gameId ? [gameId] : enabledGames();
|
|
7
8
|
const parts = [];
|
|
8
9
|
const newParts = [];
|
|
@@ -21,7 +22,7 @@ export async function runDataSync(getDb, enabledGames, historyLimit, gameId) {
|
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
return {
|
|
24
|
-
text:
|
|
25
|
+
text: t(locale, 'syncResult', { result: parts.join(', ') }),
|
|
25
26
|
newSummary: newParts.join('; '),
|
|
26
27
|
inserted,
|
|
27
28
|
};
|
package/lib/sync/run-sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-sync.js","sourceRoot":"","sources":["../../src/sync/run-sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAkB,MAAM,UAAU,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAA6B,EAC7B,YAA4B,EAC5B,YAAoB,EACpB,MAAe;IAEf,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"run-sync.js","sourceRoot":"","sources":["../../src/sync/run-sync.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,IAAI,CAAC,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,QAAQ,EAAkB,MAAM,UAAU,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAA6B,EAC7B,YAA4B,EAC5B,YAAoB,EACpB,MAAe,EACf,MAAe;IAEf,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAChF,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;YACtE,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACtB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3D,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/B,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
package/lib/types.d.ts
CHANGED
|
@@ -46,6 +46,7 @@ export interface StatsSnapshot {
|
|
|
46
46
|
accuracy?: AccuracySnapshot;
|
|
47
47
|
}
|
|
48
48
|
export interface GamePick {
|
|
49
|
+
locale?: import('zhin.js/i18n').Locale;
|
|
49
50
|
gameId: GameId;
|
|
50
51
|
label: string;
|
|
51
52
|
numbers: DrawNumbers;
|
|
@@ -69,6 +70,7 @@ export interface HitSummary {
|
|
|
69
70
|
detail: string;
|
|
70
71
|
}
|
|
71
72
|
export interface DailyReport {
|
|
73
|
+
locale?: import('zhin.js/i18n').Locale;
|
|
72
74
|
date: string;
|
|
73
75
|
picks: GamePick[];
|
|
74
76
|
disclaimer: string;
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAgGA,MAAM,CAAC,MAAM,UAAU,GACrB,6CAA6C,CAAC;AAEhD,MAAM,CAAC,MAAM,eAAe,GAAiB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhin.js/plugin-lottery",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.10",
|
|
4
4
|
"description": "Multi-game lottery analysis for Zhin.js (Plugin Runtime)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -43,19 +43,19 @@
|
|
|
43
43
|
"license": "MIT",
|
|
44
44
|
"dependencies": {
|
|
45
45
|
"zod": "^4.4.3",
|
|
46
|
-
"@zhin.js/tool": "1.1.
|
|
47
|
-
"@zhin.js/skill": "1.1.
|
|
46
|
+
"@zhin.js/tool": "1.1.10",
|
|
47
|
+
"@zhin.js/skill": "1.1.10"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"typescript": "^6.0.3",
|
|
51
51
|
"vitest": "^4.1.10",
|
|
52
|
-
"@zhin.js/agent": "1.1.
|
|
53
|
-
"zhin.js": "1.1.
|
|
52
|
+
"@zhin.js/agent": "1.1.42",
|
|
53
|
+
"zhin.js": "1.1.16"
|
|
54
54
|
},
|
|
55
55
|
"peerDependencies": {
|
|
56
|
-
"@zhin.js/agent": "^1.1.
|
|
57
|
-
"@zhin.js/command": "^1.1.
|
|
58
|
-
"zhin.js": "^1.1.
|
|
56
|
+
"@zhin.js/agent": "^1.1.42",
|
|
57
|
+
"@zhin.js/command": "^1.1.11",
|
|
58
|
+
"zhin.js": "^1.1.16"
|
|
59
59
|
},
|
|
60
60
|
"peerDependenciesMeta": {
|
|
61
61
|
"@zhin.js/agent": {
|
package/plugin.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
|
+
import { projectLocaleToken, resolveLocale } from 'zhin.js/i18n';
|
|
2
3
|
import { definePlugin, databaseHostToken, outboundHostToken, scheduleHostToken, } from 'zhin.js';
|
|
3
4
|
import { lotteryEnabledGames, lotteryKl8, resolveLotteryConfig, } from "./lib/config.js";
|
|
4
5
|
import { defineLotteryTables } from "./lib/db.js";
|
|
@@ -18,6 +19,7 @@ export default definePlugin({
|
|
|
18
19
|
},
|
|
19
20
|
async setup(context) {
|
|
20
21
|
const config = resolveLotteryConfig(context.config.get());
|
|
22
|
+
const locale = resolveLocale(context.resources.use(projectLocaleToken));
|
|
21
23
|
// host 与 memory 模型表面结构兼容(where 均返回 PromiseLike),可直接互换。
|
|
22
24
|
const db = (() => {
|
|
23
25
|
if (context.resources.has(databaseHostToken)) {
|
|
@@ -50,6 +52,7 @@ export default definePlugin({
|
|
|
50
52
|
};
|
|
51
53
|
}
|
|
52
54
|
context.resources.provide(lotteryRuntimeToken, Object.freeze({
|
|
55
|
+
locale,
|
|
53
56
|
db,
|
|
54
57
|
config: Object.freeze({ ...config }),
|
|
55
58
|
enabledGames: Object.freeze([...lotteryEnabledGames(config)]),
|
|
@@ -65,6 +68,7 @@ export default definePlugin({
|
|
|
65
68
|
description: 'Daily lottery pipeline',
|
|
66
69
|
async execute() {
|
|
67
70
|
await runLotteryPipeline({
|
|
71
|
+
locale,
|
|
68
72
|
db,
|
|
69
73
|
enabledGames: () => lotteryEnabledGames(config),
|
|
70
74
|
historyLimit: config.historyLimit,
|
|
@@ -7,6 +7,6 @@ export default defineAgentTool({
|
|
|
7
7
|
description: 'Compute lottery recommendation numbers via F/O/T stats engine',
|
|
8
8
|
inputSchema: z.object({ game: z.string().min(1) }),
|
|
9
9
|
async execute({ game }, context) {
|
|
10
|
-
return handleComputeRecommend(context.use(lotteryRuntimeToken), game);
|
|
10
|
+
return handleComputeRecommend(context.use(lotteryRuntimeToken), game, context.locale);
|
|
11
11
|
},
|
|
12
12
|
});
|
|
@@ -7,6 +7,6 @@ export default defineAgentTool<{ game: string }>({
|
|
|
7
7
|
description: 'Compute lottery recommendation numbers via F/O/T stats engine',
|
|
8
8
|
inputSchema: z.object({ game: z.string().min(1) }),
|
|
9
9
|
async execute({ game }, context) {
|
|
10
|
-
return handleComputeRecommend(context.use(lotteryRuntimeToken), game);
|
|
10
|
+
return handleComputeRecommend(context.use(lotteryRuntimeToken), game, context.locale);
|
|
11
11
|
},
|
|
12
12
|
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// Generated by build-plugin-runtime-entries.mjs. Do not edit.
|
|
2
|
+
import { messages as t } from "../../../../lib/i18n.js";
|
|
2
3
|
import { defineAgentTool } from '@zhin.js/tool';
|
|
3
4
|
import { z } from 'zod';
|
|
4
5
|
import { parseGameId } from "../../../../lib/games/registry.js";
|
|
@@ -11,7 +12,7 @@ export default defineAgentTool({
|
|
|
11
12
|
const runtime = context.use(lotteryRuntimeToken);
|
|
12
13
|
const gid = parseGameId(game);
|
|
13
14
|
if (!gid)
|
|
14
|
-
return
|
|
15
|
+
return t(context.locale, 'invalidGame');
|
|
15
16
|
const lim = Math.min(30, count || 10);
|
|
16
17
|
return JSON.stringify(await loadDraws(runtime.db, gid, lim));
|
|
17
18
|
},
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { messages as t } from '../../../../src/i18n.js';
|
|
1
2
|
import { defineAgentTool } from '@zhin.js/tool';
|
|
2
3
|
import { z } from 'zod';
|
|
3
4
|
import { parseGameId } from '../../../../src/games/registry.js';
|
|
@@ -10,7 +11,7 @@ export default defineAgentTool<{ game: string; count?: number }>({
|
|
|
10
11
|
async execute({ game, count }, context) {
|
|
11
12
|
const runtime = context.use(lotteryRuntimeToken);
|
|
12
13
|
const gid = parseGameId(game);
|
|
13
|
-
if (!gid) return
|
|
14
|
+
if (!gid) return t(context.locale, 'invalidGame');
|
|
14
15
|
const lim = Math.min(30, count || 10);
|
|
15
16
|
return JSON.stringify(await loadDraws(runtime.db, gid, lim));
|
|
16
17
|
},
|
|
@@ -7,6 +7,6 @@ export default defineAgentTool({
|
|
|
7
7
|
description: 'Save a pending lottery prediction',
|
|
8
8
|
inputSchema: z.object({ game: z.string().min(1), numbers_json: z.string().min(1) }),
|
|
9
9
|
async execute({ game, numbers_json }, context) {
|
|
10
|
-
return handleSavePrediction(context.use(lotteryRuntimeToken), game, numbers_json);
|
|
10
|
+
return handleSavePrediction(context.use(lotteryRuntimeToken), game, numbers_json, context.locale);
|
|
11
11
|
},
|
|
12
12
|
});
|
|
@@ -7,6 +7,6 @@ export default defineAgentTool<{ game: string; numbers_json: string }>({
|
|
|
7
7
|
description: 'Save a pending lottery prediction',
|
|
8
8
|
inputSchema: z.object({ game: z.string().min(1), numbers_json: z.string().min(1) }),
|
|
9
9
|
async execute({ game, numbers_json }, context) {
|
|
10
|
-
return handleSavePrediction(context.use(lotteryRuntimeToken), game, numbers_json);
|
|
10
|
+
return handleSavePrediction(context.use(lotteryRuntimeToken), game, numbers_json, context.locale);
|
|
11
11
|
},
|
|
12
12
|
});
|
|
@@ -7,6 +7,6 @@ export default defineAgentTool({
|
|
|
7
7
|
description: 'Get stats snapshot for a lottery game',
|
|
8
8
|
inputSchema: z.object({ game: z.string().min(1) }),
|
|
9
9
|
async execute({ game }, context) {
|
|
10
|
-
return handleStatsSnapshot(context.use(lotteryRuntimeToken), game);
|
|
10
|
+
return handleStatsSnapshot(context.use(lotteryRuntimeToken), game, context.locale);
|
|
11
11
|
},
|
|
12
12
|
});
|
|
@@ -7,6 +7,6 @@ export default defineAgentTool<{ game: string }>({
|
|
|
7
7
|
description: 'Get stats snapshot for a lottery game',
|
|
8
8
|
inputSchema: z.object({ game: z.string().min(1) }),
|
|
9
9
|
async execute({ game }, context) {
|
|
10
|
-
return handleStatsSnapshot(context.use(lotteryRuntimeToken), game);
|
|
10
|
+
return handleStatsSnapshot(context.use(lotteryRuntimeToken), game, context.locale);
|
|
11
11
|
},
|
|
12
12
|
});
|
|
@@ -10,7 +10,7 @@ export default defineAgentTool({
|
|
|
10
10
|
async execute({ game }, context) {
|
|
11
11
|
const runtime = context.use(lotteryRuntimeToken);
|
|
12
12
|
const gid = parseGameId(game ?? '');
|
|
13
|
-
const result = await runDataSync(() => runtime.db, () => [...runtime.enabledGames], runtime.config.historyLimit, gid ?? undefined);
|
|
13
|
+
const result = await runDataSync(() => runtime.db, () => [...runtime.enabledGames], runtime.config.historyLimit, gid ?? undefined, context.locale);
|
|
14
14
|
return JSON.stringify({ result });
|
|
15
15
|
},
|
|
16
16
|
});
|
package/src/command-helpers.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
1
2
|
import {
|
|
2
3
|
lotteryEnabledGames,
|
|
3
4
|
lotteryKl8,
|
|
@@ -10,9 +11,11 @@ import { formatPipelineReply, runLotteryPipeline, type PipelineDeps } from './pi
|
|
|
10
11
|
export function buildPipelineDeps(
|
|
11
12
|
raw: Partial<LotteryConfig> | undefined,
|
|
12
13
|
db: LotteryDb,
|
|
14
|
+
locale?: Locale,
|
|
13
15
|
): PipelineDeps {
|
|
14
16
|
const config = resolveLotteryConfig(raw);
|
|
15
17
|
return {
|
|
18
|
+
locale,
|
|
16
19
|
db,
|
|
17
20
|
enabledGames: () => lotteryEnabledGames(config),
|
|
18
21
|
historyLimit: config.historyLimit,
|
package/src/evaluate/backtest.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
2
|
+
import { messages as t } from '../i18n.js';
|
|
1
3
|
import type { GameId } from '../types.js';
|
|
2
4
|
import { loadDraws, type LotteryDb } from '../db.js';
|
|
3
5
|
|
|
@@ -102,24 +104,24 @@ function signedPct(delta: number): string {
|
|
|
102
104
|
return v >= 0 ? `+${v.toFixed(1)}` : v.toFixed(1);
|
|
103
105
|
}
|
|
104
106
|
|
|
105
|
-
export function formatBacktestLine(s: BacktestSummary): string {
|
|
107
|
+
export function formatBacktestLine(s: BacktestSummary, locale?: Locale): string {
|
|
106
108
|
const w = formatWeights(s.finalWeights);
|
|
107
109
|
return [
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
t(locale, 'backtestAdaptive', { game: s.gameId, rate: pct(s.adaptiveAvgHitRate) }),
|
|
111
|
+
t(locale, 'backtestFixed', { rate: pct(s.fixedAvgHitRate) }),
|
|
112
|
+
t(locale, 'backtestRandom', { rate: pct(s.randomAvgHitRate) }),
|
|
113
|
+
t(locale, 'backtestDelta', { delta: signedPct(s.adaptiveVsRandom), count: s.periods, warmup: s.warmupPeriods }),
|
|
114
|
+
t(locale, 'finalWeights', { weights: w }),
|
|
113
115
|
].join(' / ');
|
|
114
116
|
}
|
|
115
117
|
|
|
116
|
-
export function formatBacktestSection(summaries: BacktestSummary[]): string {
|
|
118
|
+
export function formatBacktestSection(summaries: BacktestSummary[], locale?: Locale): string {
|
|
117
119
|
if (!summaries.length) return '';
|
|
118
120
|
const lines = [
|
|
119
|
-
|
|
120
|
-
...summaries.map(formatBacktestLine),
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
t(locale, 'backtestTitle'),
|
|
122
|
+
...summaries.map(summary => formatBacktestLine(summary, locale)),
|
|
123
|
+
t(locale, 'backtestNote'),
|
|
124
|
+
t(locale, 'backtestFallback'),
|
|
123
125
|
];
|
|
124
126
|
return lines.join('\n');
|
|
125
127
|
}
|
package/src/evaluate/tracker.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
2
|
+
import { messages as t } from '../i18n.js';
|
|
1
3
|
import { DEFAULT_WEIGHTS, type DrawNumbers, type GameId, type GamePick, type HitSummary, type NormalizedDraw, type ScoreWeights, type AccuracySnapshot } from '../types.js';
|
|
2
4
|
|
|
3
5
|
import { loadDraws, parseStoredJson, type LotteryDb } from '../db.js';
|
|
@@ -267,12 +269,12 @@ export async function loadAgentMemory(db: LotteryDb, gameId?: string, limit = 20
|
|
|
267
269
|
.slice(0, limit);
|
|
268
270
|
}
|
|
269
271
|
|
|
270
|
-
export async function formatReviewReport(db: LotteryDb, gameId?: GameId): Promise<string> {
|
|
272
|
+
export async function formatReviewReport(db: LotteryDb, gameId?: GameId, locale?: Locale): Promise<string> {
|
|
271
273
|
const predModel = db.models.get(PREDICTIONS_TABLE);
|
|
272
274
|
const memModel = db.models.get(MEMORY_TABLE);
|
|
273
|
-
if (!predModel) return '
|
|
275
|
+
if (!predModel) return t(locale, 'dbNotReady');
|
|
274
276
|
const games: GameId[] = gameId ? [gameId] : ['kl8', 'ssq', 'dlt', 'fc3d', 'pl3', 'pl5'];
|
|
275
|
-
const lines = ['
|
|
277
|
+
const lines = [t(locale, 'reviewTitle'), ''];
|
|
276
278
|
for (const gid of games) {
|
|
277
279
|
const weights = await loadGameWeights(db, gid);
|
|
278
280
|
const snap = await loadAccuracySnapshot(db, gid);
|
|
@@ -285,15 +287,15 @@ export async function formatReviewReport(db: LotteryDb, gameId?: GameId): Promis
|
|
|
285
287
|
const recent = [...preds]
|
|
286
288
|
.sort((a, b) => (b.evaluated_at ?? '').localeCompare(a.evaluated_at ?? ''))
|
|
287
289
|
.slice(0, 5);
|
|
288
|
-
lines.push(
|
|
290
|
+
lines.push(t(locale, 'reviewModel', { game: gid, weights: formatWeights(weights) }));
|
|
289
291
|
if (snap) {
|
|
290
|
-
lines.push(
|
|
292
|
+
lines.push(t(locale, 'reviewRate', { count: snap.evalCount, rate: (snap.avgHitRate * 100).toFixed(1) }));
|
|
291
293
|
} else {
|
|
292
|
-
lines.push('
|
|
294
|
+
lines.push(t(locale, 'reviewEmpty'));
|
|
293
295
|
}
|
|
294
296
|
for (const p of recent) {
|
|
295
297
|
const h = parseStoredJson<HitSummary>(p.hit_summary, { total: 0, hits: 0, rate: 0, detail: '-' });
|
|
296
|
-
lines.push(
|
|
298
|
+
lines.push(t(locale, 'reviewDraw', { issue: p.actual_issue, detail: h.detail, rate: (h.rate * 100).toFixed(0) }));
|
|
297
299
|
if (p.analysis?.trim()) lines.push(` ${p.analysis.trim()}`);
|
|
298
300
|
}
|
|
299
301
|
lines.push('');
|
|
@@ -301,7 +303,7 @@ export async function formatReviewReport(db: LotteryDb, gameId?: GameId): Promis
|
|
|
301
303
|
if (memModel) {
|
|
302
304
|
const mem = await loadAgentMemory(db, gameId, 5);
|
|
303
305
|
if (mem.length) {
|
|
304
|
-
lines.push(
|
|
306
|
+
lines.push(t(locale, 'agentMemory'));
|
|
305
307
|
for (const m of mem as Array<{ game_id?: string; content?: string; memory_type?: string }>) {
|
|
306
308
|
lines.push(`- [${m.game_id || 'global'}/${m.memory_type}] ${m.content}`);
|
|
307
309
|
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { Locale } from 'zhin.js/i18n';
|
|
2
|
+
import { messages as t } from '../i18n.js';
|
|
1
3
|
import { DEFAULT_WEIGHTS, type GameId, type ScoreWeights } from '../types.js';
|
|
2
4
|
|
|
3
5
|
import { loadDraws, type LotteryDb } from '../db.js';
|
|
@@ -110,25 +112,25 @@ function signedPct(delta: number): string {
|
|
|
110
112
|
return v >= 0 ? `+${v.toFixed(1)}` : v.toFixed(1);
|
|
111
113
|
}
|
|
112
114
|
|
|
113
|
-
export function formatTrainLine(r: TrainWeightsResult): string {
|
|
115
|
+
export function formatTrainLine(r: TrainWeightsResult, locale?: Locale): string {
|
|
114
116
|
const init = formatWeights(r.initialWeights);
|
|
115
117
|
const fin = formatWeights(r.finalWeights);
|
|
116
|
-
const fallback = r.holdoutFallbackApplied ?
|
|
118
|
+
const fallback = r.holdoutFallbackApplied ? t(locale, 'trainFallback') : '';
|
|
117
119
|
return [
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
t(locale, 'trainGame', { game: r.gameId, steps: r.trainSteps, first: r.firstScoredIssue, last: r.lastScoredIssue, fallback }),
|
|
121
|
+
t(locale, 'trainHit', { adaptive: pct(r.adaptiveAvgHitRate), fixed: pct(r.fixedAvgHitRate), random: pct(r.randomAvgHitRate) }),
|
|
122
|
+
t(locale, 'trainDelta', { delta: signedPct(r.adaptiveVsRandom) }),
|
|
123
|
+
t(locale, 'trainWeights', { initial: init, final: fin }),
|
|
122
124
|
].join('\n ');
|
|
123
125
|
}
|
|
124
126
|
|
|
125
|
-
export function formatTrainReport(results: TrainWeightsResult[]): string {
|
|
126
|
-
if (!results.length) return '
|
|
127
|
+
export function formatTrainReport(results: TrainWeightsResult[], locale?: Locale): string {
|
|
128
|
+
if (!results.length) return t(locale, 'trainEmpty');
|
|
127
129
|
const lines = [
|
|
128
|
-
|
|
129
|
-
...results.map(formatTrainLine),
|
|
130
|
+
t(locale, 'trainTitle'),
|
|
131
|
+
...results.map(result => formatTrainLine(result, locale)),
|
|
130
132
|
'',
|
|
131
|
-
|
|
133
|
+
t(locale, 'trainNote'),
|
|
132
134
|
];
|
|
133
135
|
return lines.join('\n');
|
|
134
136
|
}
|
package/src/games/kl8-groups.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { resolveLocale, type Locale } from 'zhin.js/i18n';
|
|
2
|
+
import { messages as t } from '../i18n.js';
|
|
1
3
|
import { DEFAULT_WEIGHTS, type DrawNumbers, type Kl8GroupStrategy, type Kl8PickGroup, type NormalizedDraw, type ScoreWeights } from '../types.js';
|
|
2
4
|
|
|
3
5
|
import { pickTopUnique, scorePool, type PoolScore } from '../stats/engine.js';
|
|
@@ -70,6 +72,7 @@ export function recommendKl8Groups(
|
|
|
70
72
|
strategies: Kl8GroupStrategy[];
|
|
71
73
|
tieSeed: string;
|
|
72
74
|
baseWeights: ScoreWeights;
|
|
75
|
+
locale?: Locale;
|
|
73
76
|
},
|
|
74
77
|
): RecommendKl8GroupsResult {
|
|
75
78
|
const rows = poolDraws(draws, (n) => n.main ?? []);
|
|
@@ -86,7 +89,7 @@ export function recommendKl8Groups(
|
|
|
86
89
|
groups.push({
|
|
87
90
|
index: i + 1,
|
|
88
91
|
strategy,
|
|
89
|
-
label:
|
|
92
|
+
label: t(options.locale, `strategy.${strategy}`),
|
|
90
93
|
numbers: main,
|
|
91
94
|
weights,
|
|
92
95
|
});
|