Files
lotteryLaravel/AGENTS.md
kang 980f3c9593 feat: enhance agent settlement features and improve data access controls
- Added new section in AGENTS.md detailing learned workspace facts for better understanding of settlement processes.
- Updated AgentNodeDestroyController to remove unnecessary checks for admin users.
- Enhanced AgentSettlement controllers to assert permissions for finance adjustments and bill operations.
- Improved query scopes in AgentSettlement services to ensure proper data access based on admin roles.
- Refactored methods in SettlementPartyEnrichment for better bill row enrichment and data handling.
- Introduced new methods in AdminAgentSettlementScope for managing agent node visibility and finance adjustments.
2026-06-12 15:59:05 +08:00

49 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# lotterLaravel — Agent 须知
## 数据库:禁止擅自清空
**未经用户明确同意,不得执行:**
| 禁止 | 说明 |
|------|------|
| `php artisan migrate:fresh` | 删表重建,业务数据全失 |
| `php artisan db:wipe` | 清空所有表 |
| `php -r` / 脚本中的 `migrate:fresh``db:wipe` | 易误连 `.env` 开发库(如 `pgsql` / `lottery` |
**可以做的:** `php artisan migrate`(增量)、`php artisan test`(走 `phpunit.xml` 的 SQLite 内存库)。
用户明确要求 `migrate:fresh` 时:先说明目标库名与数据将全部丢失,待用户确认后再执行。
详见 `.cursor/rules/database-destructive-commands.mdc`
## 后台 RBAC
`app/Support/AdminAuthorizationRegistry.php` 后,在已有库执行 `php artisan lottery:admin-auth-sync --audit`(见 `docs/admin-rbac.md`)。`migrate:fresh --seed` 会走迁移内的 resync一般不必再手动 sync。
## 双模式玩家(主站钱包 / 代理信用)
- `players.auth_source``main_site_sso`(主站 JWT`lottery_native`(彩票端账号密码)。
- `players.funding_mode``wallet`(主站划转)与 `credit`(授信下注);**禁止**仅用整站 `credit_line_mode` 代替玩家级判断,用 `PlayerFundingMode::usesCredit($player)`
- 生产环境配置独立 `LOTTERY_NATIVE_JWT_SECRET`(勿与主站 SSO 混用)。
## 信用占成盘(代理账期结算)
- 业务真理源:`docs/信用占成盘代理系统设计说明文档.md`;实施路线:`docs/信用占成盘代理体系改造计划.md`
- **代理账期**代码包:`App\Services\AgentSettlement\`(勿与彩票开奖 `App\Services\Settlement\` / `SettlementBatch` 混用)。
- **禁止**在生产关账路径使用 `DesignDocExample12` 硬编码账单;仅单元/Feature 测试可引用。
-`testing` 环境关账受 `AGENT_SETTLEMENT_ALLOW_PRODUCTION_CLOSE`(默认 `true`)控制;预发可设为 `false` 门禁。
- 占成账单聚合必须读注单**快照**`share_snapshot`),禁止按当前 `agent_profiles` 重算历史。
## Learned Workspace Facts
- 期号 `close_time` / `draw_time` 以 UTC 存储与比较;后台展示转浏览器本地时区,创建/编辑表单提交前须转回 UTC。
- 下注是否开放由 `DrawHallSnapshotBuilder::isBettingOpen()` / `effectiveHallDisplayStatus()` 实时判定,不只看 `draws.status`
- 后台期号列表展示数据库 `status`;详情 API 另提供 `hall_preview_status` 供与大厅预览态对比。
- 绑定经营代理主账号统一绑平台角色 `slug=agent`,模板仅含 `prd.settlement.agent.view`;登录态对 **所有绑定代理主账号** 自动补足 `settlement.agent.manage``AgentProfileCapabilityFilter`),实际操作仍受直属边 + 收款方校验。
- 结算中心登记收付/确认/坏账/补差 UI 需 `prd.settlement.agent.manage``canManage`);仅 view 时操作区静默隐藏。另需账单 `status` ∈ confirmed/partial_paid/overdue 且 `unpaid_amount > 0`。**坏账核销 / 补差冲正** 另需未绑定代理(站点财务,`canFinanceAdjustments`),绑定代理仅有收付/确认。
- 结算账单可见范围(绑定代理):**玩家账单**仅直属玩家;**代理账单**仅 `owner=本节点``counterparty=本节点`(不含下级玩家的账单、不含更深层代理链)。**账务流水/账期 pipeline** 的玩家维度同样仅直属玩家。站点财务/超管仍见全站。
- 登记收付/确认:绑定代理仅可操作 **收款方**(玩家账单=直属 counterparty代理账单=按 net_amount 方向的 payee。上级不能代登下级玩家收付下级也不能代登向上级的代理账单。
- 收付/调账/坏账后端落库 `payment_records``settlement_adjustments`;账期详情 **收付与调账** Tab 查操作台账,**账务流水** 仅玩家信用变动;单张账单详情内另有该账单的收付列表。
- 代理仪表盘/账期列表「输赢」用本级占成(`share_profit`),不可看 `platform_pnl` 全站报表。
- 开/关账期仅未绑定代理的站点财务(`canManagePeriods = canOperateBills && boundAgent === null`)。