|
808
|
124
|
2
|
5
|
|
0
|
feat: add review invitation guardrail to manager c feat: add review invitation guardrail to manager cockpit (SCO11)...
|
## 内容
- **SCO11 评价邀请话术护栏**:五类演示规则(诱导好评、利益换评价、删改差评 ## 内容
- **SCO11 评价邀请话术护栏**:五类演示规则(诱导好评、利益换评价、删改差评、截图回传、施压),先规整全角、空格、符号再匹配防绕过;总部独立审核,审核时复查;邀请任务只能用已审核版本完成
- **CLN04 遗失物品**(远程运营台 → 事件与售后)
- 保洁只能从本人进行中的保洁单登记,范围限清洁可见区域
- 运营确认保管,贵重物品入加锁柜,保管链留痕
- 凭同包厢订单或人工依据认领,只存打码电话
- 移交本人、代领(证件除外)、警方或平台;到期处置不能由登记人操作
- **MKT01 活动计划**:客群、门店、责任人、周期、停止条件在批准前必填(草稿可不完整,兼容持久化服务的创建调用);周期外或非适用门店拒绝预约与投放
- **测试证据**:11 项只有模块、没有测试的需求补 45 条测试;GRP06 拼团无代码,改判为未实现;各项"已证明 / 仍缺"见 `docs/acceptance-unimplemented.md`
- **任务包状态**:新增 `ops/sync-package-status.mjs`,从验收矩阵算出状态,写入开发计划追踪和任务包矩阵(文档 22),带 `--check`
## 验证
- 原型测试 255/256:唯一失败是缺 `dist` 构建产物的打包测试
- 服务端可独立运行的测试 363/366:3 个失败是本工作区未编译框架 `dist`,与本改动无关
- `node ops/check-acceptance.mjs --check`、`node ops/sync-package-status.mjs --check`、`python3 scripts/verify-development-plan.py` 均通过
- 矩阵:127 项部分实现、2 项未实现(GAM05、GRP06)、83 项外部依赖、0 签认
- 浏览器验证:话术拦截与审核、遗失物品全流程、活动计划缺项拦截与批准
## 注意
- 话术规则、保管期 30 天、停止条件均为演示参数,待 D35 和门店政策确认
- 合并后如果再改源文件或测试:先运行 `node ops/sync-package-status.mjs`,再运行 `node ops/check-acceptance.mjs` 重新生成矩阵
🤖 Generated with [Claude Code](https://claude.com/claude-code)...
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1791470731
|
1791510657
|
1791510657
|
0
|
0
|
0
|
Edit
Delete
|
|
807
|
124
|
1
|
5
|
|
0
|
feat: add store manager cockpit prototype (tasks, feat: add store manager cockpit prototype (tasks, board, leaderboard)...
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1791453499
|
1791453507
|
1791453507
|
0
|
0
|
0
|
Edit
Delete
|
|
806
|
121
|
4
|
5
|
|
0
|
untracked files on codex/resource-health-axis: 5ef untracked files on codex/resource-health-axis: 5ef0d78 feat(integration): prepare trusted external SalesOrder fact inbox...
|
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1790675336
|
1790675336
|
0
|
0
|
0
|
0
|
Edit
Delete
|
|
805
|
121
|
3
|
5
|
|
0
|
untracked files on codex/resource-health-axis: f0f untracked files on codex/resource-health-axis: f0ff3df docs(scope): 重梳 V1.0 三图与31章开发缺口...
|
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1790675329
|
1790675330
|
0
|
0
|
0
|
0
|
Edit
Delete
|
|
804
|
121
|
2
|
5
|
|
0
|
feat(work): gate Task on latest confirmed Outcome
|
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1790675319
|
1790675319
|
0
|
0
|
0
|
0
|
Edit
Delete
|
|
803
|
121
|
1
|
5
|
|
0
|
wip(K3.3): PolicyDefinition — preserved snapshot o wip(K3.3): PolicyDefinition — preserved snapshot of uncommitted work (base 0.71, not for merge)...
|
Preservation snapshot (R0, 2026-09-29) of work tha Preservation snapshot (R0, 2026-09-29) of work that only existed as uncommitted changes in a /tmp worktree.
Nothing here was verified by this commit: no tests were ever written for it and it was not run against a database.
What the snapshot contains:
- sql/072_policy_definition.sql: governance.policy_definition_version (EXECUTION_AUTHORIZATION with maxTtlSeconds),
a ten-state lifecycle, immutable content, one ACTIVE version per tenant and type, FORCE RLS; also replaces the
authority_assignment action CHECK with governance.manage_policy / governance.approve_policy added. The file header
is a copy of the K3.2 header.
- src/contexts/policy-definition.js: the PolicyDefinition commands (create, validate, request review, approve,
reject, publish, activate, deprecate, retire, revoke) with self-approval denial and authority checks.
- registrations in commands.js, owner-roles.js, rejection-target.js, kernel.js, catalog and the payload / event
contracts.
Known state when preserved:
- Based on 0490b8e (0.71). Main is 0.103.x with migrations up to 095; 072 already exists there
(072_task_case_correlation_immutable), so the migration must be renumbered, and kernel.js / catalog / contracts
will need a real rebase.
- Missing for the slice: tests, contract document, smoke, and the binding of a GovernanceDecision to the active
policy version with drift rejection (K3.3b).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>...
|
0
|
0
|
0
|
1
|
0
|
|
0
|
1790675308
|
1790675308
|
0
|
0
|
0
|
0
|
Edit
Delete
|
|
802
|
18
|
229
|
1
|
|
0
|
需求 服务评价推送判断 16807
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790070662
|
1790070680
|
1790070680
|
0
|
0
|
0
|
Edit
Delete
|
|
801
|
18
|
228
|
1
|
|
0
|
需求 服务评价推送判断 16807
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790070596
|
1790070608
|
1790070608
|
0
|
0
|
0
|
Edit
Delete
|
|
800
|
22
|
113
|
1
|
|
0
|
营业状态
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790070519
|
1790070525
|
1790070525
|
0
|
0
|
0
|
Edit
Delete
|
|
799
|
22
|
112
|
1
|
|
0
|
需求 安全巡检 16865
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790070503
|
1790070509
|
1790070509
|
0
|
0
|
0
|
Edit
Delete
|
|
798
|
23
|
62
|
1
|
|
0
|
客户满意度批量作废确定弹窗
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790070070
|
1790070081
|
1790070081
|
0
|
0
|
0
|
Edit
Delete
|
|
797
|
23
|
61
|
1
|
|
0
|
客户满意度批量作废确定弹窗
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790070042
|
1790070050
|
1790070050
|
0
|
0
|
0
|
Edit
Delete
|
|
796
|
21
|
341
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790069854
|
1790069874
|
1790069874
|
0
|
0
|
0
|
Edit
Delete
|
|
795
|
21
|
340
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790069822
|
1790069834
|
1790069834
|
0
|
0
|
0
|
Edit
Delete
|
|
794
|
22
|
111
|
1
|
|
0
|
营业状态
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790066516
|
1790066522
|
1790066522
|
0
|
0
|
0
|
Edit
Delete
|
|
793
|
22
|
110
|
1
|
|
0
|
营业状态
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790066497
|
1790066506
|
1790066506
|
0
|
0
|
0
|
Edit
Delete
|
|
792
|
18
|
227
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790066467
|
1790066477
|
1790066477
|
0
|
0
|
0
|
Edit
Delete
|
|
791
|
18
|
226
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1790066451
|
1790066458
|
1790066458
|
0
|
0
|
0
|
Edit
Delete
|
|
790
|
116
|
1
|
5
|
|
0
|
fix(contracts): 注册中心规则补失败关闭与摘要规范化——三个入口此前抛 TypeErr fix(contracts): 注册中心规则补失败关闭与摘要规范化——三个入口此前抛 TypeError,同一摘要的两种写法此前分叉成两个复核键...
|
蓝图 docs/domain/registry-snapshot-blueprint.md 从迁入起 蓝图 docs/domain/registry-snapshot-blueprint.md 从迁入起就写着「失败关闭」与
「review key 仅用于人工复核幂等」两条不变量,实测三处不成立。本次按蓝图自己的口径补齐,
改动只在 contracts/src/domain/application-contract-registry/:不新增写入点、不新增宿主、
不动 Catalog 与 Schema,每条输出仍固定 activationAllowed=false / registryWriteAllowed=false /
humanApprovalRequired=true。
1. 失败关闭:assessRegistrySnapshot / assessRegistryTransition /
reviewCandidateSnapshotUpgrade 对畸形输入抛 TypeError(快照缺字段、now 不是 Date、
decisions 整个缺失都会抛),四个入口里只有 LocalManifestAdmissionPlanner.plan 是
失败关闭的。现四个入口一致返回 REJECT + 原因码。这不是洁癖:check-fixtures 把抛出当
配置错误处理,实测一次 TypeError 会让整套 15 例逐例判定塌成一条 configuration 失败。
2. 十六进制引用规范化:digest / commit 的正则带 /i 收大小写两种写法,比较与入键却
大小写敏感——同一摘要写成大写会得到另一个 reviewIdempotencyKey,同版本大小写翻转被判成
SAME_VERSION_DIGEST_CHANGED,大写回滚 pin 被判成 ROLLBACK_PIN_MUST_MATCH_CURRENT。
现一律规范化为小写后再比较、再入键,ACCEPT 回吐规范化后的值。
3. 版本文法收敛:一个模块三套(快照流与清单准入用 \d+\.\d+\.\d+,升级复核用严格 SemVer),
新增 registry-primitives.ts 作单一来源,含预发布序;DEC-009—012 此前在两份文件各写一份,
一并收敛。snapshot-upgrade-review.ts 因此净减约 60 行重复实现。
两处语义变化(蓝图新增一节已如实登记):
- 收紧:1.02.0 这类前导零版本此前被放行,现在拒;assessRegistrySnapshot 另开始拒 latest
这类可变标签——此前它能过体检却必然过不了迁移规则。
- 放宽:1.0.0-rc.1 这类预发布版本此前被快照流整条挡在外面,现在按 SemVer 序参与迁移。
平台自己发的就是 1.0.0-rc.N,升级复核那一侧本来就这么判。风险面有限:本模块所有出口
都不激活、不写 Registry,多进人工复核队列不等于多放行制品。
证据(本分支隔离工作树,clean):注册中心单测 44/44(原 34 + 加固 10);
contracts check:local 302/302;check:fixtures 九个契约域套件 100 例 0 失败,
其中本套件 15 例(正 4 / 反 11,原 8 例)。篡改必红实测两次:sameHexRef 退回大小写敏感
→ 单测 1 红 + 夹具 P03 红;去掉快照入口守卫 → 整套塌成 0 例 1 配置失败。
仍为仓内候选 sdk_e2,不代表正式 Registry、Snapshot 发布或跨仓 Required Check 已上线。
清单登记的 C01.04 / C01.06 是「接线」型缺口且前置 Q01 运行宿主未裁,本次未动。
reports/fixtures.latest.json 未回绑:它是 17 套件的聚合报告,只跑 9 个套件去覆盖会缩小结论面,
应在整批(含并行会话的 public-file / IM / 跨域流程改动)落定后统一重跑回绑。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>...
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789742918
|
1790248458
|
1789742925
|
0
|
0
|
0
|
Edit
Delete
|
|
789
|
18
|
225
|
1
|
|
0
|
需求 服务评价推送判断 16807
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789718563
|
1790070571
|
1790070571
|
0
|
0
|
0
|
Edit
Delete
|
|
788
|
23
|
60
|
1
|
|
0
|
需求 回访任务批量作废 16852
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789718392
|
1789718403
|
1789718403
|
0
|
0
|
0
|
Edit
Delete
|
|
787
|
22
|
109
|
1
|
|
0
|
需求 直播间配置不设置 16817
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789718351
|
1789718357
|
1789718357
|
0
|
0
|
0
|
Edit
Delete
|
|
786
|
21
|
339
|
1
|
|
0
|
需求 麦霸直播间不判断配置
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789718159
|
1789718167
|
1789718167
|
0
|
0
|
0
|
Edit
Delete
|
|
785
|
22
|
108
|
1
|
|
0
|
转房同步一品多态库存
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789449617
|
1789449622
|
1789449622
|
0
|
0
|
0
|
Edit
Delete
|
|
784
|
22
|
107
|
1
|
|
0
|
转房同步一品多态库存
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789449601
|
1789449608
|
1789449608
|
0
|
0
|
0
|
Edit
Delete
|
|
783
|
21
|
338
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789441226
|
1789441236
|
1789441236
|
0
|
0
|
0
|
Edit
Delete
|
|
782
|
21
|
337
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789441207
|
1789441214
|
1789441214
|
0
|
0
|
0
|
Edit
Delete
|
|
781
|
23
|
59
|
1
|
|
0
|
包厢续费小程序码
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789436596
|
1789436624
|
1789436624
|
0
|
0
|
0
|
Edit
Delete
|
|
780
|
23
|
58
|
1
|
|
0
|
包厢续费小程序码
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789436552
|
1789436571
|
1789436571
|
0
|
0
|
0
|
Edit
Delete
|
|
779
|
21
|
336
|
1
|
|
0
|
包厢续费小程序码
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789436483
|
1789436492
|
1789436492
|
0
|
0
|
0
|
Edit
Delete
|
|
778
|
21
|
335
|
1
|
|
0
|
包厢续费小程序码
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789436449
|
1789436456
|
1789436456
|
0
|
0
|
0
|
Edit
Delete
|
|
777
|
18
|
224
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789436390
|
1789436408
|
1789436408
|
0
|
0
|
0
|
Edit
Delete
|
|
776
|
18
|
223
|
1
|
|
0
|
11111
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789436327
|
1789436336
|
1789436336
|
0
|
0
|
0
|
Edit
Delete
|
|
775
|
22
|
106
|
1
|
|
0
|
订单支付不再更新备用单号,避免导致其他问题。有支付失败就让重新下单支付。
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789436281
|
1789436286
|
1789436286
|
0
|
0
|
0
|
Edit
Delete
|
|
774
|
22
|
105
|
1
|
|
0
|
订单支付不再更新备用单号,避免导致其他问题。有支付失败就让重新下单支付。
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1789436266
|
1789436271
|
1789436271
|
0
|
0
|
0
|
Edit
Delete
|
|
772
|
23
|
57
|
1
|
|
0
|
1111
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788426774
|
1788426780
|
1788426780
|
0
|
0
|
0
|
Edit
Delete
|
|
771
|
23
|
56
|
1
|
|
0
|
1111
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788426740
|
1788426764
|
1788426764
|
0
|
0
|
0
|
Edit
Delete
|
|
770
|
85
|
7
|
4
|
|
0
|
[Skill] build-complete 新增接口文档归档步骤
|
Related to #8
## 说明
在 `build-complete` skill 里新增 Related to #8
## 说明
在 `build-complete` skill 里新增一步:Plan 阶段确定接口设计后、代码开发完成时,如涉及新增/修改接口,需要生成并归档接口文档:
- Apifox(规范化 OpenAPI 文档,Claude 通过 API 增量导入)
- `docs/frontend-specs/<功能名>.md`(面向其他端的对接说明文档,固定五章结构)
背景:issue #4 实现完成后发现接口文档一直没有归档,靠事后补做;这次把它固化成流程里的正式一步,插在"提交 plan.md"和"开代码 PR"之间。
同时补充了代码仓库与 jh-project 分离时的注意事项(milestone/label 可能不存在、Close #N 跨仓库不生效)。...
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788247386
|
1789379900
|
1788247940
|
0
|
1
|
0
|
Edit
Delete
|
|
769
|
24
|
2
|
4
|
|
0
|
[Web前端] 按省市统计设备月度新增上线数量报表
|
## 关联 Issue
Related to laiqiaojie/jh-project#5
Re ## 关联 Issue
Related to laiqiaojie/jh-project#5
Related to laiqiaojie/jh-project#8 — 按省市统计设备月度新增上线数量报表(Web 前端)
## 变更说明
- 新增 页面组件
- 省份视图:横向柱状图展示各省份当月新增上线设备数,点击下钻城市
- 城市视图:横向柱状图展示选定省份各城市分布,面包屑返回全国
- 使用 CSS 自定义 bar(不引入 ECharts),保持项目依赖不变
- 更新 :注册 device_online_stats 组件
- 更新 :新增 路由规则
- **修复** : 在父菜单 为空时拼出 双斜杠,导致路由匹配失败
- **修复** : 同一根因的双斜杠问题
## 测试说明
- 月份切换后图表重新加载
- 点击省份柱子进入城市视图,面包屑显示「全国 › XX省」
- 点击「全国」/「返回全国」返回省份视图
- 无数据月份显示空状态
- 点击「数据」顶部菜单 → 侧栏「设备上线分布」→ 组件正常渲染(已端到端验证)
## DB 变更(需手动执行)
## 产物归档
- Plan:(在 jh-project 仓库)
- 设计文档:
🤖 Generated with [Claude Code](https://claude.com/claude-code)...
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788247154
|
1789379914
|
1789377273
|
0
|
3
|
0
|
Edit
Delete
|
|
768
|
85
|
6
|
4
|
|
0
|
[Plan] 按省市统计设备月度新增上线数量报表 (后台管理)
|
Related to #8
## 关联 Issue
[#4 — [后台] 按省市统计设备月度新增 Related to #8
## 关联 Issue
[#4 — [后台] 按省市统计设备月度新增上线数量报表](https://gitea.g-hi.com/laiqiaojie/jh-project/issues/4)
## 说明
补交 Plan 阶段产物(此前误提交到已合并关闭的 design 分支,未能进入 main,见此 PR 重新提交)。
代码已实现并提交:[laiqiaojie/admin#1](https://gitea.g-hi.com/laiqiaojie/admin/pulls/1)
按 REVIEW.md「跳过评审的路径」,`plan/` 产物文件不需要 Tech Lead 单独审核,随此 PR 直接入库。...
|
0
|
0
|
1
|
1
|
1
|
|
0
|
1788245555
|
1789379899
|
1788245966
|
0
|
1
|
0
|
Edit
Delete
|
|
767
|
24
|
1
|
4
|
|
0
|
[后台管理] 按省市统计设备月度新增上线数量报表
|
## 关联 Issue
Close #4 — [后台] 按省市统计设备月度新增上线数量报表
(I ## 关联 Issue
Close #4 — [后台] 按省市统计设备月度新增上线数量报表
(Issue 位于另一仓库 laiqiaojie/jh-project,Gitea 跨仓库 `Close #N` 不会自动关联,merge 后需手动去 jh-project 更新 Issue 状态)
## 变更说明
- 新增 `DeviceOnlineStats` 控制器,暴露 `getProvinceStats`(按月+省份汇总新增上线设备数)、`getCityStats`(指定省份后按城市下钻)两个接口
- `Ahead_authenticate_log_model` 新增对应查询方法:联表 `ahead_authenticate_log` → `ahead_family_servers` → `ahead_yc_shop`,权限过滤复用现有 `Ahead_manage_user_model::check_is_agent()`(超管看全国,运营商强制按 `shop._agent_id` 过滤)
- 与 plan.md 的偏差:实现与计划一致;另外在 `/code-review` 中发现并修复了两个问题(均已回归验证):
- `month` 参数只校验格式未校验取值范围,如 `2026-00` 会被 `strtotime` 静默接受为上一年 12 月而不报错 → 正则改为 `(0[1-9]|1[0-2])` 严格校验月份范围
- 未绑定门店的设备(`room._shop_id` 为 0/未匹配)会被计入 `total` 但在 `GROUP BY shop._province` 时产生一个 province 为 null 的脏分组 → 加 `room._shop_id > 0` 过滤
## 测试说明
- 本地起 PHPStudy,登录后手动调用两个接口验证:正常月份返回 `{code:0, result:{total, list}}`;缺 `month`/非法月份(`2026-00`、`2026-13`、`0000-00`)均正确返回 400
- 用只读 SQL 直接查了云端开发库确认 JOIN 链路正确——本地测试库 `ahead_authenticate_log` 表只有 1 条 2021 年的历史数据,所以当月查询返回空列表是预期行为,不是 bug
- `tests/api/smoke.mjs` 里补充了对应的自动化用例,但该冒烟测试框架整体依赖另一个尚未推送到 `admin` 分支的提交(`694e34c`,属于另一项未提交的工作,不在本 Issue 范围内),为保持本 PR 改动范围干净,本次未包含测试框架文件,仅代码改动
- 需要 Tech Lead 重点看:`check_is_agent()` 权限过滤范围是否符合预期;`room._shop_id > 0` 过滤是否会误伤合法数据
## 产物归档
- Plan:[plan/device-online-stats-by-region-admin.md](https://gitea.g-hi.com/laiqiaojie/jh-project/src/branch/design/device-online-stats-by-region/plan/device-online-stats-by-region-admin.md)(位于 laiqiaojie/jh-project 仓库)
...
|
0
|
0
|
1
|
1
|
1
|
|
0
|
1788244598
|
1788246926
|
1788245236
|
0
|
0
|
0
|
Edit
Delete
|
|
766
|
18
|
222
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788242921
|
1789436302
|
1789436302
|
0
|
0
|
0
|
Edit
Delete
|
|
765
|
18
|
221
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788242867
|
1788242879
|
1788242879
|
0
|
0
|
0
|
Edit
Delete
|
|
764
|
21
|
334
|
1
|
|
0
|
需求 分账
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788242824
|
1788242831
|
1788242831
|
0
|
0
|
0
|
Edit
Delete
|
|
763
|
21
|
333
|
1
|
|
0
|
需求 分账
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788242773
|
1788242779
|
1788242779
|
0
|
0
|
0
|
Edit
Delete
|
|
762
|
22
|
104
|
1
|
|
0
|
预订看板偶发乱序
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788242546
|
1788242551
|
1788242551
|
0
|
0
|
0
|
Edit
Delete
|
|
761
|
22
|
103
|
1
|
|
0
|
1
|
|
0
|
0
|
1
|
1
|
0
|
|
0
|
1788242517
|
1788242534
|
1788242534
|
0
|
0
|
0
|
Edit
Delete
|
|
758
|
85
|
3
|
4
|
|
0
|
[Design] 按省市统计设备月度新增上线数量报表
|
Related to #8
## 关联 Intent
[PR #1 — 按省市统计设备月度新增上 Related to #8
## 关联 Intent
[PR #1 — 按省市统计设备月度新增上线数量报表](https://gitea.g-hi.com/laiqiaojie/jh-project/pulls/1)
---
## PM 确认原型
**需求说明文档:**
[design/device-online-stats-by-region.md](https://gitea.g-hi.com/laiqiaojie/jh-project/src/branch/design/device-online-stats-by-region/design/device-online-stats-by-region.md)
**在线原型(点击直接打开,可交互,无需登录):**
https://claude.ai/code/artifact/b50eaa98-689b-4742-8024-cdf74f95d5c8
**页面状态:**
- 全国省份视图 — 月份筛选器 + 当月总数卡片 + 各省份横向柱状图
- 城市下钻视图 — 点击省份柱子进入,面包屑「全国 › 广东省」+ 城市排行
**交互流程:** 点击省份柱子进入城市视图,点击面包屑「全国」或「返回全国」按钮返回。
**审核 checklist:**
- [ ] 页面布局和组件符合预期?
- [ ] 交互路径(下钻、返回)正确?
- [ ] 数据定义(新增上线 = 首次上线,归属 = 门店注册地址)理解一致?
- [ ] 权限范围(超管看全国,运营商看自己区域)正确?
**确认方式:在本 PR 评论「原型确认 ✅」,然后 Approve + Merge**...
|
1
|
0
|
1
|
1
|
0
|
|
0
|
1787829439
|
1789379899
|
1787908921
|
0
|
7
|
0
|
Edit
Delete
|
|
757
|
85
|
2
|
4
|
|
0
|
[Design] 按省市统计设备月度新增上线数量报表
|
## 关联 Intent
[PR #1 — 按省市统计设备月度新增上线数量报表](https:// ## 关联 Intent
[PR #1 — 按省市统计设备月度新增上线数量报表](https://gitea.g-hi.com/laiqiaojie/jh-project/pulls/1)
---
## 审核顺序:PM 先确认原型,再由 Tech Lead Approve
---
## 第一步:PM 确认原型
**原型文件:**
(从仓库拉取后浏览器直接双击打开,可点击交互)
页面状态:
- 全国省份视图 — 月份筛选器 + 当月总数卡片 + 各省份横向柱状图
- 城市下钻视图 — 点击省份柱子进入,面包屑「全国 › 广东省」+ 城市排行
交互流程:点击省份柱子进入城市视图,点击面包屑「全国」或「返回全国」按钮返回。
**PM 审核 checklist:**
- [ ] 页面布局和组件符合预期?
- [ ] 交互路径(下钻、返回)正确?
- [ ] 数据定义(新增上线 = 首次激活,归属 = 门店地址)理解一致?
- [ ] 权限范围(超管看全国,运营商看自己区域)正确?
**PM 确认方式:在本 PR 评论「原型确认 ✅」即可,无需 Approve**
---
## 第二步:Tech Lead 审核(PM 确认后进行)
**数据链路:**
> 待确认:ahead_family_servers._shop_id 是否关联 ahead_yc_shop._id,Build 阶段查库验证。
**新增接口(新建控制器 DeviceOnlineReport.php):**
- POST /DeviceOnlineReport/getStats — 省份排行 + 当月总数
- POST /DeviceOnlineReport/getCityStats — 城市下钻
**权限:** agent_id 从 session 取,= 0 为超管不过滤
**安全:** month 正则校验、province_id intval()、agent_id 不信任前端
**Tech Lead 审核 checklist:**
- [ ] 数据链路正确?表关联关系有无误判?
- [ ] 接口设计合理?参数和响应格式符合规范?
- [ ] 权限处理方式正确?
- [ ] 安全检查要点覆盖?
- [ ] 前端方案可行(ECharts 按需引入)?
**Tech Lead Approve → Merge → 评审会议(里程碑内所有需求一起)→ Plan 阶段**...
|
1
|
0
|
1
|
1
|
0
|
|
0
|
1787824027
|
1789379887
|
1787829412
|
0
|
3
|
0
|
Edit
Delete
|
|
756
|
85
|
1
|
4
|
|
0
|
[Intent] 按省市统计设备月度新增上线数量报表
|
Related to #8
## 需求摘要
在「数据报表 > 设备分析」下新增报表,按月筛 Related to #8
## 需求摘要
在「数据报表 > 设备分析」下新增报表,按月筛选展示各省份新激活上线设备数量柱状图排行,支持下钻到城市维度。
## 核心决策
- 统计口径:当月**新激活**上线设备(首次上线,取 ahead_authenticate_log 表的 create_time 字段)
- 地区归属:取设备绑定**门店地址**的省/市字段
- 交互方式:点击省份**下钻**到城市排行(非 Tab 切换)
- 权限:跟随现有 agent_id 角色体系,超管看全国,运营商看自己区域
## 不在范围内
- 不做 Excel 导出
- 不做地图热力图
- 不做区/县级别
- 不做跨月趋势
## 产物文件
[intent/device-online-stats-by-region.md](https://gitea.g-hi.com/laiqiaojie/jh-project/src/branch/intent/device-online-stats-by-region/intent/device-online-stats-by-region.md)
## PM 审核清单(参考 REVIEW.md)
- [ ] 需求背景和问题描述是否准确反映了原始诉求?
- [ ] 期望结果是否可验证?
- [ ] 不在范围内的排除项是否合理?
- [ ] 受影响系统判断是否正确(admin / ahead_authenticate_log)?
- [ ] 本次是否接受排期,进入 Design 阶段?...
|
1
|
0
|
1
|
1
|
2
|
|
0
|
1787817232
|
1789379898
|
1787823622
|
0
|
5
|
0
|
Edit
Delete
|