feat(phase3): 备案对接/全国统计/号段管理/BFF安全化/链合约源码
- A.1 备案对接: BindFiling/QueryFiling 关联网标号+备案号 - A.2 监管上报: DailyRegulatoryReport 日报 - B.1 号段管理: ListSegments + /admin/segments - C.1/C.2 全国统计按省聚合 + 跨省协同(单一可信源天然联动) - F.2 全国监管大屏: NationalStats(按省/类目/状态) - B(遗留) 监管大屏BFF: internal/bff + cmd/console-bff, 密钥仅存后端浏览器只用会话令牌 - G 真实链合约源码: contracts/tcs_registry/registry.go (ChainMaker Go) - 新增9个API+BFF服务; 5项新测试; 端到端BFF验证 - D/E(压测/等保/HSM)/F.1(标准)/真实链部署 标注需外部环境
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/tcs-iptv/tcs/internal/chain"
|
||||
"github.com/tcs-iptv/tcs/internal/macode"
|
||||
)
|
||||
|
||||
func newServiceSX(t *testing.T) *Service {
|
||||
t.Helper()
|
||||
gen := macode.NewGenerator(macode.NewMemoryStore())
|
||||
require.NoError(t, gen.RegisterSegment(macode.Segment{
|
||||
IndustryNode: "8531", OrgNode: "6101", // 陕西
|
||||
Category: macode.CategoryMicroDrama, Start: 1, End: 100, SeqWidth: 7,
|
||||
}))
|
||||
return New(chain.NewMemoryChain(), gen)
|
||||
}
|
||||
|
||||
func issueSX(t *testing.T, s *Service) string {
|
||||
t.Helper()
|
||||
sub := sampleSub()
|
||||
r, _ := s.SubmitForReview(sub)
|
||||
require.NoError(t, s.ReviewCSPS(r.ReviewID, true, "rv"))
|
||||
iss, err := s.ApproveAndIssue(chain.RoleRegulator, r.ReviewID, "陕西IPTV运营公司")
|
||||
require.NoError(t, err)
|
||||
return iss.MACode
|
||||
}
|
||||
|
||||
func TestBindFiling(t *testing.T) {
|
||||
s := newServiceSX(t)
|
||||
ma := issueSX(t, s)
|
||||
rec, err := s.BindFiling(ma, "(陕)网微剧审字(2026)第001号", "备案2026001")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "(陕)网微剧审字(2026)第001号", rec.LicenseNo)
|
||||
|
||||
got, ok := s.QueryFiling(ma)
|
||||
assert.True(t, ok)
|
||||
assert.Equal(t, "备案2026001", got.FilingNo)
|
||||
}
|
||||
|
||||
func TestNationalStats(t *testing.T) {
|
||||
s := newServiceSX(t)
|
||||
ma1 := issueSX(t, s)
|
||||
sub2 := sampleSub()
|
||||
sub2.FileHash = "fh2"
|
||||
sub2.MerkleRoot = "mr2"
|
||||
r2, _ := s.SubmitForReview(sub2)
|
||||
require.NoError(t, s.ReviewCSPS(r2.ReviewID, true, "rv"))
|
||||
_, _ = s.ApproveAndIssue(chain.RoleRegulator, r2.ReviewID, "陕西IPTV")
|
||||
_, _ = s.Takedown(chain.RoleRegulator, ma1, "违规")
|
||||
|
||||
st, err := s.NationalStats()
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 2, st.TotalContents)
|
||||
assert.Equal(t, 1, st.ByStatus["revoked"])
|
||||
// 陕西省统计
|
||||
sx := st.ByProvince["陕西"]
|
||||
assert.Equal(t, "6101", sx.OrgNode)
|
||||
assert.Equal(t, 2, sx.Total)
|
||||
assert.Equal(t, 1, sx.Revoked)
|
||||
// 类目统计
|
||||
assert.Equal(t, 2, st.ByCategory["WD"])
|
||||
}
|
||||
|
||||
func TestListSegments(t *testing.T) {
|
||||
s := newServiceSX(t)
|
||||
segs := s.ListSegments()
|
||||
require.NotEmpty(t, segs)
|
||||
assert.Equal(t, "6101", segs[0].OrgNode)
|
||||
assert.Equal(t, uint64(100), segs[0].Capacity)
|
||||
}
|
||||
|
||||
func TestDailyRegulatoryReport(t *testing.T) {
|
||||
s := newServiceSX(t)
|
||||
_ = issueSX(t, s)
|
||||
rep, err := s.DailyRegulatoryReport("2026-06-14")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, 1, rep.TotalNew)
|
||||
assert.Equal(t, 1, rep.LevelDist["WD"])
|
||||
}
|
||||
Reference in New Issue
Block a user