Files
Jyotisha/tests/test_conversational_rectification_postgres_runtime.py
T
2026-07-21 14:16:54 +08:00

2260 lines
81 KiB
Python
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.
import json
import hashlib
import os
import subprocess
import tempfile
from concurrent.futures import ThreadPoolExecutor
from dataclasses import dataclass
from pathlib import Path
import pytest
ROOT = Path(__file__).resolve().parents[1]
MIGRATIONS = ROOT / "frontend" / "supabase" / "migrations"
PG14_BIN_CANDIDATES = (
Path(os.environ.get("PG14_BIN", "/path/that/does/not/exist")),
Path("/opt/homebrew/opt/postgresql@14/bin"),
Path("/usr/local/opt/postgresql@14/bin"),
)
def _postgres_14_bin() -> Path | None:
for candidate in PG14_BIN_CANDIDATES:
initdb = candidate / "initdb"
if not initdb.is_file():
continue
version = subprocess.run(
[str(initdb), "--version"],
check=False,
capture_output=True,
text=True,
)
if version.returncode == 0 and " 14." in version.stdout:
return candidate
return None
PG14_BIN = _postgres_14_bin()
pytestmark = pytest.mark.skipif(PG14_BIN is None, reason="PostgreSQL 14 binaries are unavailable")
@dataclass(frozen=True)
class PgDatabase:
bin_dir: Path
socket_dir: Path
port: int
def command(self, *extra: str) -> list[str]:
return [
str(self.bin_dir / "psql"),
"-X",
"-v",
"ON_ERROR_STOP=1",
"-h",
str(self.socket_dir),
"-p",
str(self.port),
"-U",
"postgres",
"-d",
"postgres",
*extra,
]
def sql(self, statement: str) -> str:
completed = subprocess.run(
self.command("-A", "-t", "-q", "-c", statement),
check=False,
capture_output=True,
text=True,
errors="replace",
)
assert completed.returncode == 0, completed.stderr
return completed.stdout.strip()
def rejects(self, statement: str) -> bool:
completed = subprocess.run(
self.command("-A", "-t", "-q", "-c", statement),
check=False,
capture_output=True,
text=True,
errors="replace",
)
return completed.returncode != 0
@pytest.fixture(scope="module")
def pg14_database() -> PgDatabase:
assert PG14_BIN is not None
with tempfile.TemporaryDirectory(
prefix="rectification-pg14-",
dir="/private/tmp",
) as temporary_root:
root = Path(temporary_root)
data_dir = root / "data"
socket_dir = root / "socket"
socket_dir.mkdir()
port = 55439
init = subprocess.run(
[
str(PG14_BIN / "initdb"),
"-D",
str(data_dir),
"-A",
"trust",
"-U",
"postgres",
"--no-locale",
"-E",
"UTF8",
],
check=False,
capture_output=True,
text=True,
)
assert init.returncode == 0, f"{init.stdout}\n{init.stderr}"
start = subprocess.run(
[
str(PG14_BIN / "pg_ctl"),
"-D",
str(data_dir),
"-l",
str(root / "postgres.log"),
"-o",
f"-F -k {socket_dir} -p {port} -c listen_addresses=''",
"-w",
"start",
],
check=False,
capture_output=True,
text=True,
)
assert start.returncode == 0, f"{start.stdout}\n{start.stderr}"
database = PgDatabase(PG14_BIN, socket_dir, port)
try:
database.sql(
"""
create role anon nologin;
create role authenticated nologin;
create role service_role nologin;
create schema auth;
create table auth.users (
id uuid primary key,
email text
);
create function auth.uid() returns uuid
language sql stable set search_path = ''
as 'select null::uuid';
create function auth.jwt() returns jsonb
language sql stable set search_path = ''
as 'select ''{}''::jsonb';
"""
)
for migration in sorted(MIGRATIONS.glob("*.sql")):
applied = subprocess.run(
database.command("-q", "-f", str(migration)),
check=False,
capture_output=True,
text=True,
)
assert applied.returncode == 0, f"{migration.name}:\n{applied.stderr}"
yield database
finally:
subprocess.run(
[str(PG14_BIN / "pg_ctl"), "-D", str(data_dir), "-m", "fast", "-w", "stop"],
check=False,
capture_output=True,
text=True,
)
def _jsonb(value: object) -> str:
encoded = json.dumps(value, ensure_ascii=False, separators=(",", ":")).replace("'", "''")
return f"'{encoded}'::jsonb"
def _text(value: str) -> str:
return "'" + value.replace("'", "''") + "'"
def _create_user(database: PgDatabase, user_id: str, credits: int = 20) -> None:
database.sql(
f"""
insert into auth.users (id, email)
values ('{user_id}'::uuid, 'synthetic@example.invalid');
update public.profiles
set credits = {credits},
birth_date = '1990-01-01',
active_birth_time = '04:58',
birth_time = '04:58',
country_code = 'TW',
province_code = 'TPE',
city_code = 'TPE-CITY',
district_code = 'DAAN',
latitude = 25.0268,
longitude = 121.5434,
timezone_offset = 8
where id = '{user_id}'::uuid;
"""
)
def _reserve(database: PgDatabase, user_id: str, action_id: str, price: int = 3) -> dict[str, object]:
result = database.sql(
f"""
select row_to_json(reservation)::text
from public.reserve_conversational_rectification_fee(
'{user_id}'::uuid,
'{action_id}'::uuid,
0,
'{action_id}'::uuid,
{price}
) reservation;
"""
)
return json.loads(result)
def _valid_declared_birth_input() -> dict[str, object]:
return {
"birthDate": "1990-01-01",
"reportedTime": "05:20",
"source": "approximate",
"birthTimeClue": "synthetic dawn clue",
"uncertaintyBeforeMinutes": 30,
"uncertaintyAfterMinutes": 30,
"birthplace": {
"countryCode": "TW",
"provinceCode": "TPE",
"cityCode": "TPE-CITY",
"districtCode": "DAAN",
"latitude": 25.0268,
"longitude": 121.5434,
"timezoneOffset": 8,
},
}
def _valid_turn(case_id: str) -> dict[str, object]:
return {
"caseId": case_id,
"journeyProtocol": "conversational-evidence-v3",
"status": "active",
"turnVersion": 0,
"narrative": "Synthetic public narrative.",
"candidate": {
"status": "pending_validation",
"representativeTime": "05:21",
"rangeStart": "05:10",
"rangeEnd": "05:30",
},
"technicalReceipt": {
"calculationVersion": "rectification-v3.1",
"stableLayers": ["D1"],
"sensitiveLayers": ["D9"],
"candidateDifferenceRefs": ["difference-1"],
},
"evidenceRequest": {
"domains": ["career", "relocation"],
"datePrecision": "month_preferred",
"freeTextAllowed": True,
},
"evidenceRecap": [],
"actions": ["answer", "pause", "abandon"],
"pendingConsultationQuestion": None,
}
def _valid_private_candidate() -> dict[str, object]:
return {
"resultId": "00000000-0000-4000-8000-000000000991",
"representativeTime": "05:21",
"rangeStart": "05:10",
"rangeEnd": "05:30",
"calculationVersion": "rectification-v3.1",
"candidateWeights": [0.6, 0.4],
"candidateModelRefs": ["model-1"],
"suggestedDomains": ["career", "relocation"],
}
def _create_case(
database: PgDatabase,
user_id: str,
action_id: str,
declared_birth_input: dict[str, object],
private_candidate: dict[str, object] | None = None,
revision_of_case_id: str | None = None,
) -> str:
return database.sql(
f"""
select public.create_conversational_rectification_case(
'{user_id}'::uuid,
'{action_id}'::uuid,
0,
'{action_id}'::uuid,
{"null" if revision_of_case_id is None else f"'{revision_of_case_id}'::uuid"},
null,
{_jsonb(declared_birth_input)},
{_jsonb(_valid_turn(action_id))},
{_jsonb({"modelId": "synthetic-model", "schemaValidated": True})},
{_jsonb(private_candidate or _valid_private_candidate())}
)::text;
"""
)
def _complete(database: PgDatabase, user_id: str, action_id: str, version: int = 0) -> dict[str, object]:
result = database.sql(
f"""
select row_to_json(completion)::text
from public.complete_conversational_rectification_fee(
'{user_id}'::uuid,
'{action_id}'::uuid,
{version},
'{action_id}'::uuid
) completion;
"""
)
return json.loads(result)
def _save_statement(
user_id: str,
case_id: str,
expected_version: int,
action_id: str,
evidence: list[dict[str, object]],
*,
turn: dict[str, object] | None = None,
validation_receipt: dict[str, object] | None = None,
private_candidate: dict[str, object] | None = None,
command_fingerprint: str | None = None,
) -> str:
next_turn = turn or {
**_valid_turn(case_id),
"turnVersion": expected_version + 1,
}
return f"""
select public.save_conversational_rectification_turn(
'{user_id}'::uuid,
'{case_id}'::uuid,
{expected_version},
'{action_id}'::uuid,
{_jsonb(next_turn)},
{_jsonb(evidence)},
{_jsonb(validation_receipt or {"modelId": "synthetic-model", "schemaValidated": True})},
{_jsonb(private_candidate or _valid_private_candidate())},
{"null" if command_fingerprint is None else _text(command_fingerprint)}
)::text;
"""
def _create_legacy_case(database: PgDatabase, user_id: str, legacy_case_id: str) -> None:
database.sql(
f"""
insert into public.birth_time_rectification_cases (
id, user_id, status, reported_date, reported_time, source,
uncertainty_before_minutes, uncertainty_after_minutes, journey_protocol
) values (
'{legacy_case_id}'::uuid, '{user_id}'::uuid, 'rectifying',
'1990-01-01', '05:20', 'legacy_import', 0, 0, 'legacy-guided-v1'
);
update public.profiles
set rectification_case_id = '{legacy_case_id}'::uuid
where id = '{user_id}'::uuid;
"""
)
def _create_completed_handoff_case(
database: PgDatabase,
user_id: str,
case_id: str,
question: str,
) -> None:
_reserve(database, user_id, case_id)
first_turn = {
**_valid_turn(case_id),
"pendingConsultationQuestion": question,
}
database.sql(
f"""
select public.create_conversational_rectification_case(
'{user_id}'::uuid, '{case_id}'::uuid, 0, '{case_id}'::uuid,
null, {_text(question)}, {_jsonb(_valid_declared_birth_input())},
{_jsonb(first_turn)},
{_jsonb({"modelId": "synthetic-model", "schemaValidated": True})},
{_jsonb(_valid_private_candidate())}
)::text;
"""
)
_complete(database, user_id, case_id)
completed_turn = {
**first_turn,
"status": "completed",
"candidate": {**first_turn["candidate"], "status": "confirmed"},
"evidenceRequest": None,
"actions": ["continue_original_question"],
}
database.sql(
f"""
update public.birth_time_rectification_turns
set candidate = {_jsonb(completed_turn["candidate"])},
evidence_request = null,
actions = '["continue_original_question"]'::jsonb
where case_id = '{case_id}'::uuid and turn_version = 0;
update public.birth_time_rectification_cases
set status = 'completed',
turn_state = {_jsonb(completed_turn)},
journey_snapshot = {_jsonb(completed_turn)}
where id = '{case_id}'::uuid and user_id = '{user_id}'::uuid;
"""
)
def test_committed_pre_case_reservation_is_recovered_by_a_fresh_account_action(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000000901"
lost_action = "00000000-0000-4000-8000-000000000902"
fresh_action = "00000000-0000-4000-8000-000000000903"
_create_user(pg14_database, user_id, credits=10)
first = _reserve(pg14_database, user_id, lost_action)
assert first == {
"success": True,
"credits": 7,
"billing_state": "reserved",
"error_code": None,
}
assert pg14_database.sql(
f"select public.load_conversational_rectification_case('{user_id}'::uuid, null) is null"
) == "t"
recovered = _reserve(pg14_database, user_id, fresh_action)
assert recovered == first
accounting = json.loads(pg14_database.sql(
f"""
select jsonb_build_object(
'credits', profile.credits,
'oldState', old_billing.state,
'newState', new_billing.state,
'reserveCount', count(*) filter (where tx.transaction_type = 'reserve'),
'refundCount', count(*) filter (where tx.transaction_type = 'refund')
)::text
from public.profiles profile
join public.birth_time_rectification_billing old_billing
on old_billing.case_id = '{lost_action}'::uuid
join public.birth_time_rectification_billing new_billing
on new_billing.case_id = '{fresh_action}'::uuid
left join public.credit_transactions tx on tx.user_id = profile.id
where profile.id = '{user_id}'::uuid
group by profile.credits, old_billing.state, new_billing.state;
"""
))
assert accounting == {
"credits": 7,
"oldState": "released",
"newState": "reserved",
"reserveCount": 2,
"refundCount": 1,
}
assert _reserve(pg14_database, user_id, lost_action) == first
assert pg14_database.sql(
f"select count(*) from public.credit_transactions where user_id = '{user_id}'::uuid"
) == "3"
@pytest.mark.parametrize(
("user_id", "action_id", "declared"),
[
(
"00000000-0000-4000-8000-000000000911",
"00000000-0000-4000-8000-000000000912",
{
"birthDate": "1990-01-01",
"reportedTime": "05:20",
"source": "approximate",
"birthTimeClue": None,
"uncertaintyBeforeMinutes": 30,
"uncertaintyAfterMinutes": 30,
},
),
(
"00000000-0000-4000-8000-000000000921",
"00000000-0000-4000-8000-000000000922",
{**_valid_declared_birth_input(), "unknownField": True},
),
(
"00000000-0000-4000-8000-000000000931",
"00000000-0000-4000-8000-000000000932",
{
**_valid_declared_birth_input(),
"uncertaintyAfterMinutes": 60,
"birthplace": {**_valid_declared_birth_input()["birthplace"], "latitude": 91},
},
),
],
)
def test_invalid_declared_birth_input_is_rejected_before_case_persistence(
pg14_database: PgDatabase,
user_id: str,
action_id: str,
declared: dict[str, object],
) -> None:
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, action_id)
assert pg14_database.rejects(
f"""
select public.create_conversational_rectification_case(
'{user_id}'::uuid, '{action_id}'::uuid, 0, '{action_id}'::uuid,
null, null, {_jsonb(declared)}, {_jsonb(_valid_turn(action_id))},
{_jsonb({"modelId": "synthetic-model", "schemaValidated": True})},
{_jsonb(_valid_private_candidate())}
);
"""
)
assert pg14_database.sql(
f"select count(*) from public.birth_time_rectification_cases where id = '{action_id}'::uuid"
) == "0"
def test_valid_declared_birth_input_round_trips_across_account_load(pg14_database: PgDatabase) -> None:
user_id = "00000000-0000-4000-8000-000000000941"
action_id = "00000000-0000-4000-8000-000000000942"
declared = _valid_declared_birth_input()
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, action_id)
_create_case(pg14_database, user_id, action_id, declared)
loaded = json.loads(pg14_database.sql(
f"select public.load_conversational_rectification_case('{user_id}'::uuid, null)::text"
))
assert loaded["declared_birth_input"] == declared
def test_historical_receipt_replays_exact_public_response_after_later_turns(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000000943"
case_id = "00000000-0000-4000-8000-000000000944"
first_action = "00000000-0000-4000-8000-000000000945"
later_actions = (
"00000000-0000-4000-8000-000000000946",
"00000000-0000-4000-8000-000000000947",
)
first_fingerprint = "a" * 64
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, case_id)
_create_case(pg14_database, user_id, case_id, _valid_declared_birth_input())
_complete(pg14_database, user_id, case_id)
original = json.loads(pg14_database.sql(_save_statement(
user_id,
case_id,
0,
first_action,
[],
command_fingerprint=first_fingerprint,
)))
for version, action_id in enumerate(later_actions, start=1):
pg14_database.sql(_save_statement(
user_id,
case_id,
version,
action_id,
[],
command_fingerprint=str(version) * 64,
))
replayed = json.loads(pg14_database.sql(
f"""
select public.replay_conversational_rectification_action(
'{user_id}'::uuid, '{case_id}'::uuid, 0, '{first_action}'::uuid,
'save_turn', '{first_fingerprint}'
)::text;
"""
))
assert replayed == original
assert replayed["turn_version"] == 1
assert replayed["latest_turn"]["turnVersion"] == 1
assert pg14_database.rejects(
f"""
select public.replay_conversational_rectification_action(
'{user_id}'::uuid, '{case_id}'::uuid, 0, '{first_action}'::uuid,
'save_turn', '{'b' * 64}'
);
"""
)
privileges = json.loads(pg14_database.sql(
"""
select pg_catalog.jsonb_build_object(
'anon', pg_catalog.has_function_privilege(
'anon',
'public.replay_conversational_rectification_action(uuid,uuid,bigint,uuid,text,text)',
'EXECUTE'
),
'authenticated', pg_catalog.has_function_privilege(
'authenticated',
'public.replay_conversational_rectification_action(uuid,uuid,bigint,uuid,text,text)',
'EXECUTE'
),
'serviceRole', pg_catalog.has_function_privilege(
'service_role',
'public.replay_conversational_rectification_action(uuid,uuid,bigint,uuid,text,text)',
'EXECUTE'
)
)::text;
"""
))
assert privileges == {"anon": False, "authenticated": False, "serviceRole": True}
def test_overlapping_mutation_uses_command_identity(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000001041"
case_id = "00000000-0000-4000-8000-000000001042"
action_id = "00000000-0000-4000-8000-000000001043"
fingerprint = "c" * 64
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, case_id)
_create_case(pg14_database, user_id, case_id, _valid_declared_birth_input())
_complete(pg14_database, user_id, case_id)
original = json.loads(pg14_database.sql(_save_statement(
user_id,
case_id,
0,
action_id,
[],
command_fingerprint=fingerprint,
)))
alternate_turn = {
**_valid_turn(case_id),
"turnVersion": 1,
"narrative": "A different valid narrative derived by an overlapping request.",
}
replayed = json.loads(pg14_database.sql(_save_statement(
user_id,
case_id,
0,
action_id,
[],
turn=alternate_turn,
validation_receipt={"modelId": "alternate-model", "schemaValidated": True},
command_fingerprint=fingerprint,
)))
assert replayed == original
assert pg14_database.rejects(_save_statement(
user_id,
case_id,
0,
action_id,
[],
turn=alternate_turn,
command_fingerprint="d" * 64,
))
def test_handoff_claim_is_atomic_and_failure_then_success_settles_once(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000002101"
case_id = "00000000-0000-4000-8000-000000002102"
first_claim = "00000000-0000-4000-8000-000000002103"
second_claim = "00000000-0000-4000-8000-000000002104"
retry_claim = "00000000-0000-4000-8000-000000002105"
question = "未来半年是否适合换工作?"
fingerprint = hashlib.sha256(question.encode("utf-8")).hexdigest()
_create_user(pg14_database, user_id, credits=10)
_create_completed_handoff_case(pg14_database, user_id, case_id, question)
def claim(action_id: str) -> dict[str, object]:
return json.loads(pg14_database.sql(
f"""
select public.claim_conversational_rectification_handoff(
'{user_id}'::uuid, '{case_id}'::uuid, 0,
'{action_id}'::uuid, '{fingerprint}'
)::text;
"""
))
with ThreadPoolExecutor(max_workers=2) as pool:
results = list(pool.map(claim, (first_claim, second_claim)))
assert sorted(result["status"] for result in results) == ["claimed", "in_progress"]
winner_action = first_claim if results[0]["status"] == "claimed" else second_claim
request_id = next(result["requestId"] for result in results if result["status"] == "claimed")
assert results[0]["requestId"] == results[1]["requestId"]
execution = json.loads(pg14_database.sql(
f"""
select public.begin_conversational_rectification_handoff_execution(
'{user_id}'::uuid, '{case_id}'::uuid, 0, '{winner_action}'::uuid,
'{request_id}'::uuid, '{fingerprint}'
)::text;
"""
))
assert execution == {
"status": "ready",
"requestId": request_id,
"billingReused": False,
"credits": 7,
}
reserved = json.loads(pg14_database.sql(
f"""
select row_to_json(result)::text from public.begin_consultation_credit(
'{user_id}'::uuid, '{request_id}'
) result;
"""
))
assert reserved["success"] is True
assert reserved["credits"] == 6
released = json.loads(pg14_database.sql(
f"""
select public.settle_conversational_rectification_handoff(
'{user_id}'::uuid, '{case_id}'::uuid, '{winner_action}'::uuid,
'{request_id}'::uuid, false
)::text;
"""
))
assert released == {"status": "pending", "requestId": request_id, "credits": 7}
retry = claim(retry_claim)
assert retry["status"] == "claimed"
assert retry["requestId"] != request_id
retry_execution = json.loads(pg14_database.sql(
f"""
select public.begin_conversational_rectification_handoff_execution(
'{user_id}'::uuid, '{case_id}'::uuid, 0, '{retry_claim}'::uuid,
'{retry['requestId']}'::uuid, '{fingerprint}'
)::text;
"""
))
assert retry_execution["status"] == "ready"
assert json.loads(pg14_database.sql(
f"""
select row_to_json(result)::text from public.begin_consultation_credit(
'{user_id}'::uuid, '{retry['requestId']}'
) result;
"""
))["success"] is True
consumed = json.loads(pg14_database.sql(
f"""
select public.settle_conversational_rectification_handoff(
'{user_id}'::uuid, '{case_id}'::uuid, '{retry_claim}'::uuid,
'{retry['requestId']}'::uuid, true
)::text;
"""
))
assert consumed == {"status": "consumed", "requestId": retry["requestId"], "credits": 6}
state = json.loads(pg14_database.sql(
f"""
select jsonb_build_object(
'credits', profile.credits,
'pendingQuestion', c.pending_consultation_question,
'actions', t.actions,
'handoffState', h.state,
'consultations', (
select count(*) from public.consultation_requests r
where r.user_id = '{user_id}'::uuid and r.status = 'completed'
)
)::text
from public.profiles profile
join public.birth_time_rectification_cases c on c.user_id = profile.id
join public.birth_time_rectification_turns t
on t.case_id = c.id and t.turn_version = c.turn_version
join public.birth_time_rectification_question_handoffs h on h.case_id = c.id
where profile.id = '{user_id}'::uuid and c.id = '{case_id}'::uuid;
"""
))
assert state == {
"credits": 6,
"pendingQuestion": None,
"actions": [],
"handoffState": "consumed",
"consultations": 1,
}
late_claim = claim("00000000-0000-4000-8000-000000002106")
assert late_claim["status"] == "consumed"
assert late_claim["turn"]["pendingConsultationQuestion"] is None
replayed_execution = json.loads(pg14_database.sql(
f"""
select public.begin_conversational_rectification_handoff_execution(
'{user_id}'::uuid, '{case_id}'::uuid, 0, '{retry_claim}'::uuid,
'{retry['requestId']}'::uuid, '{fingerprint}'
)::text;
"""
))
assert replayed_execution == {
"status": "consumed",
"requestId": retry["requestId"],
}
def test_handoff_acl_and_attach_replacement_are_owner_locked(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000002111"
other_user_id = "00000000-0000-4000-8000-000000002112"
case_id = "00000000-0000-4000-8000-000000002113"
action_id = "00000000-0000-4000-8000-000000002114"
first_question = "旧问题"
replacement = "新的事业问题"
fingerprint = hashlib.sha256(replacement.encode("utf-8")).hexdigest()
_create_user(pg14_database, user_id)
_create_user(pg14_database, other_user_id)
_reserve(pg14_database, user_id, case_id)
first_turn = {**_valid_turn(case_id), "pendingConsultationQuestion": first_question}
pg14_database.sql(
f"""
select public.create_conversational_rectification_case(
'{user_id}'::uuid, '{case_id}'::uuid, 0, '{case_id}'::uuid,
null, {_text(first_question)}, {_jsonb(_valid_declared_birth_input())},
{_jsonb(first_turn)},
{_jsonb({"modelId": "synthetic-model", "schemaValidated": True})},
{_jsonb(_valid_private_candidate())}
);
"""
)
_complete(pg14_database, user_id, case_id)
replaced = json.loads(pg14_database.sql(
f"""
select public.attach_conversational_rectification_question(
'{user_id}'::uuid, '{case_id}'::uuid, 0, '{action_id}'::uuid,
{_text(replacement)}, '{fingerprint}'
)::text;
"""
))
assert replaced["pending_consultation_question"] == replacement
assert replaced["latest_turn"]["pendingConsultationQuestion"] == replacement
assert pg14_database.rejects(
f"""
select public.attach_conversational_rectification_question(
'{other_user_id}'::uuid, '{case_id}'::uuid, 0, '{action_id}'::uuid,
{_text(replacement)}, '{fingerprint}'
);
"""
)
privileges = json.loads(pg14_database.sql(
"""
select jsonb_build_object(
'anon', has_function_privilege(
'anon',
'public.claim_conversational_rectification_handoff(uuid,uuid,bigint,uuid,text)',
'EXECUTE'
),
'authenticated', has_function_privilege(
'authenticated',
'public.claim_conversational_rectification_handoff(uuid,uuid,bigint,uuid,text)',
'EXECUTE'
),
'serviceRole', has_function_privilege(
'service_role',
'public.claim_conversational_rectification_handoff(uuid,uuid,bigint,uuid,text)',
'EXECUTE'
)
)::text;
"""
))
assert privileges == {"anon": False, "authenticated": False, "serviceRole": True}
def test_expired_handoff_lease_reuses_the_reserved_request_without_double_billing(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000002121"
case_id = "00000000-0000-4000-8000-000000002122"
abandoned_claim = "00000000-0000-4000-8000-000000002123"
recovered_claim = "00000000-0000-4000-8000-000000002124"
question = "这次事业调整应该如何准备?"
fingerprint = hashlib.sha256(question.encode("utf-8")).hexdigest()
_create_user(pg14_database, user_id, credits=10)
_create_completed_handoff_case(pg14_database, user_id, case_id, question)
first_claim = json.loads(pg14_database.sql(
f"""
select public.claim_conversational_rectification_handoff(
'{user_id}'::uuid, '{case_id}'::uuid, 0,
'{abandoned_claim}'::uuid, '{fingerprint}'
)::text;
"""
))
request_id = first_claim["requestId"]
assert first_claim["status"] == "claimed"
assert json.loads(pg14_database.sql(
f"""
select public.begin_conversational_rectification_handoff_execution(
'{user_id}'::uuid, '{case_id}'::uuid, 0,
'{abandoned_claim}'::uuid, '{request_id}'::uuid, '{fingerprint}'
)::text;
"""
))["billingReused"] is False
assert json.loads(pg14_database.sql(
f"""
select row_to_json(result)::text from public.begin_consultation_credit(
'{user_id}'::uuid, '{request_id}'
) result;
"""
))["success"] is True
pg14_database.sql(
f"""
update public.birth_time_rectification_question_handoffs
set lease_expires_at = now() - interval '1 second'
where case_id = '{case_id}'::uuid and user_id = '{user_id}'::uuid;
"""
)
recovered = json.loads(pg14_database.sql(
f"""
select public.claim_conversational_rectification_handoff(
'{user_id}'::uuid, '{case_id}'::uuid, 0,
'{recovered_claim}'::uuid, '{fingerprint}'
)::text;
"""
))
assert recovered["status"] == "claimed"
assert recovered["requestId"] == request_id
execution = json.loads(pg14_database.sql(
f"""
select public.begin_conversational_rectification_handoff_execution(
'{user_id}'::uuid, '{case_id}'::uuid, 0,
'{recovered_claim}'::uuid, '{request_id}'::uuid, '{fingerprint}'
)::text;
"""
))
assert execution == {
"status": "ready",
"requestId": request_id,
"billingReused": True,
"credits": 6,
}
accounting = json.loads(pg14_database.sql(
f"""
select jsonb_build_object(
'credits', profile.credits,
'requests', count(distinct request.request_id),
'reserves', count(tx.id) filter (where tx.transaction_type = 'reserve')
)::text
from public.profiles profile
join public.consultation_requests request
on request.user_id = profile.id and request.request_id = '{request_id}'
left join public.credit_transactions tx
on tx.user_id = profile.id and tx.request_id = '{request_id}'
where profile.id = '{user_id}'::uuid
group by profile.credits;
"""
))
assert accounting == {"credits": 6, "requests": 1, "reserves": 1}
released = json.loads(pg14_database.sql(
f"""
select public.settle_conversational_rectification_handoff(
'{user_id}'::uuid, '{case_id}'::uuid, '{recovered_claim}'::uuid,
'{request_id}'::uuid, false
)::text;
"""
))
assert released == {"status": "pending", "requestId": request_id, "credits": 7}
def test_legacy_overlap_still_uses_full_derived_request(pg14_database: PgDatabase) -> None:
legacy_user_id = "00000000-0000-4000-8000-000000001051"
legacy_case_id = "00000000-0000-4000-8000-000000001052"
legacy_action_id = "00000000-0000-4000-8000-000000001053"
_create_user(pg14_database, legacy_user_id)
_reserve(pg14_database, legacy_user_id, legacy_case_id)
_create_case(
pg14_database,
legacy_user_id,
legacy_case_id,
_valid_declared_birth_input(),
)
_complete(pg14_database, legacy_user_id, legacy_case_id)
legacy_statement = _save_statement(
legacy_user_id,
legacy_case_id,
0,
legacy_action_id,
[],
)
legacy_original = json.loads(pg14_database.sql(legacy_statement))
assert json.loads(pg14_database.sql(legacy_statement)) == legacy_original
assert pg14_database.rejects(_save_statement(
legacy_user_id,
legacy_case_id,
0,
legacy_action_id,
[],
turn={
**_valid_turn(legacy_case_id),
"turnVersion": 1,
"narrative": "A different legacy-derived narrative must remain a conflict.",
},
))
def test_database_rejects_oversize_or_unknown_durable_json(pg14_database: PgDatabase) -> None:
user_id = "00000000-0000-4000-8000-000000000951"
action_id = "00000000-0000-4000-8000-000000000952"
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, action_id)
_create_case(pg14_database, user_id, action_id, _valid_declared_birth_input())
base_turn = _valid_turn(action_id)
boundary_turn = {
**base_turn,
"turnVersion": 1,
"technicalReceipt": {
**base_turn["technicalReceipt"],
"calculationVersion": "v" * 80,
},
"evidenceRecap": [
{
"id": "00000000-0000-4000-8000-000000000953",
"summary": "" * 1_000,
"dateLabel": "d" * 80,
}
],
}
pg14_database.sql(
f"""
begin;
insert into public.birth_time_rectification_turns (
case_id, turn_version, narrative, candidate, technical_receipt,
evidence_request, evidence_recap, actions, output_validation_receipt
) values (
'{action_id}'::uuid, 1, {_text(str(boundary_turn['narrative']))},
{_jsonb(boundary_turn['candidate'])}, {_jsonb(boundary_turn['technicalReceipt'])},
{_jsonb(boundary_turn['evidenceRequest'])}, {_jsonb(boundary_turn['evidenceRecap'])},
{_jsonb(boundary_turn['actions'])},
{_jsonb({'modelId': 'm' * 120, 'schemaValidated': True})}
);
update public.birth_time_rectification_cases
set candidate_result = {_jsonb({
**_valid_private_candidate(),
'candidateWeights': [0.5] * 1_440,
})}
where id = '{action_id}'::uuid;
rollback;
"""
)
invalid_turns = [
{**base_turn, "turnVersion": 1, "candidate": {**base_turn["candidate"], "extra": True}},
{
**base_turn,
"turnVersion": 1,
"technicalReceipt": {
**base_turn["technicalReceipt"],
"calculationVersion": "v" * 81,
},
},
{
**base_turn,
"turnVersion": 1,
"technicalReceipt": {
**base_turn["technicalReceipt"],
"calculationVersion": "v" * 80 + " ",
},
},
{
**base_turn,
"turnVersion": 1,
"evidenceRecap": [{
"id": "00000000-0000-4000-8000-000000000953",
"summary": "" * 1_001,
"dateLabel": "2020-01",
}],
},
]
for turn in invalid_turns:
assert pg14_database.rejects(
f"""
begin;
insert into public.birth_time_rectification_turns (
case_id, turn_version, narrative, candidate, technical_receipt,
evidence_request, evidence_recap, actions, output_validation_receipt
) values (
'{action_id}'::uuid, 1, {_text(str(turn['narrative']))},
{_jsonb(turn['candidate'])}, {_jsonb(turn['technicalReceipt'])},
{_jsonb(turn['evidenceRequest'])}, {_jsonb(turn['evidenceRecap'])},
{_jsonb(turn['actions'])},
{_jsonb({"modelId": "synthetic-model", "schemaValidated": True})}
);
rollback;
"""
)
assert pg14_database.rejects(
f"""
update public.birth_time_rectification_cases
set candidate_result = {_jsonb({
**_valid_private_candidate(),
"candidateWeights": [0.5] * 1_441,
})}
where id = '{action_id}'::uuid;
"""
)
assert pg14_database.rejects(
f"""
begin;
insert into public.birth_time_rectification_turns (
case_id, turn_version, narrative, candidate, technical_receipt,
evidence_request, evidence_recap, actions, output_validation_receipt
) values (
'{action_id}'::uuid, 1, 'Synthetic narrative',
{_jsonb(base_turn['candidate'])}, {_jsonb(base_turn['technicalReceipt'])},
{_jsonb(base_turn['evidenceRequest'])}, '[]'::jsonb,
{_jsonb(base_turn['actions'])},
{_jsonb({"modelId": "m" * 121, "schemaValidated": True})}
);
rollback;
"""
)
assert pg14_database.sql(
f"""
select public.conversational_rectification_valid_action_response(
{_jsonb({
"success": True,
"credits": 7,
"billing_state": "reserved",
"error_code": None,
"extra": "x" * 70_000,
})},
'reserve_fee'
)::text;
"""
) == "false"
assert pg14_database.rejects(
f"""
update public.birth_time_rectification_action_receipts
set request = request - 'caseId'
where user_id = '{user_id}'::uuid and action_kind = 'reserve_fee';
"""
)
assert pg14_database.rejects(
f"""
update public.birth_time_rectification_action_receipts
set response = pg_catalog.jsonb_set(
response, '{{error_code}}', {_jsonb('e' * 81)}, true
)
where user_id = '{user_id}'::uuid and action_kind = 'reserve_fee';
"""
)
def test_postgres_uses_the_shared_stable_numeric_boundary_vectors(
pg14_database: PgDatabase,
) -> None:
stable_vector = {
"zero": 0,
"minFraction": 0.000001,
"ieeeRoundingBoundary": 1.000001,
"decimal": 0.123456,
"maxSafe": 9_007_199_254_740_991,
}
numeric_result = pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'valid', public.conversational_rectification_numbers_are_stable({_jsonb(stable_vector)}),
'bytes', pg_catalog.octet_length(({_jsonb(stable_vector)})::text)
)::text;
"""
)
assert json.loads(numeric_result) == {"valid": True, "bytes": 120}
for invalid in (
{"nested": [{"score": 1e-7}]},
{"nested": [{"score": 1e-100}]},
{"nested": [{"score": 0.0000012}]},
{"nested": [{"score": 0.1234567}]},
{"nested": [{"score": 1_000_000.000001}]},
{"nested": [{"score": 9_007_199_254_740_992}]},
):
assert pg14_database.sql(
"select public.conversational_rectification_numbers_are_stable("
f"{_jsonb(invalid)})::text"
) == "false"
assert pg14_database.sql(
"select public.conversational_rectification_valid_private_candidate("
f"{_jsonb({**_valid_private_candidate(), 'candidateWeights': [1e-100]})})::text"
) == "false"
unstable_declared_input = {
**_valid_declared_birth_input(),
"birthplace": {
**_valid_declared_birth_input()["birthplace"],
"latitude": 1e-100,
},
}
assert pg14_database.sql(
"select public.conversational_rectification_valid_declared_birth_input("
f"{_jsonb(unstable_declared_input)})::text"
) == "false"
def test_json_text_validators_align_types_uuid_unicode_and_utf16(
pg14_database: PgDatabase,
) -> None:
case_id = "00000000-0000-4000-8000-000000000960"
turn = _valid_turn(case_id)
private_candidate = _valid_private_candidate()
unicode_whitespace = "\u00a0\u2007\ufeff"
canonical_uuid = "a9890e09-d535-46f0-9a36-86017515a5a1"
compact_uuid = canonical_uuid.replace("-", "")
uuid_result = json.loads(pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'lower', public.conversational_rectification_valid_uuid_text({_text(canonical_uuid)}),
'upper', public.conversational_rectification_valid_uuid_text({_text(canonical_uuid.upper())}),
'compact', public.conversational_rectification_valid_uuid_text({_text(compact_uuid)}),
'braced', public.conversational_rectification_valid_uuid_text({_text('{' + canonical_uuid + '}')})
)::text;
"""
))
assert uuid_result == {"lower": True, "upper": True, "compact": False, "braced": False}
invalid_turns = (
{**turn, "candidate": {**turn["candidate"], "status": None}},
{
**turn,
"technicalReceipt": {**turn["technicalReceipt"], "stableLayers": [None]},
},
{
**turn,
"technicalReceipt": {**turn["technicalReceipt"], "sensitiveLayers": [42]},
},
{
**turn,
"evidenceRequest": {**turn["evidenceRequest"], "domains": ["career", None]},
},
{
**turn,
"evidenceRequest": {**turn["evidenceRequest"], "datePrecision": None},
},
{**turn, "actions": [None]},
{**turn, "status": None},
{**turn, "narrative": unicode_whitespace},
{
**turn,
"evidenceRecap": [{
"id": compact_uuid,
"summary": "summary",
"dateLabel": "2020-01",
}],
},
)
for invalid in invalid_turns:
assert pg14_database.sql(
"select public.conversational_rectification_valid_public_turn("
f"{_jsonb(invalid)})::text"
) == "false"
invalid_private_candidates = (
{**private_candidate, "resultId": compact_uuid},
{**private_candidate, "suggestedDomains": ["career", None]},
{**private_candidate, "d1Stability": None},
{**private_candidate, "calculationVersion": unicode_whitespace},
{
**private_candidate,
"workingState": {"phase": "initial", "iteration": 0, "notes": [unicode_whitespace]},
},
{
**private_candidate,
"futureWindows": [{
"label": unicode_whitespace,
"startDate": "2020-01-01",
"endDate": "2020-01-02",
"scoreable": False,
}],
},
)
for invalid in invalid_private_candidates:
assert pg14_database.sql(
"select public.conversational_rectification_valid_private_candidate("
f"{_jsonb(invalid)})::text"
) == "false"
invalid_declared = {
**_valid_declared_birth_input(),
"birthTimeClue": unicode_whitespace,
"birthplace": {
**_valid_declared_birth_input()["birthplace"],
"city": unicode_whitespace,
},
}
assert pg14_database.sql(
"select public.conversational_rectification_valid_declared_birth_input("
f"{_jsonb(invalid_declared)})::text"
) == "false"
assert pg14_database.sql(
"select public.conversational_rectification_valid_validation_receipt("
f"{_jsonb({'modelId': unicode_whitespace, 'schemaValidated': True})})::text"
) == "false"
assert pg14_database.sql(
"select public.conversational_rectification_valid_action_response("
f"{_jsonb({'success': False, 'credits': 7, 'billing_state': None, 'error_code': unicode_whitespace})}, "
"'reserve_fee')::text"
) == "false"
assert pg14_database.sql(
"select public.conversational_rectification_text_utf16_length("
f"{_text('😀' * 40)})::text"
) == "80"
for model_id, expected in (("😀" * 60, "true"), ("😀" * 61, "false")):
assert pg14_database.sql(
"select public.conversational_rectification_valid_validation_receipt("
f"{_jsonb({'modelId': model_id, 'schemaValidated': True})})::text"
) == expected
def test_save_rejects_invalid_evidence_without_discarding_or_coercing_fields(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000000961"
case_id = "00000000-0000-4000-8000-000000000962"
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, case_id)
_create_case(pg14_database, user_id, case_id, _valid_declared_birth_input())
_complete(pg14_database, user_id, case_id)
evidence = {
"id": "00000000-0000-4000-8000-000000000963",
"rawText": "2019 年 7 月换工作",
"domain": "career",
"eventSummary": "换工作",
"dateValue": "2019-07",
"datePrecision": "month",
"extractionStatus": "clear",
"scoreable": True,
}
invalid_values = (
{**evidence, "unknown": "must not be discarded"},
{**evidence, "id": "not-a-uuid"},
{**evidence, "id": "00000000000040008000000000000001"},
{**evidence, "rawText": 42},
{**evidence, "domain": "finance"},
{**evidence, "eventSummary": " \t "},
{**evidence, "eventSummary": "\u00a0\u2007\ufeff"},
{**evidence, "dateValue": " \t "},
{**evidence, "datePrecision": "quarter"},
{**evidence, "extractionStatus": "guessed"},
{**evidence, "scoreable": None},
{**evidence, "scoreable": "true"},
)
for index, invalid in enumerate(invalid_values):
action_id = f"00000000-0000-4000-8000-{970 + index:012d}"
assert pg14_database.rejects(
_save_statement(user_id, case_id, 0, action_id, [invalid])
)
assert pg14_database.sql(
f"select count(*) from public.birth_time_rectification_event_evidence where case_id = '{case_id}'::uuid"
) == "0"
valid_without_optional_scoreable = {key: value for key, value in evidence.items() if key != "scoreable"}
pg14_database.sql(
_save_statement(
user_id,
case_id,
0,
"00000000-0000-4000-8000-000000000999",
[valid_without_optional_scoreable],
)
)
assert pg14_database.sql(
f"select scoreable::text from public.birth_time_rectification_event_evidence where case_id = '{case_id}'::uuid"
) == "false"
def test_correction_lineage_is_append_only_owner_scoped_and_rejects_retired_targets(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000001201"
case_id = "00000000-0000-4000-8000-000000001202"
first_action = "00000000-0000-4000-8000-000000001203"
second_action = "00000000-0000-4000-8000-000000001204"
third_action = "00000000-0000-4000-8000-000000001205"
rejected_action = "00000000-0000-4000-8000-000000001206"
missing_id = "00000000-0000-4000-8000-000000001207"
first_id = "00000000-0000-4000-8000-000000001211"
second_id = "00000000-0000-4000-8000-000000001212"
third_id = "00000000-0000-4000-8000-000000001213"
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, case_id)
_create_case(pg14_database, user_id, case_id, _valid_declared_birth_input())
_complete(pg14_database, user_id, case_id)
first = {
"id": first_id,
"rawText": "2019 年 7 月开始第一份工作",
"domain": "career",
"eventSummary": "开始第一份工作",
"dateValue": "2019-07",
"datePrecision": "month",
"extractionStatus": "clear",
"scoreable": True,
}
pg14_database.sql(_save_statement(
user_id,
case_id,
0,
first_action,
[first],
turn={
**_valid_turn(case_id),
"turnVersion": 1,
"evidenceRecap": [{
"id": first_id,
"summary": "开始第一份工作",
"dateLabel": "2019-07",
"isCorrection": False,
}],
},
))
loaded_first = json.loads(pg14_database.sql(
f"select public.load_conversational_rectification_case('{user_id}'::uuid, '{case_id}'::uuid)::text"
))
assert loaded_first["event_evidence"][0]["correctsEvidenceIds"] == []
second = {
"id": second_id,
"rawText": "更正:2020 年 11 月离职",
"domain": "career",
"eventSummary": "离职",
"dateValue": "2020-11",
"datePrecision": "month",
"extractionStatus": "corrected",
"scoreable": True,
"correctsEvidenceIds": [first_id],
}
pg14_database.sql(_save_statement(
user_id,
case_id,
1,
second_action,
[second],
turn={
**_valid_turn(case_id),
"turnVersion": 2,
"evidenceRecap": [{
"id": second_id,
"summary": "离职",
"dateLabel": "2020-11",
"isCorrection": True,
}],
},
))
for invalid_target in (missing_id, first_id):
rejected = {
**second,
"id": third_id,
"correctsEvidenceIds": [invalid_target],
}
assert pg14_database.rejects(_save_statement(
user_id,
case_id,
2,
rejected_action,
[rejected],
))
assert pg14_database.sql(
f"select turn_version::text from public.birth_time_rectification_cases where id = '{case_id}'::uuid"
) == "2"
assert pg14_database.sql(
f"select count(*)::text from public.birth_time_rectification_event_evidence where case_id = '{case_id}'::uuid"
) == "2"
third = {
**second,
"id": third_id,
"rawText": "更正:2021 年 2 月入职",
"eventSummary": "入职",
"dateValue": "2021-02",
"correctsEvidenceIds": [second_id],
}
pg14_database.sql(_save_statement(
user_id,
case_id,
2,
third_action,
[third],
turn={
**_valid_turn(case_id),
"turnVersion": 3,
"evidenceRecap": [{
"id": third_id,
"summary": "入职",
"dateLabel": "2021-02",
"isCorrection": True,
}],
},
))
loaded = json.loads(pg14_database.sql(
f"select public.load_conversational_rectification_case('{user_id}'::uuid, '{case_id}'::uuid)::text"
))
assert len(loaded["event_evidence"]) == 3
assert loaded["event_evidence"][1]["correctsEvidenceIds"] == [first_id]
assert loaded["event_evidence"][2]["correctsEvidenceIds"] == [second_id]
assert loaded["latest_turn"]["evidenceRecap"] == [{
"id": third_id,
"summary": "入职",
"dateLabel": "2021-02",
"isCorrection": True,
}]
def test_duplicate_correction_target_fails_atomically_without_advancing_any_durable_state(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000001401"
case_id = "00000000-0000-4000-8000-000000001402"
first_action = "00000000-0000-4000-8000-000000001403"
rejected_action = "00000000-0000-4000-8000-000000001404"
first_id = "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaa1411"
replacement_a = "00000000-0000-4000-8000-000000001412"
replacement_b = "00000000-0000-4000-8000-000000001413"
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, case_id)
_create_case(pg14_database, user_id, case_id, _valid_declared_birth_input())
_complete(pg14_database, user_id, case_id)
first = {
"id": first_id,
"rawText": "2019 年 7 月开始第一份工作",
"domain": "career",
"eventSummary": "开始第一份工作",
"dateValue": "2019-07",
"datePrecision": "month",
"extractionStatus": "clear",
"scoreable": True,
}
pg14_database.sql(_save_statement(user_id, case_id, 0, first_action, [first]))
def durable_counts() -> dict[str, int]:
return json.loads(pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'version', rectification.turn_version,
'turns', (select pg_catalog.count(*) from public.birth_time_rectification_turns turn where turn.case_id = rectification.id),
'evidence', (select pg_catalog.count(*) from public.birth_time_rectification_event_evidence evidence where evidence.case_id = rectification.id),
'receipts', (select pg_catalog.count(*) from public.birth_time_rectification_action_receipts receipt where receipt.case_id = rectification.id)
)::text
from public.birth_time_rectification_cases rectification
where rectification.id = '{case_id}'::uuid;
"""
))
before = durable_counts()
duplicate_replacements = [
{
"id": replacement_a,
"rawText": "更正:2020 年 11 月离职",
"domain": "career",
"eventSummary": "离职",
"dateValue": "2020-11",
"datePrecision": "month",
"extractionStatus": "corrected",
"scoreable": True,
"correctsEvidenceIds": [first_id.upper()],
},
{
"id": replacement_b,
"rawText": "更正:2021 年 2 月入职",
"domain": "career",
"eventSummary": "入职",
"dateValue": "2021-02",
"datePrecision": "month",
"extractionStatus": "corrected",
"scoreable": True,
"correctsEvidenceIds": [first_id],
},
]
assert pg14_database.rejects(_save_statement(
user_id,
case_id,
1,
rejected_action,
duplicate_replacements,
))
assert durable_counts() == before
def test_concurrent_corrections_of_one_tip_leave_exactly_one_winner(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000001421"
case_id = "00000000-0000-4000-8000-000000001422"
first_action = "00000000-0000-4000-8000-000000001423"
action_a = "00000000-0000-4000-8000-000000001424"
action_b = "00000000-0000-4000-8000-000000001425"
first_id = "00000000-0000-4000-8000-000000001431"
replacement_a = "00000000-0000-4000-8000-000000001432"
replacement_b = "00000000-0000-4000-8000-000000001433"
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, case_id)
_create_case(pg14_database, user_id, case_id, _valid_declared_birth_input())
_complete(pg14_database, user_id, case_id)
first = {
"id": first_id,
"rawText": "2019 年 7 月开始第一份工作",
"domain": "career",
"eventSummary": "开始第一份工作",
"dateValue": "2019-07",
"datePrecision": "month",
"extractionStatus": "clear",
"scoreable": True,
}
pg14_database.sql(_save_statement(user_id, case_id, 0, first_action, [first]))
statements = []
for action_id, evidence_id, date_value, summary in (
(action_a, replacement_a, "2020-11", "离职"),
(action_b, replacement_b, "2021-02", "入职"),
):
replacement = {
"id": evidence_id,
"rawText": f"更正:{date_value} {summary}",
"domain": "career",
"eventSummary": summary,
"dateValue": date_value,
"datePrecision": "month",
"extractionStatus": "corrected",
"scoreable": True,
"correctsEvidenceIds": [first_id],
}
statements.append(_save_statement(
user_id,
case_id,
1,
action_id,
[replacement],
))
processes = [subprocess.Popen(
pg14_database.command("-A", "-t", "-q", "-c", statement),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
) for statement in statements]
results = [process.communicate(timeout=20) for process in processes]
return_codes = [process.returncode for process in processes]
assert return_codes.count(0) == 1, results
assert sum(code != 0 for code in return_codes) == 1, results
durable = json.loads(pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'version', rectification.turn_version,
'turns', (select pg_catalog.count(*) from public.birth_time_rectification_turns turn where turn.case_id = rectification.id),
'evidence', (select pg_catalog.count(*) from public.birth_time_rectification_event_evidence evidence where evidence.case_id = rectification.id),
'winningReceipts', (select pg_catalog.count(*) from public.birth_time_rectification_action_receipts receipt where receipt.case_id = rectification.id and receipt.action_id in ('{action_a}'::uuid, '{action_b}'::uuid))
)::text
from public.birth_time_rectification_cases rectification
where rectification.id = '{case_id}'::uuid;
"""
))
assert durable == {
"version": 2,
"turns": 3,
"evidence": 2,
"winningReceipts": 1,
}
def test_save_rejects_cumulative_evidence_count_before_inserting(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000000981"
case_id = "00000000-0000-4000-8000-000000000982"
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, case_id)
_create_case(pg14_database, user_id, case_id, _valid_declared_birth_input())
_complete(pg14_database, user_id, case_id)
pg14_database.sql(
f"""
insert into public.birth_time_rectification_event_evidence (
id, case_id, source_turn_id, raw_text, domain, event_summary,
date_value, date_precision, extraction_status, scoreable
)
select pg_catalog.md5('evidence-count-' || series)::uuid,
'{case_id}'::uuid, turn.id, 'event', 'career', 'summary',
null, 'unknown', 'clear', false
from pg_catalog.generate_series(1, 2000) series
cross join public.birth_time_rectification_turns turn
where turn.case_id = '{case_id}'::uuid and turn.turn_version = 0;
"""
)
extra = {
"id": "00000000-0000-4000-8000-000000000983",
"rawText": "one more",
"domain": "career",
"eventSummary": "one more",
"dateValue": None,
"datePrecision": "unknown",
"extractionStatus": "clear",
"scoreable": False,
}
assert pg14_database.rejects(
_save_statement(
user_id,
case_id,
0,
"00000000-0000-4000-8000-000000000984",
[extra],
)
)
assert pg14_database.sql(
f"select count(*) from public.birth_time_rectification_event_evidence where case_id = '{case_id}'::uuid"
) == "2000"
assert pg14_database.sql(
f"select count(*) from public.birth_time_rectification_turns where case_id = '{case_id}'::uuid"
) == "1"
def test_save_rejects_cumulative_validation_receipt_count_before_inserting(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000000985"
case_id = "00000000-0000-4000-8000-000000000986"
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, case_id)
_create_case(pg14_database, user_id, case_id, _valid_declared_birth_input())
_complete(pg14_database, user_id, case_id)
base_turn = _valid_turn(case_id)
last_turn = {**base_turn, "turnVersion": 1999}
pg14_database.sql(
f"""
insert into public.birth_time_rectification_turns (
case_id, turn_version, narrative, candidate, technical_receipt,
evidence_request, evidence_recap, actions, output_validation_receipt
)
select '{case_id}'::uuid, series, 'seeded turn',
{_jsonb(base_turn['candidate'])}, {_jsonb(base_turn['technicalReceipt'])},
{_jsonb(base_turn['evidenceRequest'])}, '[]'::jsonb,
{_jsonb(base_turn['actions'])},
{_jsonb({'modelId': 'synthetic-model', 'schemaValidated': True})}
from pg_catalog.generate_series(1, 1999) series;
update public.birth_time_rectification_cases
set turn_version = 1999,
turn_state = {_jsonb(last_turn)},
journey_snapshot = {_jsonb(last_turn)}
where id = '{case_id}'::uuid;
"""
)
assert pg14_database.rejects(
_save_statement(
user_id,
case_id,
1999,
"00000000-0000-4000-8000-000000000987",
[],
)
)
assert pg14_database.sql(
f"select count(*) from public.birth_time_rectification_turns where case_id = '{case_id}'::uuid"
) == "2000"
def test_save_rejects_a_projected_load_envelope_over_four_mib(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000000988"
case_id = "00000000-0000-4000-8000-000000000989"
_create_user(pg14_database, user_id)
_reserve(pg14_database, user_id, case_id)
_create_case(pg14_database, user_id, case_id, _valid_declared_birth_input())
_complete(pg14_database, user_id, case_id)
pg14_database.sql(
f"""
insert into public.birth_time_rectification_event_evidence (
id, case_id, source_turn_id, raw_text, domain, event_summary,
date_value, date_precision, extraction_status, scoreable
)
select pg_catalog.md5('evidence-bytes-' || series)::uuid,
'{case_id}'::uuid, turn.id, pg_catalog.repeat('', 4000),
'career', pg_catalog.repeat('', 1000), null, 'unknown', 'clear', false
from pg_catalog.generate_series(1, 275) series
cross join public.birth_time_rectification_turns turn
where turn.case_id = '{case_id}'::uuid and turn.turn_version = 0;
"""
)
before_bytes = int(pg14_database.sql(
f"select pg_catalog.octet_length(public.load_conversational_rectification_case('{user_id}'::uuid, '{case_id}'::uuid)::text)"
))
assert 4_194_304 - 16_384 < before_bytes <= 4_194_304
extra = {
"id": "00000000-0000-4000-8000-000000000990",
"rawText": "" * 4_000,
"domain": "career",
"eventSummary": "" * 1_000,
"dateValue": "d" * 80,
"datePrecision": "range",
"extractionStatus": "corrected",
"scoreable": True,
}
assert pg14_database.rejects(
_save_statement(
user_id,
case_id,
0,
"00000000-0000-4000-8000-000000000991",
[extra],
)
)
assert pg14_database.sql(
f"select count(*) from public.birth_time_rectification_event_evidence where case_id = '{case_id}'::uuid"
) == "275"
def test_crash_then_legacy_import_refunds_orphan_without_an_unrelated_paid_start(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000000992"
lost_action = "00000000-0000-4000-8000-000000000993"
legacy_case_id = "00000000-0000-4000-8000-000000000994"
import_action = "00000000-0000-4000-8000-000000000995"
_create_user(pg14_database, user_id, credits=10)
_create_legacy_case(pg14_database, user_id, legacy_case_id)
assert _reserve(pg14_database, user_id, lost_action)["credits"] == 7
declared = {
"birthDate": "1990-01-01",
"reportedTime": "05:20",
"source": "legacy_import",
"birthTimeClue": None,
"uncertaintyBeforeMinutes": 0,
"uncertaintyAfterMinutes": 0,
"birthplace": {
"countryCode": "TW",
"provinceCode": "TPE",
"cityCode": "TPE-CITY",
"districtCode": "DAAN",
"latitude": 25.0268,
"longitude": 121.5434,
"timezoneOffset": 8,
},
}
statement = f"""
select public.import_legacy_conversational_rectification_case(
'{user_id}'::uuid, '{import_action}'::uuid, '{legacy_case_id}'::uuid,
0, '{import_action}'::uuid, 3, null,
{_jsonb(declared)}, '[]'::jsonb,
{_jsonb(_valid_turn(import_action))},
{_jsonb({'modelId': 'synthetic-model', 'schemaValidated': True})},
{_jsonb(_valid_private_candidate())}
)::text;
"""
imported = json.loads(pg14_database.sql(statement))
assert imported["billing_state"] == "migration_waived"
assert json.loads(pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'credits', profile.credits,
'orphanState', orphan.state,
'importState', imported.state,
'importBalance', imported.balance_after,
'reserves', pg_catalog.count(*) filter (where tx.transaction_type = 'reserve'),
'refunds', pg_catalog.count(*) filter (where tx.transaction_type = 'refund'),
'recoveryReceipts', (
select pg_catalog.count(*)
from public.birth_time_rectification_action_receipts receipt
where receipt.user_id = profile.id and receipt.action_kind = 'recover_fee'
)
)::text
from public.profiles profile
join public.birth_time_rectification_billing orphan on orphan.case_id = '{lost_action}'::uuid
join public.birth_time_rectification_billing imported on imported.case_id = '{import_action}'::uuid
left join public.credit_transactions tx on tx.user_id = profile.id
where profile.id = '{user_id}'::uuid
group by profile.id, profile.credits, orphan.state, imported.state, imported.balance_after;
"""
)) == {
"credits": 10,
"orphanState": "released",
"importState": "migration_waived",
"importBalance": 10,
"reserves": 1,
"refunds": 1,
"recoveryReceipts": 1,
}
assert json.loads(pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'kind', receipt.request ->> 'kind',
'credits', (receipt.response ->> 'credits')::integer,
'transactionRequest', tx.request_id
)::text
from public.birth_time_rectification_action_receipts receipt
join public.credit_transactions tx
on tx.user_id = receipt.user_id and tx.transaction_type = 'refund'
where receipt.user_id = '{user_id}'::uuid and receipt.action_kind = 'recover_fee';
"""
)) == {
"kind": "recover_fee",
"credits": 10,
"transactionRequest": f"rectification:{lost_action}",
}
assert json.loads(pg14_database.sql(statement)) == imported
assert pg14_database.sql(
f"select count(*) from public.credit_transactions where user_id = '{user_id}'::uuid"
) == "2"
def test_concurrent_legacy_import_projects_events_once_and_keeps_old_row_read_only(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000002701"
legacy_case_id = "00000000-0000-4000-8000-000000002702"
action_a = "00000000-0000-4000-8000-000000002703"
action_b = "00000000-0000-4000-8000-000000002704"
drift_action = "00000000-0000-4000-8000-000000002709"
career_id = "00000000-0000-4000-8000-000000002705"
finance_id = "00000000-0000-4000-8000-000000002706"
_create_user(pg14_database, user_id, credits=10)
_create_legacy_case(pg14_database, user_id, legacy_case_id)
old_life_events = [
{"id": career_id, "domain": "career", "precision": "month", "date": "2021-07"},
{"id": finance_id, "domain": "finance", "precision": "year", "date": "2020"},
{"id": "00000000-0000-4000-8000-000000002707", "domain": "relationship", "precision": "month", "date": "2099-01"},
{"id": "00000000-0000-4000-8000-000000002708", "domain": "education", "precision": "year", "date": "1980"},
]
pg14_database.sql(
f"""
update public.birth_time_rectification_cases
set questionnaire = {_jsonb({'questions': [{'prompt': '哪一个时间段更符合?'}]})},
answers = {_jsonb({'generic-question': 'A'})},
life_events = {_jsonb(old_life_events)},
candidate_scan = {_jsonb({'genericRanges': ['2006-2011', '2011-2016']})},
candidate_start = '05:10',
candidate_end = '05:30'
where id = '{legacy_case_id}'::uuid;
"""
)
declared = {
"birthDate": "1990-01-01",
"reportedTime": "05:20",
"source": "legacy_import",
"birthTimeClue": None,
"uncertaintyBeforeMinutes": 0,
"uncertaintyAfterMinutes": 0,
"birthplace": {
"countryCode": "TW",
"provinceCode": "TPE",
"cityCode": "TPE-CITY",
"districtCode": "DAAN",
"latitude": 25.0268,
"longitude": 121.5434,
"timezoneOffset": 8,
},
}
evidence = [
{
"id": career_id,
"rawText": "旧校时记录中的事业事件(2021-07)",
"domain": "career",
"eventSummary": "旧校时记录中的事业事件",
"dateValue": "2021-07",
"datePrecision": "month",
"extractionStatus": "clear",
"scoreable": True,
"correctsEvidenceIds": [],
},
{
"id": finance_id,
"rawText": "旧校时记录中的其他事件(2020",
"domain": "other",
"eventSummary": "旧校时记录中的其他事件",
"dateValue": "2020",
"datePrecision": "year",
"extractionStatus": "clear",
"scoreable": True,
"correctsEvidenceIds": [],
},
]
def statement(action: str) -> str:
turn = {
**_valid_turn(action),
"evidenceRecap": [
{"id": item["id"], "summary": item["eventSummary"], "dateLabel": item["dateValue"]}
for item in evidence
],
}
return f"""
select public.import_legacy_conversational_rectification_case(
'{user_id}'::uuid, '{action}'::uuid, '{legacy_case_id}'::uuid,
0, '{action}'::uuid, 3, null,
{_jsonb(declared)}, {_jsonb(evidence)}, {_jsonb(turn)},
{_jsonb({'modelId': 'synthetic-model', 'schemaValidated': True})},
{_jsonb(_valid_private_candidate())}
)::text;
"""
drifted_declared = {**declared, "reportedTime": "06:40"}
drifted_turn = {
**_valid_turn(drift_action),
"evidenceRecap": [
{"id": item["id"], "summary": item["eventSummary"], "dateLabel": item["dateValue"]}
for item in evidence
],
}
assert pg14_database.rejects(
f"""
select public.import_legacy_conversational_rectification_case(
'{user_id}'::uuid, '{drift_action}'::uuid, '{legacy_case_id}'::uuid,
0, '{drift_action}'::uuid, 3, null,
{_jsonb(drifted_declared)}, {_jsonb(evidence)}, {_jsonb(drifted_turn)},
{_jsonb({'modelId': 'synthetic-model', 'schemaValidated': True})},
{_jsonb(_valid_private_candidate())}
)::text;
"""
)
assert pg14_database.sql(
f"select count(*) from public.birth_time_rectification_cases where imported_from_case_id = '{legacy_case_id}'::uuid"
) == "0"
processes = [subprocess.Popen(
pg14_database.command("-A", "-t", "-q", "-c", statement(action)),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
) for action in (action_a, action_b)]
results = [process.communicate(timeout=20) for process in processes]
return_codes = [process.returncode for process in processes]
assert return_codes.count(0) == 1, results
assert sum(code != 0 for code in return_codes) == 1, results
durable = json.loads(pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'credits', profile.credits,
'activeTime', pg_catalog.to_char(profile.active_birth_time, 'HH24:MI'),
'importCount', (select pg_catalog.count(*) from public.birth_time_rectification_cases imported where imported.imported_from_case_id = '{legacy_case_id}'::uuid),
'billingStates', (select pg_catalog.jsonb_agg(billing.state) from public.birth_time_rectification_billing billing join public.birth_time_rectification_cases imported on imported.id = billing.case_id where imported.imported_from_case_id = '{legacy_case_id}'::uuid),
'eventIds', (select pg_catalog.jsonb_agg(event.id order by event.created_at) from public.birth_time_rectification_event_evidence event join public.birth_time_rectification_cases imported on imported.id = event.case_id where imported.imported_from_case_id = '{legacy_case_id}'::uuid),
'importedGenericState', (select pg_catalog.jsonb_build_object('questionnaire', imported.questionnaire, 'answers', imported.answers, 'lifeEvents', imported.life_events, 'candidateScan', imported.candidate_scan, 'baseline', pg_catalog.to_char(imported.baseline_active_time, 'HH24:MI')) from public.birth_time_rectification_cases imported where imported.imported_from_case_id = '{legacy_case_id}'::uuid),
'legacyGenericState', (select pg_catalog.jsonb_build_object('questionnaire', legacy.questionnaire, 'answers', legacy.answers, 'candidateScan', legacy.candidate_scan) from public.birth_time_rectification_cases legacy where legacy.id = '{legacy_case_id}'::uuid)
)::text
from public.profiles profile where profile.id = '{user_id}'::uuid;
"""
))
assert durable == {
"credits": 10,
"activeTime": "04:58",
"importCount": 1,
"billingStates": ["migration_waived"],
"eventIds": [career_id, finance_id],
"importedGenericState": {
"questionnaire": {},
"answers": {},
"lifeEvents": [],
"candidateScan": {},
"baseline": "04:58",
},
"legacyGenericState": {
"questionnaire": {"questions": [{"prompt": "哪一个时间段更符合?"}]},
"answers": {"generic-question": "A"},
"candidateScan": {"genericRanges": ["2006-2011", "2011-2016"]},
},
}
assert pg14_database.rejects(
f"update public.birth_time_rectification_cases set answers = '{{}}'::jsonb where id = '{legacy_case_id}'::uuid"
)
def test_legacy_import_pointer_cas_drift_rolls_back_every_import_artifact(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000002721"
legacy_case_id = "00000000-0000-4000-8000-000000002722"
action_id = "00000000-0000-4000-8000-000000002723"
_create_user(pg14_database, user_id, credits=10)
_create_legacy_case(pg14_database, user_id, legacy_case_id)
pg14_database.sql(
f"update public.profiles set rectification_case_id = null where id = '{user_id}'::uuid"
)
declared = {
"birthDate": "1990-01-01",
"reportedTime": "05:20",
"source": "legacy_import",
"birthTimeClue": None,
"uncertaintyBeforeMinutes": 0,
"uncertaintyAfterMinutes": 0,
"birthplace": {
"countryCode": "TW",
"provinceCode": "TPE",
"cityCode": "TPE-CITY",
"districtCode": "DAAN",
"latitude": 25.0268,
"longitude": 121.5434,
"timezoneOffset": 8,
},
}
statement = f"""
select public.import_legacy_conversational_rectification_case(
'{user_id}'::uuid, '{action_id}'::uuid, '{legacy_case_id}'::uuid,
0, '{action_id}'::uuid, 3, null,
{_jsonb(declared)}, '[]'::jsonb,
{_jsonb(_valid_turn(action_id))},
{_jsonb({'modelId': 'synthetic-model', 'schemaValidated': True})},
{_jsonb(_valid_private_candidate())}
)::text;
"""
rejected = subprocess.run(
pg14_database.command("-A", "-t", "-q", "-c", statement),
check=False,
capture_output=True,
text=True,
)
assert rejected.returncode != 0
assert "conversational_action_conflict" in rejected.stderr
assert json.loads(pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'caseCount', (select pg_catalog.count(*) from public.birth_time_rectification_cases where id = '{action_id}'::uuid),
'evidenceCount', (select pg_catalog.count(*) from public.birth_time_rectification_event_evidence where case_id = '{action_id}'::uuid),
'billingCount', (select pg_catalog.count(*) from public.birth_time_rectification_billing where case_id = '{action_id}'::uuid),
'receiptCount', (select pg_catalog.count(*) from public.birth_time_rectification_action_receipts where case_id = '{action_id}'::uuid),
'profilePointer', (select rectification_case_id from public.profiles where id = '{user_id}'::uuid)
)::text;
"""
)) == {
"caseCount": 0,
"evidenceCount": 0,
"billingCount": 0,
"receiptCount": 0,
"profilePointer": None,
}
def test_import_abandon_then_paid_revision_keeps_active_time_and_charges_normally(
pg14_database: PgDatabase,
) -> None:
user_id = "00000000-0000-4000-8000-000000002731"
legacy_case_id = "00000000-0000-4000-8000-000000002732"
import_action = "00000000-0000-4000-8000-000000002733"
abandon_action = "00000000-0000-4000-8000-000000002734"
paid_action = "00000000-0000-4000-8000-000000002735"
_create_user(pg14_database, user_id, credits=10)
_create_legacy_case(pg14_database, user_id, legacy_case_id)
declared = {
"birthDate": "1990-01-01",
"reportedTime": "05:20",
"source": "legacy_import",
"birthTimeClue": None,
"uncertaintyBeforeMinutes": 0,
"uncertaintyAfterMinutes": 0,
"birthplace": {
"countryCode": "TW",
"provinceCode": "TPE",
"cityCode": "TPE-CITY",
"districtCode": "DAAN",
"latitude": 25.0268,
"longitude": 121.5434,
"timezoneOffset": 8,
},
}
import_statement = f"""
select public.import_legacy_conversational_rectification_case(
'{user_id}'::uuid, '{import_action}'::uuid, '{legacy_case_id}'::uuid,
0, '{import_action}'::uuid, 3, null,
{_jsonb(declared)}, '[]'::jsonb,
{_jsonb(_valid_turn(import_action))},
{_jsonb({'modelId': 'synthetic-model', 'schemaValidated': True})},
{_jsonb(_valid_private_candidate())}
)::text;
"""
imported = json.loads(pg14_database.sql(import_statement))
assert imported["billing_state"] == "migration_waived"
assert json.loads(pg14_database.sql(import_statement)) == imported
assert pg14_database.sql(
f"select rectification_case_id::text from public.profiles where id = '{user_id}'::uuid"
) == import_action
abandoned_turn = {
**_valid_turn(import_action),
"status": "abandoned",
"turnVersion": 1,
"actions": [],
}
abandoned = json.loads(pg14_database.sql(
f"""
select public.abandon_conversational_rectification_case(
'{user_id}'::uuid, '{import_action}'::uuid, 0,
'{abandon_action}'::uuid, {_jsonb(abandoned_turn)},
{_jsonb({'modelId': 'deterministic-transition-v1', 'schemaValidated': True})},
null
)::text;
"""
))
assert abandoned["status"] == "abandoned"
pointed = json.loads(pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'pointer', profile.rectification_case_id,
'protocol', pointed.journey_protocol,
'status', pointed.status,
'activeTime', pg_catalog.to_char(profile.active_birth_time, 'HH24:MI')
)::text
from public.profiles profile
join public.birth_time_rectification_cases pointed
on pointed.id = profile.rectification_case_id
where profile.id = '{user_id}'::uuid;
"""
))
assert pointed == {
"pointer": import_action,
"protocol": "conversational-evidence-v3",
"status": "abandoned",
"activeTime": "04:58",
}
assert _reserve(pg14_database, user_id, paid_action, price=3)["credits"] == 7
_create_case(
pg14_database,
user_id,
paid_action,
_valid_declared_birth_input(),
revision_of_case_id=import_action,
)
completed = _complete(pg14_database, user_id, paid_action)
assert completed["billing_state"] == "charged"
assert json.loads(pg14_database.sql(
f"""
select pg_catalog.jsonb_build_object(
'credits', profile.credits,
'activeTime', pg_catalog.to_char(profile.active_birth_time, 'HH24:MI'),
'profilePointer', profile.rectification_case_id,
'billingState', billing.state,
'revisionOf', paid.revision_of_case_id,
'importedFrom', paid.imported_from_case_id,
'baseline', pg_catalog.to_char(paid.baseline_active_time, 'HH24:MI')
)::text
from public.profiles profile
join public.birth_time_rectification_cases paid on paid.id = '{paid_action}'::uuid
join public.birth_time_rectification_billing billing on billing.case_id = paid.id
where profile.id = '{user_id}'::uuid;
"""
)) == {
"credits": 7,
"activeTime": "04:58",
"profilePointer": import_action,
"billingState": "charged",
"revisionOf": import_action,
"importedFrom": None,
"baseline": "04:58",
}